diff --git a/cfar-report/Code/main.cc b/cfar-report/Code/main.cc deleted file mode 100644 index 23d2950c2af088ec3397cbe19f01ef22ab04a8eb..0000000000000000000000000000000000000000 --- a/cfar-report/Code/main.cc +++ /dev/null @@ -1,212 +0,0 @@ -/*************************************************************************** - *cr - *cr (C) Copyright 2010 The Board of Trustees of the - *cr University of Illinois - *cr All Rights Reserved - *cr - ***************************************************************************/ - -/* - * Main entry of dense matrix-matrix multiplication kernel - */ - -#include <stdio.h> -#include <math.h> -#include <stdlib.h> -#include <string.h> -#include <sys/time.h> -#include <malloc.h> -#include <vector> -#include <iostream> -#include <cassert> -#include <CL/cl.h> -#include <parboil.h> - -// I/O routines -extern bool readColMajorMatrixFile(const char *fn, int &nr_row, int &nr_col, std::vector<float>&v); -extern bool writeColMajorMatrixFile(const char *fn, int, int, std::vector<float>&); -extern char* readFile(const char*); - -// Parameters of tile sizes -#define TILE_SZ 16 - -#define CHECK_ERROR(errorMessage) \ - if(clStatus != CL_SUCCESS) \ - { \ - std::cout<< errorMessage <<": "<< clStatus <<" Error!\n"; \ - std::cout<<"Line: "<<__LINE__<<"\n"; \ - exit(1); \ - } - -void basicSgemm( int m, int n, cl_mem A, cl_mem B, cl_mem C, cl_kernel clKernel, cl_command_queue clCommandQueue ) -{ - // In this code we assume the matrix sizes are multiple of tile size - if ((m%TILE_SZ) || (n%TILE_SZ)) { - std::cerr << "unsupported size of matrix. m should be multiple of " << TILE_SZ - << "; n should be multiple of " << TILE_SZ << std::endl; - } - -//#ifdef ROWM - //size_t db = m; - //size_t dg = (m*n); -//#else - //size_t db = n; - //size_t dg = (m*n); -//#endif -#ifdef ROWM - size_t dg = m; -#else - size_t dg = n; -#endif - cl_int clStatus; - //std::cout << "Block dim = " << db << ", Group dim = " << dg/db << "\n"; - clStatus = clSetKernelArg(clKernel,0,sizeof(cl_mem),(void*)&A); - clStatus = clSetKernelArg(clKernel,1,sizeof(cl_mem),(void*)&B); - clStatus = clSetKernelArg(clKernel,2,sizeof(cl_mem),(void*)&C); - clStatus = clSetKernelArg(clKernel,3,sizeof(int),(void*)&m); - clStatus = clSetKernelArg(clKernel,4,sizeof(int),(void*)&n); - CHECK_ERROR("clSetKernelArg") - - //clStatus = clEnqueueNDRangeKernel(clCommandQueue,clKernel,1,NULL,&dg,&db,0,NULL,NULL); - clStatus = clEnqueueNDRangeKernel(clCommandQueue,clKernel,1,NULL,&dg,NULL,0,NULL,NULL); - CHECK_ERROR("clEnqueueNDRangeKernel") - - clStatus = clFinish(clCommandQueue); - CHECK_ERROR("clFinish") -} - -int main (int argc, char *argv[]) { - - struct pb_Parameters *params; - struct pb_TimerSet timers; - - size_t A_sz, B_sz, C_sz; - int matArow, matAcol; - int matBrow, matBcol; - std::vector<float> matA, matB; - - - /* Read command line. Expect 3 inputs: A, B and B^T - in column-major layout*/ - params = pb_ReadParameters(&argc, argv); - if ((params->inpFiles[0] == NULL) - || (params->inpFiles[1] == NULL) - || (params->inpFiles[2] != NULL)) - { - fprintf(stderr, "Expecting three input filenames\n"); - exit(-1); - } - - /* Read in data */ - // load A - readColMajorMatrixFile(params->inpFiles[0], - matArow, matAcol, matA); - // load B^T - readColMajorMatrixFile(params->inpFiles[1], - matBrow, matBcol, matB); - - assert(matArow == matBrow && matAcol == matBcol && "Dimensions of two input matrices should match"); - pb_InitializeTimerSet(&timers); - - pb_SwitchToTimer(&timers, visc_TimerID_SETUP); - cl_int clStatus; - cl_platform_id clPlatform; - clStatus = clGetPlatformIDs(1,&clPlatform,NULL); - CHECK_ERROR("clGetPlatformIDs") - - cl_context_properties clCps[3] = {CL_CONTEXT_PLATFORM,(cl_context_properties)clPlatform,0}; - cl_context clContext = clCreateContextFromType(clCps,CL_DEVICE_TYPE_GPU,NULL,NULL,&clStatus); - CHECK_ERROR("clCreateContextFromType") - - cl_device_id clDevice; - clStatus = clGetDeviceIDs(clPlatform,CL_DEVICE_TYPE_GPU,1,&clDevice,NULL); - CHECK_ERROR("clGetDeviceIDs") - - cl_command_queue clCommandQueue = clCreateCommandQueue(clContext,clDevice,CL_QUEUE_PROFILING_ENABLE,&clStatus); - CHECK_ERROR("clCreateCommandQueue") - - pb_SetOpenCL(&clContext, &clCommandQueue); - - // const char* clSource[] = {readFile("src/opencl_base/kernel_offline.nvptx.s")}; - // cl_program clProgram = clCreateProgramWithSource(clContext,1,clSource,NULL,&clStatus); - cl_kernel clKernel; - cl_program clProgram; - pb_CreateAndBuildKernelFromBinary("build/opencl_default/kernel_offline.nvptx.s", "matAdd", &clContext, &clDevice, &clProgram, &clKernel); - //cl_program clProgram = clCreateProgramWithSource(clContext,1,clSource,NULL,&clStatus); - //CHECK_ERROR("clCreateProgramWithSource") - - //char clOptions[50]; - //sprintf(clOptions,""); - - //clStatus = clBuildProgram(clProgram,1,&clDevice,clOptions,NULL,NULL); - //CHECK_ERROR("clBuildProgram") - - //cl_kernel clKernel = clCreateKernel(clProgram,"mysgemmNT",&clStatus); - //CHECK_ERROR("clCreateKernel") - - pb_SwitchToTimer( &timers, pb_TimerID_COMPUTE ); - // copy A to device memory - A_sz = matArow*matAcol*sizeof(float); - B_sz = matBrow*matBcol*sizeof(float); - - // allocate space for C - C_sz = matArow*matBcol*sizeof(float); - - // OpenCL memory allocation - std::vector<float> matC(matArow*matBcol); - - pb_SwitchToTimer( &timers, pb_TimerID_COPY ); - cl_mem dA = clCreateBuffer(clContext,CL_MEM_READ_ONLY,A_sz,NULL,&clStatus); - CHECK_ERROR("clCreateBuffer") - cl_mem dB = clCreateBuffer(clContext,CL_MEM_READ_ONLY,B_sz,NULL,&clStatus); - CHECK_ERROR("clCreateBuffer") - cl_mem dC = clCreateBuffer(clContext,CL_MEM_WRITE_ONLY,C_sz,NULL,&clStatus); - CHECK_ERROR("clCreateBuffer") - - // Copy A and B^T into device memory - clStatus = clEnqueueWriteBuffer(clCommandQueue,dA,CL_FALSE,0,A_sz,&matA.front(),0,NULL,NULL); - CHECK_ERROR("clEnqueueWriteBuffer") - clStatus = clEnqueueWriteBuffer(clCommandQueue,dB,CL_FALSE,0,B_sz,&matB.front(),0,NULL,NULL); - CHECK_ERROR("clEnqueueWriteBuffer") - - clStatus = clEnqueueWriteBuffer(clCommandQueue,dC,CL_TRUE,0,C_sz,&matC.front(),0,NULL,NULL); - CHECK_ERROR("clEnqueueWriteBuffer") - - pb_SwitchToTimer( &timers, pb_TimerID_KERNEL ); - - // Use standard sgemm interface - basicSgemm(matArow, matAcol, dA, dB, dC, clKernel, clCommandQueue); - - pb_SwitchToTimer( &timers, pb_TimerID_COPY ); - clEnqueueReadBuffer(clCommandQueue,dC,CL_TRUE,0,C_sz,&matC.front(),0,NULL,NULL); - - pb_SwitchToTimer( &timers, visc_TimerID_SETUP); - clStatus = clReleaseKernel(clKernel); - clStatus = clReleaseProgram(clProgram); - clStatus = clReleaseMemObject(dA); - clStatus = clReleaseMemObject(dB); - clStatus = clReleaseMemObject(dC); - clStatus = clReleaseCommandQueue(clCommandQueue); - clStatus = clReleaseContext(clContext); - - pb_SwitchToTimer(&timers, pb_TimerID_NONE); - pb_PrintTimerSet(&timers); - - if (params->outFile) { - - /* Write C to file */ - //pb_SwitchToTimer(&timers, pb_TimerID_IO); - writeColMajorMatrixFile(params->outFile, - matArow, matBcol, matC); - } - - - double GPUtime = pb_GetElapsedTime(&(timers.timers[pb_TimerID_KERNEL])); - std::cout<< "GFLOPs = " << 2.* matArow * matBcol * matAcol/GPUtime/1e9 << std::endl; - pb_FreeParameters(params); - - //free((void*)clSource[0]); - - - return 0; -} diff --git a/cfar-report/Code/vecAddC.cl b/cfar-report/Code/vecAddC.cl deleted file mode 100644 index e25a02240f123dce71b1f395f25c6049b0a5d787..0000000000000000000000000000000000000000 --- a/cfar-report/Code/vecAddC.cl +++ /dev/null @@ -1,20 +0,0 @@ -__kernel void matAdd( __global float *A, __global float *B, __global float* C, int m, int n ) { - int j = get_global_id(0); - for(int i=0; i < m; i++) - C[i*n+j] = A[i*n+j] + B[i*n+j]; -} - -void basicSgemm( int m, int n, cl_mem A, cl_mem B, cl_mem C, cl_kernel clKernel, cl_command_queue clCommandQueue ) -{ - size_t global_work_group = n; - - clSetKernelArg(clKernel,0,sizeof(cl_mem),(void*)&A); - clSetKernelArg(clKernel,1,sizeof(cl_mem),(void*)&B); - clSetKernelArg(clKernel,2,sizeof(cl_mem),(void*)&C); - clSetKernelArg(clKernel,3,sizeof(int),(void*)&m); - clSetKernelArg(clKernel,4,sizeof(int),(void*)&n); - - clEnqueueNDRangeKernel(clCommandQueue, clKernel, 1, NULL, &global_work_group, NULL, 0, NULL, NULL); - - clFinish(clCommandQueue); -} diff --git a/cfar-report/Code/vecAddR.cl b/cfar-report/Code/vecAddR.cl deleted file mode 100644 index dbf1629da4f9e3bcc65431c212f71b23402da50e..0000000000000000000000000000000000000000 --- a/cfar-report/Code/vecAddR.cl +++ /dev/null @@ -1,21 +0,0 @@ -__kernel void matAdd( __global float *A, __global float *B, __global float* C, int m, int n ) { - int i = get_global_id(0); - for(int j=0; j < n; j++) - C[i*n+j] = A[i*n+j] + B[i*n+j]; -} - -void basicSgemm( int m, int n, cl_mem A, cl_mem B, cl_mem C, cl_kernel clKernel, cl_command_queue clCommandQueue ) -{ - size_t global_work_group = m; - - clSetKernelArg(clKernel,0,sizeof(cl_mem),(void*)&A); - clSetKernelArg(clKernel,1,sizeof(cl_mem),(void*)&B); - clSetKernelArg(clKernel,2,sizeof(cl_mem),(void*)&C); - clSetKernelArg(clKernel,3,sizeof(int),(void*)&m); - clSetKernelArg(clKernel,4,sizeof(int),(void*)&n); - - clEnqueueNDRangeKernel(clCommandQueue, clKernel, 1, NULL, - &global_work_group, NULL, 0, NULL, NULL); - - clFinish(clCommandQueue); -} diff --git a/cfar-report/Figures/RAR PGM v01.docx b/cfar-report/Figures/RAR PGM v01.docx deleted file mode 100644 index 070e58c339711274b061ad365ff4fb524c493a9a..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/RAR PGM v01.docx and /dev/null differ diff --git a/cfar-report/Figures/RARpic.jpg b/cfar-report/Figures/RARpic.jpg deleted file mode 100644 index ec90003a4261ddb27b34a5a3d61b44ea8cb42ab2..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/RARpic.jpg and /dev/null differ diff --git a/cfar-report/Figures/RARpic.pptx b/cfar-report/Figures/RARpic.pptx deleted file mode 100644 index 47f5acc77a0151fcf6a82c89136a39e254eb2114..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/RARpic.pptx and /dev/null differ diff --git a/cfar-report/Figures/Results.pdf b/cfar-report/Figures/Results.pdf deleted file mode 100644 index fdb72073cc558821e9976583f90e9f927eab8618..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/Results.pdf and /dev/null differ diff --git a/cfar-report/Figures/compilationFlow.png b/cfar-report/Figures/compilationFlow.png deleted file mode 100644 index 9bb7aa339760a23ff8bb4da68225aa6b166e290d..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/compilationFlow.png and /dev/null differ diff --git a/cfar-report/Figures/fig-x1.pdf b/cfar-report/Figures/fig-x1.pdf deleted file mode 100644 index 7d992c0d592c7cf160073f0897e7748946df9725..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/fig-x1.pdf and /dev/null differ diff --git a/cfar-report/Figures/fig-x2.pdf b/cfar-report/Figures/fig-x2.pdf deleted file mode 100644 index 7be82ea8629e811d97f0b71deb0e526c71ead7a0..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/fig-x2.pdf and /dev/null differ diff --git a/cfar-report/Figures/fig-x3.pdf b/cfar-report/Figures/fig-x3.pdf deleted file mode 100644 index 4a14aacc13896a9b45a02fa9cbb698b8bdd73d42..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/fig-x3.pdf and /dev/null differ diff --git a/cfar-report/Figures/gpu-fpga-cmp.eps b/cfar-report/Figures/gpu-fpga-cmp.eps deleted file mode 100644 index a6e42eab987c4eacc14018ec1b19c314fd390eb3..0000000000000000000000000000000000000000 --- a/cfar-report/Figures/gpu-fpga-cmp.eps +++ /dev/null @@ -1,1023 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%BoundingBox: 0 0 863 294 -%%Title: (pub/gpu-fpga-cmp.eps) -%%Creator: jpeg2eps.ps 1.20 http://rses.anu.edu.au/~andy/jpeg2eps/ -%%LanguageLevel: 2 -%%DocumentData: Clean7Bit -%%EndComments -863 294 scale -/DeviceRGB setcolorspace -<< % pub/gpu-fpga-cmp.eps - /ImageType 1 % 1: opaque, 4: make MaskColor color ranges transparent - /Decode [ 0 1 0 1 0 1 ] % change these values to alter brightness/contrast of each color -% REMOVE % AT START OF NEXT LINE IF /ImageType 4 -% /MaskColor [ 245 255 245 255 245 255 ] % don't paint these color ranges if /ImageType 4 - /Width 863 - /Height 294 - /ImageMatrix [ 863 0 0 -294 0 294 ] - /BitsPerComponent 8 - /MultipleDataSources false - /Interpolate false - /DataSource currentfile - /ASCII85Decode filter - /DCTDecode filter ->> -image -s4IA0!"_al8O`[\!<E1.!+5d,s4[N@!!30%!W`<'!WiE)!WiE*"Tni/!s8`1"9Sf4"pYA<"pYA= -#n%%F#RUhB#7:nI$4@7N$k*@I%M'!W%LW[R%0,&^6NI5i!WrN,"p4r3$j[(D$k*OQ$k*OQ$k*OQ -$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k30O!"fJ;-3ITW!?qLF&HMtG!WU(< -*rl9A"T\W)!<E3$z!!!!"!WrQ/"pYD?$4HmP!4<@<!W`B*!X&T/"U"r.!!.KK!WrE*&Hrdj0gQ!W -;.0\RE>10ZOeE%*6F"?A;UOtZ1LbBV#mqFa(`=5<-7:2j.Ps"@2`NfY6UX@47n?3D;cHat='/U/ -@q9._B4u!oF*)PJGBeCZK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBF -daQ^rf%8R-g>V&OjQ5OekiqC&o(2MHp@n@XqZ"J6*ru?D!<E3%!<E3%!<<*"!!!!"!WrQ/"pYD? -$4HmP!4<C=!W`?*"9Sc3"U"r.!<RHF!<N?8"9fr'"qj4!#@VTc+u4]T'LIqUZ,$_k1K*]W@WKj' -(*k`q-1Mcg)&ahL-n-W'2E*TU3^Z;(7Rp!@8lJ\h<``C+>%;)SAnPdkC3+K>G'A1VH@gd&KnbA= -M2II[Pa.Q$R$jD;USO``Vl6SpZEppG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!<j5f=akNM0qo(2MH -p@n@XqZ#7L$j-M1!YGMH!'^J^r1]&Ta(%@<'UuVY1pjClKbRBX!fAD!!fAD!!fAD!!fAD!!fAD! -!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD]1Q:oj"VbhqU6BdDHI*HDMD?Rb -,9rX0.tn[gJbI&7"1V2s'ED!!'ED!!'ED!!'ED!!'ED!!'ED!!'ED!!'ED!!)<?_t-u8sB6Qd5l -;a?EVh__J;d7s3:H5oa-"`rCb%\f(f0Z`KO5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj! -5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qs$4JoGGR -dW!5L@Xo$#"CrQ&j/3mKar_Tfi23(brKi"NbPqPCHq)`[%hEnW?O>HP3`M5U>+OfR2;FNSa!d4H -M;aHpOf$F*c/s*<&RNTV1&faq#lUqh/$*NX!n=AqN>G%5Rn8e690$iiC"=,5I>KGSi!GKUW8nq/ -@$M1"P5_QL.=87`rr?,%r/XLFJD&7T.&V'='N%+8QcDm\\mOh&n?Z-bI^<sk?"pl?Q01SI)EdEL -9T^sSm&GMK!BFT.HCcWKrYMs!oHSVXrr<5MrrDTCi;Wf8VViQKLW9--+6Y]iOFPaHX57fDF$L]] -r%Dd!kXP+:rX5M$!9:G9_Y0JuKPqr^i4;/P4'h7bXVa7/!Ps9&p7)&7D]aJe\j-0U8,P#S^Z\/W -p\kPqrrD)ehVe7XKBkcB(]5q#^Z\/Wp\kPqrrD)dJ&:oKre,23J)In&r]=ER&$6[4ZiS!m_Y0Ju -KPqr^i4;/P4%K3%Btrk$nb<"jU]1>S[GKj<d=^aM*#JN+Btrk$nb<"jU]1>S["#sdS,S(Z++N4[ -5Q3`MmLQE:5-t@,J&:oKre,23J)In&r]<XJ0582b7e-6P$`!_%j0db%qU'r]5TCU<0582b7e-6P -$`!_%j0X<Qp7)&7D]aJe\j-0U?1&6*(d>;-_10>qS,S(Z++N4[5Q3`7r%Dd!kXP+:rX5M$!9:KD -i;1iRlTcF+r%Dd!kXP+:rX5M$!9:G9_Y0JuKPqr^i4;/P4'h7bXVa7/!Ps9&p7)&7D]aJe\j-0U -8,P#S^Z\/Wp\kPqrrD)ehVe7XKBkcB(]5q#^Z\/Wp\kPqrrD)dJ&:oKre,23J)In&r]=ER&$6[4 -ZiS!m_Y0JuKPqr^i4;/P4%K3%Btrk$nb<"jU]1>S[GKj<d=^aM)4hK21O,ri(QG<WH;Q6:p3ZS# -.E4H7%!XqGXX58V\Y[./CWV'D?]Nj\m*khbGal_,%DJ<SWp$>/abp'VP26&j\7'6sNf7q_0c4?? -#Eb*k_r9cbXD$)>9dT)\N9\oP3'#/nWTtLR,[bUa>Rj=b(&='_-iOK2nO);c`ubK[B2Hsf"U0sC -ouepBjmDDPenF*8FG\-U\R66Y,SHn`F>tJXp0Whd2#XYnCp/`2$p5QjSQFcOKY@`2VV>m4erclp -pKH.OWSZC!Tc?dV"jOD4Z!6SM>2>c?PjN/&B7G)?P@CioMOl7Bg:iU4a#4GM9,.[m>:hbAVq0uq -=S:g2FlWTh#6u7.^'ON(qdQu5!:2T5Hc2KXrMr$ui[o*-V;)unfDH(AKrSEmqI*L$noYcj)lO@> -f'1ARBNUoVYsUoA5NB6?h=3hXiRc,Dn9akde\3F+0B'Ztm6"IIHq^cmHp)jo20QKSUsS7q$P2Ui -\Cq"JOUMiJ#llfL?k8S,jO@\jhj)L!pZ]HMDsPLCB[/@eEbW[:1Q5D\h]2P'j1@MWHnDVO4u@XP -d4_9FmBlh%<.dol-+`U\Ef@Q==g[@H2]E59ZuCT0Z47(&M2\!`P"EV!DrfXM^W`(jp@ClTC\/C" -.%np8U5Aq!U5Aq!U5Aq!U5Aq!U5Y&jJ@JH]rrC"+MZ+If.H$1Q`836=#*%S[%V\Ms?>=egjE>^4 -X,m@-,U$57J22Bq%^fe6pjo/aQW0Qs:Xs86mqnbQk#`gu>#^Aj/JNn)cGoqPDMN"KODldp#0i#S -"+uWD1obRPN)0OLI-7\:FZ&dZPL>WskMQ%`kNsSUn(ABJ/+LBmT81!"KQ[6#_:j"BS]/@"Df./o -UUH1@B9?43fqsiB\;7d@JT'DJ#(8#B58gj.!/;R#J)Ms0Q<>(Wi\B.jVYc;KWHP@DYTZ4fZH2<e -\`C9]%Vs0Ni3"+(nX%6;pa<8a%g)M._-4m>Hro@A%d--_Z*:pGZPN!l9VQg.]XWPJ&s*.JbkY\# -@?NJF;>WH@hmD9mIN.V)*\@)an3b,8't9?7V.o8SgY7O%,`G,pi*9IN<m;g2E/t+jZcG'G`!4q; -h7'pr=,$N9T%<j9T=u3C!5VQ^./Za:OZWg,)>lGOcO"tepl"Z@;YY5L\q8s=d<mPuY4(Ba>cM$u -pFHs#bP<K=A<oY,U6)eJ5I79TpYmj[>P<(3<I^]URRDW<4sHfNh-8l1oW9=cdcKE!eJJNo)V*P( ->H[JD]^ZHc7#noUr"IEM(%EB]^Y"b0-\T2gBKCpf;6>)@`#?90%IjnBL[XVKiKI3P\@6Pl`>uLP -m9V63>Y24](^4"U'Far8IpcV!CS.qfM_mU:dsPl5hY=!?f"?4blNo01lui7>coS@c/H4)F5V2<? -UIPa;*)eUbAD?:\;e\2AmQZk1n^X#O[s9PVV.JN.[J3lLmW<B3'#:u(%OpAV3h#Q!pa4%tIiJ:d -rJl7UiEqBR`&p>`^$L?u0)jEYRn7NFQI<^paH5024>>kg?eo-^:^Qh;*-`,fpm'fbXV5!hmBoY8 -pLg+6E2B=nA#lb&ZRV+*"VZbkBfhRqc!oUD\K@@piUj=,rY^10rWUjP!8sas&UYmGiI*%k%I&<_ -L??r\BZYk_6CMmHUHB0#OT,<rNI<8U!":UOMm*%/rr<N1I3:c7;Gla!LT$teobHQf!:[lJ#f#Sq -pil`8+7Z-*(h;M@r=f22%fZOdKDm\.lPkVXUN#l@jSo5L_]K0!kb%Worqml.U])*?i>;G+rr<Q/ -!8iG.1]cn]LT$teobHQf!:[lJ#f#Sqpil`8+7Z-*(h;M@r=f22%fZOdKDm\.lPkVXUN#l@jSo5L -_]K0!kb%Worqml.U])*?i>;G+rr<Q/!8iG.1]cn]LT$teobHQf!:[lJ#f#Sqpil`8+7Z-*(h;M@ -r=f22%fZOdKDm\.lPkVXUN#l@jSo5L_]K0!kb%Worqml.U])*?i>;G+rr<Q/!8iG.1]cn]LT$te -obHQf!:[lJ#f#Sqpil`8+7Z-*(h;M@r=f22%fZOdKDm\.lPkVXUN#l@jSo5L_]K0!kb%Worqml. -U])*?i>;G+rr<Q/!8iG.1]cn]LT$teobHQf!:[lJ#f#Sqpil`8+7Z$'_`nE^r6tZG%\NW+J&["% -@rV)TDB>ObTDf[?i=Gl#rr<P$qd=onJbok'+s[(Yrr@gErNJNH8ME;;E:jo_*hp<>rYT/((]>$I -!"T#/hh1nbJ&;\B,6%Y;J)T;^n:/HF*jN5$MDl&C?;LS$$o.70re^XTLO\d/rr<s%iJ'N.J'gLM -n,<#Gj$4Zj\9a#k%oHY/rr<H^n;I:&rr@h(n%o#()F*284qW:l5Oe.?pcme(*jN5$MDl&C?;LS$ -$o.70re^XTLO\d/rr<s%iJ'N.J'gLMn,<#Gj$4Zj\9a#k%oHY/rr<H^n;I:&rr@h(n%o#()F*28 -4qW:l5Oe.?pcme(*jN5$MDl&C?;LS$$o.70re^XTLO\d/rr<s%iJ'N.J'gLMn,<#Gj$4Zj\9a#k -%oHY/rr<H^n;I:&rr@h(n%o#()F*284qW:l5Oe.?pcme(*jN5$MDl&C?;LS$$o.70re^XTLO\d/ -rr<s%iJ'N.J'gLMn,<#Gj$4Zj\9a#k%s)&Qrr<H^n;I:&rr@h(n%o#()F*284q[CI!-iU*a6j3t -c@A&c&3qJ6U7#p$g=rDoWi6nj:^-n%[6B*JCN@?*RWUHM$-3=7@V<Z0[MS<g-g][dH2&1Un[HL; -!!Ra!pfd0F)m)&#K$ML9=2)jSOf!P!iIP+uArb\J#Vb#rbE=-0+%6,/JnTV\f:TH8_LE?rYX'S] -L8FEOor!O,5rGCk:#at]&J@C.15/Q_ORXTc8!tC1Du<VVrnJU(LP((h+,^pr2Ri2a_`H)XI:[,4 -@IUko_`'X5X/bbN=`#@h=Y@$*!XsYuUHo9!7S=89rKb/MlX(UF&8D"?^$t@+rr<FFV^=3nCTVDj -,=MS_JIIOH2BR$3,EQ=$NB#$K5$+YKhX>qUCb"l@05oFbotTF23eB)Fdt\#GBrVI>KDd5bluU3n -&C@d]T>HIq\_t6l;fDIe*uk4[gQ2?#gK2'iK)Yhe9u#c1HuK#bDEmu)D-lm#"Vag!"Vag!"Vag! -"Vag!"Vag!"Vag!"Vag!"Vag!"Vai=aWh%J!*UhT+C<"GPWn&f1I,2K.1:^lI[ni=OdZ@172/Q! ->X.Tjn0:O'VEPQ,*XLA8FXp0:>4R(:Ca;R>'?Zn,QYCPa)/.M>WSjA'"EtQ5npRP&<0]JDOEP?o -50Xa#.E0;!l(9-s3<&u10mk\M?h"punM[#Cq!r4h%r+$!S\0._QAl9q%#Z;7$Z)W<AJr;h)<>u+ -rZqK[g>8Ct:MTn0)#b+llGqlPNVlqW>NoHB[FOmRf<cV3`GN+h9f9"r2R>!Z.dW'EG:3eV)'8r& -899<$SC,VJ33J3X@u83":DGf8Q*0"3*'P:3#e8<?8Y7&>5O_Ah);K\bh\80pVYj6Z`J9C91&.^B -UVrVf^'g6T4t.C#B\j[i&ZDJCUfp#N96Ds,P<4[(^A%/mp3MYjQi3756h&^JH@VN1a$>hXf!"^J -)c$n5`Ni)&j-!!&+./?_GpV4\/Gt^qi02M!Bm42-`GrMtBB6cu=W9gmY3UShHaCOP)?.k[!#*u& -SfMa+?PPC.)JFR1S6]iP\jqD17(^.#@Zi/$e7X-oQ+1C,h2!8_;]sjpXq5s>$n*"<+9:F^UNQXq -ih&+.!&0@0fQ@m_5W]TAL1h&&cXTDd(5bH:HC?c'V#bRLUu")s7e)]07De'3:%LgT!;"X/%Rt+> -KbRBL"Z<l_[-C#KT5%%=49PQi+n.h=j+"o")dAdB"m^Bd<haL(bp136(j(1$nZ?[OM'[-]],=;^ -<-&bC*[Nmho+)W3(SUaonE91Ci9uMP+#Rtk^C0CM:C(3M1W"SXd/6B\Y9pJcP1Fu\l`7QJmF7j< -=EYn/[0*`kJj;NKrr<39p_^ad^('>8=+:`4^+SW\0!?=sWH]V6W%HW>Z,[QQ3.kHk^s*kf%)F95 -NJntm33S<Ki9/&IL#3O8I8PFt>\O*MnE7^h!#AdP?3\b6br\n7daqH81-9gt\+<IK,MGi>q'"[P -h4gZ*L>&lXQ?'G$5Jf'L=*B@".V^G;IQRQ0RTK/H;<,bac:OoWq0d%9rLEd=Y4s7"%tZWF'3q$a -&a<I6Q(Fsp\3HU.*!h_A7gCZJF5Jk/W5,M_)bHjnAP/_f'\]tF`M@>2EQ'LdkAfO7;HmX<4,uQL -:.MDk!!!;fV0JX1'J&mfe:1o!fjD]_'C7gbX8G=\$JN2TjbBD+>1ieF"HAhIQ:]^@'(#_4Um>AT -D2kc>epL0dQ/_0i_E(?b+2RZB..J@d(RklJVlIk8Bf:dI);=6D4*u^Cmfc-N,\LW]6AKYS5$hb] ->1`%c!<hJ9S<(kMPQ7UAi:jF8X?YXC\,*SN/N-.K):)sc;c3=D0>d8<D*qJ\l&2Z2$f"A7;bM<f -A0?l-=k;B?E2Fq/W:'X"J&+G;IP^uKh[VbQTQkA>j2G@=/nD38r%fqW8%,t:Q/fV7gam7Wg=X@n -C%btcN%10Z&@eV1o___@i$gikb5D8>#1r"*oO8f=k;9QaE"thsT@0:CEP^e(:e/WW#_1qhT+sTW -=+gMQ7HmhFXaH?%M#RIphYnso*dfUGref.)lVPBI6/__V`[qmB*hnY3e5-07)i(AeE:jnF;+BO0 -.,6sS!#/;?HAXWl;*Y:!DB>O3_phK`72q#\UN#l?!)Z5El6tFN70"$i436e^\9a$,_k'9tEClrW -VtdNS7Q_;6o&o`;prh[s!"JqYSh[M!Hro<%5/uGm"BP6MSC#4l2UN2G<Ibr4Sd///jES_'BlO%a -34cKPe>/jMdbQk6d/(HgiEEec.TfkS'HCW-G-BFHC$L/Aq2:=i!N1R4OiTET[Jp49"674L4E'6; -J*\t1&,q>kWIM.d\U3<hfh]H9\s;C-p$K`!['SQ1d`Wg*?]rW)5DeW22[9&8LZ0:InFUD:%P%3i -5,iYs4cV5cpCWKqTo#gR1K'PkP&$h@I1KMUNPj7C\9a&2*;o:SUN#l?DB>O&$7O[m72q#\TE:!0 -%oGgTl6lY,NPj7C\9a#4.&1bS'Q+tdJ-m^[4[g<FW1X3L2\/bTiT_fkU5d(?;K!Et3Q1tM'EaJ[ -70"%Ne=7N-Wg:3!=a5!]\\HX4/SltSd)eGi`2aSKT^'bF5QH,!;L2S^2kiK-rMG#^plj^Xm;K#Y -G\?%8Qgba^h%%G16W;GjSN?5XSgKE0a-OG^njsg%:_;Z%7TlO2b:!?LXa\7((o@#6i(\A"nV3D# -'mqC29;*_jo_Wml[b"2l_X]l7-5.YF9(5A[+UjGr!cj3UqaBY?ZOcG?T\8Se'Aq`_O">D;IaMpP -\Tat.I?F&Od?e<=Ohoa@7gC6O-h_u<INH]%f%3Xk@/^r`&b,.JUt]*uI:?Cg'+*C>,/s+*e(K!/ -4m8cF(Da4S!"ZUT)S1Edgo)\&*7YQ5po@-Y?\`R-I9Q@%:=D&P>'m<<ga#]cUFaVb5QtL^J1sGe -B6^70aRhQN[=M^BgH[CRHdJ?P![8m&Z%&$^'atr>Bi'.U]b]_`m.9+c+1@6JYM(qT3o>]T1TP8q -Gb;m9a$-2jlad:qiVcd_AH)X2E%Na$JnKXj+_F+sOpDIe`Hn1cN:LcIhh=9'XScf0>A>5u[?1Z_ -H`Qpi4<rem$\VWc-.>b(]=>CoE#^_*H"9@)Ot1e1YgPQ[coX!DEE8:b:%/)^#Q2?XK\nRk(>j02 -DKnDD'[Z%:+n<)CoC`[LrrC+<[<p7CN/iY,:&b3FPPAM*OabTi2nulm:5_&a4Ng&JV:!HA"ZMb+ -8(p)CaDr,gS:F,CH@PiCYDqH3;Z%Y%mSn-(8>)a1kcZ!+!/5Xe]Dd[pKKnsjDuN;&rY=>1n+nJ^ -&H;aI;8;oNJ3ApMn^$u3IiH/dV>*FX!!u-p!9B#)nFP[ZrrALSi?.tCg]%8:-j/-NY8\Po4uXSZ -WI>HZ!5_IFq')1)(#R%"qC-k)rrBo5^\K((4cYEichLRk)o(U5pd>&]#tFppjGH1\?2SU?!2>h= -&,[^mrrA31"5)h@*<-"mGO`<EMI2$$n<@kj8>H/!ho>-].=Mj.!5_UJq'(>PNf*AQpfDqa^Z_Nh -6iR,m7fNJLMEg'*r,2N7U6jgLr$<<^!0S`4f]]LYrr@asn[ndX?\CZ5P]-OlU])"c`p`aQILuMZ -_GS)D,(Mh:MXf$f=+;1(kb\&Arr<?prrD,;5N,oGDZ9^2Qf/JQ,ocjaOsgFbkTdi7n^$u3IiH/d -V>*FX!!u-p!9B#)nF,C]r=m!PEW6#:UOVi'-74':c;b^Oj:'Z%_#FCdms+Y0+7P$[9On%%O8^cG -k*+c]`itJ-i`Cd=!9a>17eH]\YDW64i,feNoD.f0XU\-;m<ehflJ<BIrW=sB,O<k/q0=Q=l$dFH -p-36j!8sAS[V!#GB(ubP>/%JBBpr#T7\I2PV3uA,$u5["id&Z5?V!]]6-aQ.^GUN!NW'^`p:p*p -`R8uu`Hj1mm:4\/B8ZFR2pElK/+WrX-IIclc$b`S!"/&PGAi=e&cVjJ;8;oN]f`a)Wo9XLHaJ0= -(>u.M1MYQg$IOc4?*m,,d9\j5!"/2TGPr5j#_1e]hu&U,r%#OAht0hE+o_OqUOVi'G98ek(?(d) -Rc8g1^Q1EGm*G0F=7O#:CT-*(=uVTkL;l&sL\#/=("s[j:)ZPK/3!m6i9U;#dJQG.pgkW=7^$7' -C;JQ1eYSD7NKg'""PhWPELcW,@K-<2(&1M_+-&Rjmu)QFiGC^BRdR!&?Y-Y:UP$h^mpMF[Go9Fe -&W\2M(`_I72<?78PD8dSofI3J<,,n,;oCa`asp2&/$&""H&';@pal`g+,R`D1`m0/G^mbq?hfCQ -\'o3TT$l"p8LB^4<cYYPKa!3M$-,;W=&J!2paEi=LVIQl&:>hP^'":FnW/M(4f-p!Z<V*F4rK*t -lG@gXMCXLSo2pS;R3@hR\h&B/8d-\KiNLq`rX#.c]>5Sr(P-_2=2>D]V<HbZe*jIfrmn<'-5c/\ -GC1s\RgPtM5s0)rEF-]UA)Mil^M:OY/)Q<XNtU[V!$?<D%q#5kZ1-#@^S'>+X2CAgp[R))'AQ"M -p8\pn_CQ?g=7$GC]<d_@gN$@*<Eg2>9MB<ol"g92e+&H&PMk`&Q.4rW.W=2+e]BEA2*LEIhsaM? -rr<H%pVVFs[Jc_H46r@(M7bVtMIEiu?OoF[X:RK+gqbIFlHm#4%$rZC+pJNf"t#U$@B!c:!!P1R -D;r<a4ppg=K];MTNHHn1cZ]VL4>WdIi+n\Nfp>pQSh#SR4)Z:iP$'DJMC@8[[",aUnk[uc_4%jP -5PQ\J_S$IKnL)@aLQQ;"#M1feT+q&f_@:RaM6?$jA;8NZqn4oV:I+I(cMOoKNtc)M1TJ2CYPuMH -J&+'.CX7Z`'0[H32oV@CpfHFX#&:jYnI:5?-.[4p+g/#8;*)S1P<Iuj:*`u\+m(kJXD@nFlR)oS -\#&QaZ^&9%-1e\;2R7$KP1/"6qmCp)p(,!#g,XU5GaD7R2'3"shnYg.d]@<Y$b\432R^Gb.GeT0 -QPPe?>0M$i((e^e2]ut6Z!#ro5A`%WHr0d?]QN^r9RTcc>MpG>4\#+I/VJ:kYhU#uX^p47h^-ap -QN./4<QR6'k&1cZe6`iq5EGgE(VV7CfBit*mt)T%nC=Vs)Xra<_RVN#m71EMC"@&]HWJR&eYS!G -(1h&n`]X&ib2P>4jdm[c8&^PB&*%TpmI@qk\[hL%@rV:!Mm$i$$2?77.rBDcc"-dalL+QXS&mV* -HEbTS8Sr;>Bg=r$apCR<c(b/BmJ-Yjj(h4jIFk4"ItlfmkUi.ARsu%JDUnY,U?U*@E;3>a-LhkI -ZL*E?Slkp6HUL-#B"2OE,9Yb&`pp;ZaGOrOA\Ztu_>aMCT>M\!`OZa),1(Fm$u6Zj/bnigRef1l -][h`BRRedDOXcM[&umY>EhgCAI_[HtJak\mMm1_QjD)/2&6m(-V9Q?_EAjA5V:_7tI's)NTd#X# -Pls7OM1AE[q9._UJ3791li%4Xqd+M?_`eh*es#*S(APqg\sA=ei\(aU?5n<1cLu03'T'$OKJ9om -*\p34^G'TZ\5l[rm/I'J5=YHjr*&n0(>;J9[r7P.YKk8fc`hd)qfV[,`kDKD-]Y"OHqWGeL&N+A -T2Zjjf.GscdIg.WbB]9*,KoehN%4:!?JQfj>te$:2+tdc!4QcN,W]5urrBosMr#?@c\QLUXE8<+ -=46H1[a^c6A;V0]nQj7`BS<s[Df)Vta;E]!T7t!8rkKG5m;)4gj$g_u?NKIW#lH@857-P;*t@PM -*hU='I_"I?5?&Gq>0^g@/6W=FhJ:)/']*AIA<]R%HVa#4qbR,jrM&r!L,q91jSbc9%J]o"6)Rn2 -^INd.n[=p"VTV(pW(PdHTr))ZdQP607Z"7MQoS[I8oUi<@%0`*g043`Y5NhRW19EJm<sBqG56"; -dHMI>n5XV>nYa==-6Ib&*UiC0&DsUVMKLF;nEfXHX2(&NE02cUDPrJrUe.g"0-F<L:cKjdHi=qE -6LeF#5DO\<n;!@i>s%&"eUhHe,\qC@D0$T*CQFkk%kc6VRpf,bMeUm?iVC=[:Z;<RJpo-GG5\T* -n]-<4C\D*RC0$X,*FB0KB?+$g?6_ut>AH6%U9oM813IAgUd4[3@W`R1LkB&3rl[M84stT5p2KeR -#K<eu:saSii,==qD1?K_lPOKq4]:i/L]%WKLfWftg=Rb)E>h"!$\]]/\%(PM.)3GRfAUWul>8Ma -BV?H;rr>]?f7.f4L[>?:Oo>@U#l(EJ(?\fH1q?#Cr3k&T5*K@hN0f,?5CTjK)::un07,*j:lX7E ->*KrFRg%WLnQagRTU%$:@*'n&aC%L@&99;mkOpd]Y5\K7J(`<2cAgh%#3f;MK=iG%/[QQJK>G%R -%SmZOMX\q#g/ZfT-,a]_hX]1'(QWk4Q=Xh-a7]T(%u<CarkmV!Ho'd(-'Q:$#D;ZN5?'BN>[56^ -&kE<kOr+dpf+k'<>fuqagWo'_<r>W9;8-<pk56.t!&N5?U5FS"VQp%Je;`8D3;fa05&pT&Js?0p -Iu<+kr%Xj9Uj/*B>&L+p'O1S;%Hni\Ih$3W+Ga3+Y_js<RK>U[<OcQq7NH?uAW@B%DZ,9=AfW]$ -<rW/OOQi>RZM8.o%0H9!n33fdkDO^\j"&Alf>R_qfEgZgdcU+ENJcfQ8*.Z6AqUW:jg4g8r"XG6 -YJU;>'gqKj!+57t_@;"Sf8ZZZL6(<<,='#)9"NPbP0W<N2]$L/![YEGZcW]>N'(K#G85!_rX&>g -<B_7Ke.CIilu0$(%Vr0Vng<m5XlBd"&]erD\bd@RB>(ih4Q!lkKFQuCQ6631FSYD)0?[/$FdqJi -nmD5nrr>\6Gt#RO!QWW\9FNlu4FVCH5X7I';Otp#FZ$LqJ^TT5Hd\+f*!=.hp)VJF5N&oShWd>p -9YZM^#*\$7(AOe5nTTb+oK=^!nF).9[Ca&?WM*`=R&qQpd0Uf6iF<i3?qAU8nK[b@LZ*aLg#4N0 -:@Q<BS*SrG73.qhE;VfLn*[QKfQUS-=BjIlj9V5NaRLEsg7YBRlgtCu=HWY$UbSGI!9/b3hG5ik -+"R=Kr2b:@nGD1*_>aLo^TpnBUYL)MiiV[(]Ig)*Y?YFL^)5IL1ZD\9=!d:4e1BW7>3\H9Um9#a -fanp\`t9F/?R,?Lq_<?1i7I>IiGEqZrZCZ3L93,:h():k(4kCrFSamI]Fp7KqIZ8K,i(TF<fUC` -D+V7&So'G'3-P:TQ,"4=On>DWi,OtV)B6Dk9ip:lphrGEdJ<c+jhIsrKn$orkP1/eluCu_nPUrJ -0,B>V$8mI,;sYTBS6-`Err?akIqS@3I/EYVq=dsqGi-?bGjiN$>"n\%[[e/ih:EQ^m$;imm;TsR -W'`10i8F/4#D-_g<3#X>o/,Rm44VW(dW4(&duQ%XB>U8LrWV!??gq!TLqXgH&9ubS2#dOd6ZBN] -pk%Wk7WN"fNlc0+H&eN03)XbeVtWYEPom:qQj<PLh\H.kn?]n0!99@*56uc#0:rtDlrSi>!(H-P -orUeuP^gRql(@T0Hrp=J_Tr/]rrA'Vrr<IgVLQt[nR):r$Tn@gr]+;g70%U'r%^I(rr>Eq`IIe: -n,EC_jWF!5qIfa:h\H.kn?]n0!99@0oM>dWJ&<MqTCb3m=8r9;cMmnE!00qV!"=pcJ'dTQ?iL*6 -49#<[3F8mX!-q*41-V-+!(467J,CkdrrDiU+7RAJBDi=t(&n:'ZbQM?j-Ap%:^<57_^"E<oK.G% -rrBp]rrE'!N`#fV%$.98d-^@1rr<EgrrE$Y?EZctGt7cf5+2EN6at$ar%.=:!;PXtnAtH=r=7^" -rrDPp^]+;oQ0S!<#F'_U,O(im4+(-0!5d%]!<3%Z;?$V)O/@ERmI=Q`!"1mg!<+ubY=/G:8,P,+ -RK!7S\&Ejp/FWT=puN[tOu1B)poSuqnc&SfSc8]i!$&1EUi(pN'0MfaaSK=MrrBoOnQ[15*:N\& -!6=EsBD1-M`-r-nWB=C^7<b`ga([@Q:T.R4h9;:rM8"6TQ>X2M49,UP?a%5[/+Qd@$5rjD-^!G= -qY5^C!(gV&`k60g!0K,lqY7htR3/[./cPeqMSJiOrrD:\4C!$rK>Fb>^Y#mdDm8c0m)@p8:1"`` -7+:5/[Us20rr<a=g07)E`u%@p_PlM!jR^mQk,A:[5Fm84J&+>K!9DJ=&cVi;O8f3T?G7Aon+dl& -rr<<'glJr7XoAC<>p&q=rrBL5p\Zd1RK!7S\&Ejp/FWT=puNUeaSKQJ%c8$$!:[>0rrD)ElL\0M -q>ATb8,P,+RK!7S\&Ejp/FWT=puNUeaSKQJ%c8$$!:[>0rrD)ElL[mXP^gRql(@T0Hrp=J_Tr/] -rrA'Vrr<IgVLQt[nR):r$Tn@gr]+;g70%U'r%^I(rr>Eq`IIe:n,EC_jWF!5qIfa:h\H.kn?]n0 -!99@0oM>dWJ&<MqTCb3m=8r9;cMmnE!00qV!"=pcJ'dTQ?iL*649#<[3F8mX!-q*41-V-+!(467 -J,CkdrrDiU+7RAJBDi=t(&n:'ZbQM?j-Ap%:^<57_^"E<oK.G%rrBp]rrE'!N`#fV%$.98d-^@1 -rr<EgrrE$Y?EZctGt7cf5+2EN6at$ar%.=:!;PXtnAtH=r=7^"rrDPp^]+;oQ0S!<#F'_U,O(im -4+(-0!5d%]!<3%Z;BOR2:$3QUpoZjLF2._Tj-ApE:]i<.(@WSXR=o;k/94KK9g4F_!3AtP4p9;_ -.<m(?nCG?_#-4G5p2]EOKq.J?/#Xa]*0IJtARZ2$[cnWi6V4C;)Js5u5<Zbp^\B2._8"ZQa7nF7 -d!oLXL&V,i1_"KJf$59t61EK]U:nsPJ4s5HRet3`j,mJHb8[g]Tamn6=ad@M$!HaJ=njT<1W35W -^CGW9n:'97?7!/P%[l7Y%n16;phnAZTT1uXHY$;iS\1hbb&137Lt%\UNYD-<pfFJ?,PKdZ8&i5, -iBNA%12=N:$Z0;gL@nb842\MT=^T'd(pgid[u:2/8aY0S]A0J5*MPD%k^W(pm2*eY?Ng:&X*EVE -01<>?:Q'?9CJ401L8,6P++rolAFd,$RM+!c6S$==2CPaj.\$Np8\6q;5L!p=q.b_h'mM%\IS]h9 -VL9qa?lWh:X^l\V!9*'mnQWi`O,&*YU1jNOnG]Tt\%^<K><)(&mpeLY=JQ*@8HX\MEEanQ#8s4$ -`unihIE%a=]AU0b61ACXDXg-kho!3^IgeFCXPI)"3Nr?@iEI<Pl<"EE(n*u>7V"'+8s=j+*l>T] -$k-#!f:"1lhVaOS^[P0?q(a$2rrCf7rg2A@]iTgc!5VCEjN)^err?q$qHn)Gog$BUW@&gN91'[# -BG2%#k(#rfP!scAqc&'];*5fp-N$no#j[oaM7";p[>sUu@ZVFMad`dPMK1VFnQEW5O8K`b_#FDA -^W([<_)b)A]N8UAl^i'MHc3B)-^=gu*SVlMb/V5)*_?-f7us=CHRC\q[Cjh3*&3mT$h`%=q`Ak? -FLLp-XeLr,<</PO93l1_E2&4<(f<^9!)Z0!!)Z0!!)Z0!!)e.ABk]_ZZjDl@rh`Jbr^OYn$N>tH -rr>tFd/O(j?d=@QV\8AmkP?:0GW5/%rrDH4rODemrr@WZJ&rPta8LafrrCFQ?[5_h^[OOMq'-q? -rrB:QJ,1<=mje%:TD(m&+.mQ)r/Yh^ia7iU.&+BgjMI;3jbX-&T1rr(8L+9b2f1n@'KEoO'1`gi -J3Xg'jt^lm'2ArsN^ZWV7Jndt]u9Ke!UKEOTc!qLrFciQj-ie0+QkbbDl>fgmGsiE-BuG'JW,.Q -]hUWtqU!Xok;X/+lj93\pVOTK;YZ6LppOHh!THg/dTZuqd@*(T]S&(-j[etfg]I\-b,dN%%lM,+ -VqoDT<A/_qVWjPgNh(6@AT+M^IV7=cV4CM"Xc'af[3mW8GrQ$2P?.n.%KY^TH6HsT0p2Ma'H#,A -PF?HP*90.ZH,+u`eBjT2'?`E"1I6tY?ud\a_Z5n:p8WGrM"L]I%,+3mWF&fmn4PlEW?od3&j3J@ -YsfK\5V2IeU9@U0!+_0?Vgk)A1;%i#Y<hrQrK=l;e"P<#d.I[P><$5-nl"U$q,4S-KTMrLarE*: -<H3an,GS(#!7lV"igi"o][Q9:DsZiY2//&XN-!:,^#Yk*6QBNj0)H78C?4bO4TQcq*/r??GJ9b> -'MpK\Yj9OpOQW3c;Re[<q-3h*iMpQPGO3YR>\dMu`OgJd?P$CHl'>Zc<4@[kCR>4Mj?oQ):aC'R -ni9^0@4Y1S*'`,oiC8OjS+aVd`"sL24uW1s>Ln0HH`CcU:Q53=*il4(G)mr9g*VJ&WJ]]kg(eJB -"YOi-L>ne]rr<33NrK)[pfjET3X1T'9iK$F.G!P-FD:A!7aFiAdMbc(rmQ5Vh8^cE@^6eDdC`A& -KB*;@JK?cI0mj,Orr?XqpaEhQOlP=@prDC'`@Z;LpFG2SCKcnH.(#NXdc/epm,PCX[t5Q2Bk=_k -2\'F3Oh".s=Mc>].s8W+P4$(4l#C/j9m0n?<hHDb5.:7"Y'?^3nDncl%+=Kb*t[^8rLV_K7G0Nb -467aC>\s5h'Fl?`RRSd;5[$SOMI5"[p6tL]UijkagIkn[e62^gZ-e"?kcs>Ji:@St0Ud2\#USmV -qY\.h+(Li38HAbj.ekg:4sTj9nUJTgG2KXHJG!i5rZ9Mc7=B*Vpnu0AYBQ]+%2Isi3O$ns<gM]U -PWO;d4c\l\,`iF6`BJ]/It:>k\(Q4Cet2uGINdsEA@`l$QI'c&DSe5Dr'@#[94b$e$.,rcP"?SC -AL$>uc':h2ATO/*oJ"(R_&,?$`dS3me(7n^rLj(.n=.@"BT'j$!RnFC:?,9W[[Atc:>5>4,A>;O -q,2rupI2e]!CA&MQnP`iL-T^!l-cr&lH"nI\fQ:s:O^lE%Y%t1KsUR'idZlnT*G(*hE_D$0:fk+ -.99jk;5e1TPc?GM`iR*-^bqnWC\E;JO20Y.,K5*ZeW#<@m1`C(G10`%?:u^T'JNb0Y;GiA_utrC -Bc*?D-]7E^paouFJ)HOj!43T--6'c>NWT<@q'R22nQ`9bQEo4nd,2*W[=7>R&?t\ae/-Op+"Af< -N<](s4e!E"b0Gl?)rs<8KfHu=453sU-B_)HPP^M+]2\a@^)(J?"YIG2gj"SCG]rZUBe`)g/c;'E -Qc4j\KP@In^&(oC?u>h&20PL__6/DdrM_maXF(W-INr"jL>MC8hB>O8dk@i^Q<(^Y%^EnkE2o=0 -=*=u5K\dXjW$$Z]2h8YSHgf[@p5&[@]N*qj!#"%264X9J@FKTsi8%l*9KIomF^%'@>M/3o/\%5k -ZpK/n@==>/_FW"u)$mBd_Ua%Bm(`$?i9fEU-*YrW8UOl`i@fsI[u%2^Rnl\j:.q!.4B[#J'TjEB -)/"]Ph.;WZbbrZ,B_`Ck?M9`IqkTS=G@Do$n@PKgi8<U^cVsK#>B%[)-h&tS,9-el-iX/Lqu*Is -5AX-K;aKs1V5IL2\rGOjrge4u7Eq@Ng"t%eo@oSS(aWi(M3:D2;3o3tWqb=8e9jpJH`K:W>.F(q -Tg$j>T`r)1&mO>FNY5?&4+Jf$3\_ia"?Acf9e_6bQ-o16_BK6_(%:.U-QhkO_sRI(/@;GRfGoEe -k.VK'Aana!='tGqO,05u*tYhq9lAS#d)g:1-C82jhB@qT`'u)0_OtdA<B#BnF3A4\@IQYD+8ltI -&J+c*oWS6aW@7Fc/':*88:3f)!2@s%5Pu(,?i5sZrr@a%nIKnPpg$'.j8P\i=8r7FckeiWMXl8l -;I:!U5Oc738!!N`oWS6aV#LFK-h.^e+7Qjh7S*OZWIIP?!9AH-(!g$W]V#0;Qc)!sHti*grrBTZ -9)enPH=-GF*t\GPkd:,Grr<0?=8r7Fdi)l"d9]]M!")*Q+8ltI&cVjhK1c.DjEa&L8:3f)!2@s% -5Pu(,?i5sM*j8"X8,OeHLk#&#Hq42:Jdj71!0QLF!/2Td&,qJ_M#RJE6)B)%4TKfA($-P,Ucot% -!7>NN+8uO&YPq%erY1.+5Pcrq,Q@b[#*o2gaRfMuoN.9,_N=PJrr>Kc`..P)d_GT!O8)Tp&H;ao -[.o^^!!F3Arr=:j#HQ936XE^k!")*Q+8ltI&cVjhK1c.DjEa2_8)b?jr\%''c9LRpV18&!-74&I -7aYS+^[P(Gq)j]WrrCYtJ,L[J^I8)%iCSDafQ$GV`'BI*r)<Gn*rc61mpDPK[bd'nTRPC^0!j'8 -C%^6EB7rp+1_E#"_)Cfp8jo\3!.hp+1Y3tg)Y(68!5^THqY7htR3/[./cPeqMSJiOrrD:\4KBS5 -rrD`*lh/$l$2=H"-@OgB&4bCqV^).UfAqbRT:l-uoWRs@pf$3[&:ViP'"l[W.I3E;N:tJ)Z%kiu -ViCf?35BfJB/r*F:L5_//)e,NJ+0FAr#bfV52XApq%_<W!3`$lCHe\k]VGH?LVuFR/NtEZ!5Sl) -rrC.4J&7<BL]7?CVo4)[+O\%#*l"W!k(D4JY:0DNKd#ssrejR.rrDOSV18&!+7Q'i+o_PiC%3;E -#W/aa8"^AoU:d9#'SjUkqCOlUrrBk>Q2^j*oRF`>pkSkL7An(Rp`S#"q&Y&L?Ae<7pei1FrrD8i -plGFT"<(AA!$fnk!")*Q+8ltI&cVjhK1c.DjE^h!H7R-&iCJ>`rrAeBi]m>PBj^e!8,OeHLk#&# -Hq42:Jdj71!0QIIe`a1brr@`rnIPVW:Pf#Nn3Nn#ni\)aUcot%!7>NN+8uO&YPq%b%p,L<U](s_ -`'=)M4sU(-_$62)!6Fe^_N=PJrr>Kc`..P)d_GT!J3@4rnrNQD*t\GPkd:,Grr<0?=8r7FdJj1R -6fK3d(7u3=!8rK%rrD,+!;1XG!M&?)VJF==iCJ>`rrAeBi]m>PBj^e!8cJbt5N3M*O,Z=I"TJJO -^SLl0niZu!^c;Dkd7o013)Nu*N2cnf!%`PCigi=<1#HadK7W8_Y<)WaC_KeHRD'eJ]n_O==Q[tK -($tiKG\m&rQ1A-6fh<7j>VP+HiU^QJR6)pa)"TU+kCnB35I'C1^**F,hB;TOnG`L,*[:B'j/W\$ -l*f;(^=&k@L:,[nQKb6p2(_&<%4lk%<q@%NQ9G&(DnM@jI_`_fRU9bN&T@XkGS\3UpPLg](&>=b -D2$tU=^4"%RX?]0D_e>ZMH5S)9<-&6_Z7L(a8Z,THp-I"Nh.TGFa[or@f<e[Mb2941g><T-fVgo -OV=MoaLII<l`p8p%NG_:9XAP?o:5bHrr<2/n3iiOpeTpC8N[[V5JRRYMI`/=0?;olrnZ-`Ri<O5 -[GT[jI)srm[!D,I%",S=[mi9jCHqbHIV)S+XFICFU%Inp"usRaFR,B'E!Xa6r98UE#B2.+.3[2= -DB*a@dcR+?GVAt/g\sm%`r?&4j8T+Up=8V3i4nb[Dtu.A)ghO=rr>^ZX58EKmn<eFrop8TJ%B>K -1\(eM$VC?u-a>W/JSb>dS<_4r!5U$IjWHbuJ)7s?!7Q)@FeA/,64`Ig2^!UgQI#BK>_i4iT&qO6 -gY]e&cQY^b-N(sQ6E1R_qk;+o%X>12XX(5"hM[dDdhl0d!#T5G!3\0X!7G$I>'p8LT%(03rr<AF -N(G,F\nK._4K%u*S\;mG^llY%,]X@:b!?FH63uscD,.Gcn4>i6IksNeoMJ%l:f0Y)@Lb)*!GJVL -p4WC>4>ZjhGQ`8X`H0j>l"9$/2aIO>raUOZD-h5QSnl6ar"`f#H-S9aCubMg1Ok+"e\tFa/m6:C -HC-gY+,d&aE7C^4m<#LZ=%,sTYDFiYA)XOO<j?:a/Q1:a\/CO3'Qjhp#GJsR<VkN-b\<s'kS-l_ -0a/r.es;NOlTgjXrrD=pqB+d6q9Z>/^2s1>I=_Ae^RYn/#/4/q<g<T5U&0%dIhj^:h#@B/O45iX -+NODBNuWZ%C-VY.Q1pPk)?0[>)'F;Cn\0=?C-VY.Q1pAJ7X5'KS>H5cZ:!":qi7<H04KFL^EbBF -;-nt&PIO\YIbN]jfrr>IJ3c)dNo0C"'mdDu%QUOmkD-.O:SuBJW7fm>(/s8;\%.?,MG+RN<IkAX -!]/U6>a^<b=H"h(&U&2Q8bTaNMNR%ZO)sofi2P&B?O30R7^ZiLfD]!X,.VXGS+]G&]Q*rO"aTm, -5D?jb5M>A^hQqRuX%V"2mC[P&=eWQH6W/kK,+UdY>[0>.Og1'?2_8sJQiIKmP1b3sn:mE^%FqqA -HoZ+dD^*@=Z0AKn`l`<>86glP!Y9*K%A\Hi^CKm3g5bdb4h\=_(ZHd8Cb2_BT>k'YQBPMQqeaT9 ->oQ!S>"<^nak2WmeO,nXi:*m8>:YZ-?DfsBn#pM2?Sa5R.8Zj#2g6d$%6+&4*uY(1J$Jabmg+Bt -*scs]0A0Dmps!3=$[(hnkZ2jf)c'lOXk&T"O2"])JNUFFdR8d81.8I@/P>F5RJ8#ra2_@Zm19(X -I`u0+7\Lm0i9@lbiZAiJO)q;DW7cEQrH057Ztm4J_:0X4e)su3_3.h"fKR9pkT7M9*r$turrBF' -On!J_0,(gTZn!R^gDcNm=0"\u%CDMo,5VFHM`4]eN5=I7RQ/s]UI$X3J,P\G#Q%?mIa:aYc\JX1 -W3j1!H`(,Mo3,Mc2ZZO/MbCQ#-af<j+A3-!i"L\mlQJ0NDQgbQDH?Y;T?,kn8LMngp!V`gXn+XW -p2KQB_`r`[[eI]^L&MVX:#fT8K>V"3ZdcB#TfPo?K&G+DCX9=lg037fZbY$L\dc+%1461GWckZ: -&)!`OT8,l8!.q.oJ&V$"nLmVbrr?ab1@mrbQc,I)f/-2Wb>GL+mPHn?mOt]:[ZTY"^=8)nS]$[7 -IWoZo?q^M""N^@*GMlgEG^f6XnWp(kj3'u8rHeJD;"<tgH`Us?OZ@[R)c<'sY85b+J)%-B1*r/" -`/YdLj-T*EnD!Z!pjM*#!"=+pe&@cIPMeNYDfen_N:j4Z\1V2TYhVfkDg*2mb^a88RR_>8[WaGP -7TPaaosUK@dsir$k(bm<.&F]BQ+fu]jF$iEqap'[&,mUKffpKhduLEe?\R+#SqWkBgo1ZqA#8FU -o>_477kMrk:?2C[3bKWna.7SlnZKG&!!N5p]mU-E]K9WnQcEDdpjP>&C#e(\G[FD!HqgQ3\(\Y] -NT>&dmDIX/pT`L,f[;/mM.@4PWJkKVT*p+kVr@XU`W#oQ?>3nB^[NnpGSU-PU["F^`6WiPXEKMB -Nr-K:4hOW^1/$-6Xr+K9+%Q$QrJ\H2rl`n0P5$[u]Wmpr'XdON[>XEQ91re@a(K5?F%U;O&<]rF -&s/tce.b>S,i/)aq:[Db9m-%`I*N_FH(4V81qlTGr3Y(*D1<1G)u)YpG5.!3)R%)ir)jN?iVU05 -6*GMl=jgm/D([BHgO&7rik;d]m*0FS:FnE-o;kKG"F.b+qQKUEn1VS\fIOgG%D59khh&QqnMTKe -]Kr;r6/pc(9;SerXC%Hq%>*lS\$sr[hkePu!I:,UqonFFf_+pgKDRTP0>i5^n`HffT\@*:`9F"g -`;]gOP"V0bAr>+j'7<]a7]YT>Lf"meJ0]_<-dB:Crr<28pbC\9B1KM]4?qg2lo[@V(8I[=1O-f@ -\a]$NE>++^>AY]k[]k=XE#Lqn"nKtiK2"pD.bZLZr/sd')LB#^;'qngTB"Q$r/]/GM*J7CGf060 -rO(Ou+1#>@rSlX"_cF%QZIQA+p!Ios%GsmQg0?JC!Y%=hhKeP@"kNP"[&&fP8TXQsm*kKLIaMN. -a6`8?i@E4eHpY3g]GLSJ$&l>Si[q;3^NF+&/M1DCq3b-+D^9V6)8LS]mW!j8NN[iJ,eaY2PJj%G -eS_L<-4?H%(JT278E'?Eij^R_\I&W4EGh5$L.K6k@hFsXZ)XHnJ1Z*QKn!_W"S`YIdqF%LLG\B? -7[li!_nTWd%0aCJHj_FCD&Oi2&h'2RC^PW3:/3N!G,Ec5Zu+[a2>OWY>*V*h9hDIN?FRC>7/lf> -T7u/C0#)<hflQ.bKB$6-6&3GY(Xf%iT21*VqNlqZhZrFnDC1*NZbDSm;[^VXK'jKp3M$O_8ro*` -MZ&=E1[6'h?gMe%\&[41\[BsMA`6oR=hBKmh32)Ia")['2_i@]/!BFXlnt^)^(BfuOmqnq_tTc9 -A4mFIle85<J#hjRBji:lhSlX.Pf+,(kl`/mhVZYB7#[8i^UNu._O>t*4>!GoRSBka3aRqc*M&b6 -@gN8mTL;*4'ERu/-Eee6q0l@>rr@K!ggeFTUTW5HD/[#3mke^PMN^l6T"LX(3h#lj""'36je);u -2oVmDiA\Pj%Sbr&V*X&\A&WbCS#tQ&*DJ2/b=N*1\?M/l,2t-'^t@r<Zkbk\_De"b!5U\g?eIfa -hmA-5BCLCVnR%9i-MX3&RXI\5nKm%uX(k;*>0@Ca2k$%8+nI'J,E1TNjs0!/oq2"/2iBdsi:#@+ -h0<SPRP2Q$\%ZIPj#on*LJa,M2Xt"r1=!/M6n'A**)J37r/mEA@#tP2J$S8)pS32ehmT,7iNJ$. -,LQK=peo/JD5qiY?.0i6lQ6N"VFsmt[YF>q:s3nt\S3/r`I?$i!p-m.=*[A`rS4m[e+LD.?UYb( -C[k=&!.qrNT4P<eE^0lEV1*.D5IN-C!4-U^NuQm>+!7oh>Jr5Pl^+'l_b7ZM+0g&;`1+;G]5*,/ -qb/`FLe?Gs1I3^]#bbEbT;@Nt$0jdZcJO5g[b&KjK>&]-_r5k>*6%Fp?O1nnqKonG>PP\(a*X]; -?/3TR;,7=N%@t%,L_7E,/ZjtqS>@16I5HGB?`BiM)mt)qjNc*N#sIgUj2?_jh@EBn:Z?)jrY9Zn -?L^^QC(G_>SZc9Ub]bQfYpCc^_Ta?:Juo>*<4`qCM/_Yq!]+(_^c8JSIth,[M"Qf<l2DOiDi-Bp -49#9lg=sEJ\m?=t%igRgc=8kn(*nF'G-9X%"-O+9i[)i.Im;9U8EQY[eF.f%jM*k'6fTQ056Lo4 -SeXs)iYR4E-f_lE4,(7?42a0K^8GYN-t'?:VajJ>1B?(K$qGA90C8#or-TS.%`a.5*5<#<WNdK^ -)E"bH^<TJI5@iI.q0D.@gh3)C%WX;P\c2YdIhd>an6<`\INn<KM)5_LkSe[TFfF[cnCUlJ!cSOl -.k3/Ca!=[r:8Y&P3`j/$#j@lgf>.)d(@^.PK%@m)MkEA56QVQ%V+R4sC_t5+'dRVM["F<HV=F#k -Y7,eZn28gP4Ak(^#K32P^5,'rV!=Cr=-bd"N+!b6'ZS9L3$=53)K4>NiO-G:p%XFm`%M6@_rcbM -4AOVtW6pQ7m18p(r_CnsB7;YUDSO-Y%DgtI]MBo21dpi_n0QS1Z+c#raUE`J\JB&:$9%#"^u4Vt -c:'XpX7H8jJ0cMjqX.\Zf7ikc#P`bk8^].@FKI2jKl-3.m3#L_m:&qHN\jQI'EA+5!!'(b2N2$U -RL&0gF&!\`*n8qge7g56nmB6Uq+Kni:\tmbrrCGm<IJXi,lAio5N&`;'f2KX(#f/md99OuC_#A/ -mm+b("oeRST6u.Y\&,o6'2?sR45tZq8$SCIL>h(!S>:!FT&E?&f*Vc@/+9M9ec,W$^2s0Hko^%' -r$/Fhli*)j?^gbnMQMZT-W5WQA^)5oZeYKi_X',uq>E?si2%Ac7]s0^KRVT='fc3nMYG'%J(*)S -]78b*58/E1nPe@h[=@1!?Mdm<LL$2KT'B&<Z&<sP$(jnt+2ldn0Hbm3"<.4Yrr@X5&3jfW&7g?Q -&P`9*Ut2sL-\U0u3tn5USU.T+H"?9rI?2pk=3>KLI#jkQ.)keu<0DZV+'U*4*ck)RJkeIC_`dkJ -oci2jAI9i[R)4_0%"L#OjNmtU8/rUgH)#W?NcRN%`M/K!,;c(VZ(g7c7d+Q#)kj(G`;TdEP/$K_ -chT\a)ufoi`#nhK%=Y]tjTD%)jKJIq/Ec`Jn\.$`!(_bB!(gV&`k61rn;U*?^+]F38*iDIJ&pWQ -rHj%j<)4>QkOYn.n+\9fr0d;25O6_s!;('YjG#qf3:#s=Xrm./^dma@i.+,n!09YM!7@uW%H)I. -N9btGrr?q,gN_EO!$\urp%/1`D.g.O72>bbIl)in;*Y:!;*Y:!;*Y:!;*Y:!;*Y:!;*Y:!;*Y:! -;AKA:!%eld#R#/W'ED&PE_.M`I5IlJN.XBb4sKs=]FjZQa8Z.H&[]u8,6#tR#h!O2Lc#W*e)B/U -BQX2F#c2%0q:APJghjb;ZC#'D7?_26%a=frhtSHnQ2Uu4^3%kR/GOii]CD0aqI[G2%ajWcI<l*X -"88@n4h\Hn(k4:l(fPcJo&+f$k25Z)hqE=&1]=DqL:g[d>\Th:5DB+;i>f8T1g=`g>o%eCDW.M' -9;f9\KG0SL$#UpmL`:_s/l75p5PQQi`!nBZ?c##BC0EjB40R?S:-Kte./[.'2N_O.4$;7G[#R4g -,:)k!.*EUl[h;M<MdB3Z!(oZ2eko5<?i!Fq!&LhWTliSVT+L\=Y695(f=X'#NDeKQ)r40*g<Q)> -\Zh*,O^^sf+Y5r_>KN3e9-B3PW7`UN'?PVNq\9%YIgpOfFaG4b"'+lFe7:GVPN)%dg/OM8kf><i -kX+"_*:a1WUb4q_pqcSUNLg4MT"Iefp?q8+9HOd`4D>jjAK%J'^<=)<+$T24@Is$*PL&'lT=UH2 -)<&5>i\,hs"T1XFkl)@_^CPE^*:(<bdqgQl^C/rR7rbXu--U(HP$:33c\X4_`/ItmO36@A:f=,/ -[$Ii#8rhNeOn@8CNIP!\r$QD@^SJ#jXi6ZGD.8mf5dIB*BOrZj8=T&u'ilg%EiWbA5WT<QC,,ei -SFm$IT"3Q2MJmN54<+8,Cd6qcHu;)r_uB_5p=8"1fmCM:kJNU]rrCYRJ,$&%rrCuShst;A2u`le -+8mk$YBljS"9/?0^#1R?(G1.*m(`Hu,C[i8!ZaB`C]=BaAcDbiX1tHZK[O>?ptPfK"aBHJQf)6) -qJAGf[#W;Xq]=/_[4K3@aci#9f9(O*7m@hAL]A(kh1m'qYAsRBK$nZ9CWnpu><h9sG^&M\rr=?o -bPo"GrrA]1r4@ek]t<r%U_irk&,s5Vae)Jlj:HTCT&,b,:VkB1cbWfR_I!^Xh<6cGh-K8GZV)I- -5[Bfn,k0X3YD#Jmr?(e@rr=<7_AN:QTJ`A@Le@9O1R+ITZ>ZK8cfJu?pQbZ8n+^J_!IrJ,C]=Ba -AcDbiW;cjP?LSd0$^SR%p0[eK]BUp?1YOf1pgrmpJ'b`Arr@O[rrD&X5N.t,"d>Pg>(Aj%XM=[5 -GP$[Q,TbGn-BEl\!8t(G"hZMH0A/39[#H-`b3Sq>eNCfp@T9Fs+#=MS/+V#dJ][T13TKb8f3e;) -Qi*8grrC\pe,KD6QG4W!625q5poOAkm3gR/dJalirJN7Vg\d32Q1,U`D=B`en3=b`2]a'LQ?i+, -2g7#J$Sd2=4?'BbU\8$`(-1mGY(,c=^\h):rLJH!JbUbp^fFh=:6jKbE&1j28)Qo/ehOX?D>/OJ -_#FDP06dm(L!*j#q_.sL'hA0WpOL$B>daS3^U!k>nQ"ID=rbQbrr<J@i%OpC/V!6U^\h(RnB:e4 -kPcpR?GH*_?iDOel;(ch(DCGRbPO#=%3omU4),+TO5A(#r]OV>T:)nH^45f2I1Pm+r9.5)E@TD/ -ch'G>n8I=*rrCfGqf2@+r">pG?Oj_+n=.A"j*N4-XtI,$[\[Jrn>cn/4%RCDhS-Mh=,B*Fq"r#G ->!ALO]3ab5ji">BaLT,LS_+r5o?[+pcho8nb[>'`QacoJK"dEHQSJL?%0b]u8\i""FoE/[M8Sk< -2NBs<#cR<8-+:7!+-c<P5-!Tn6pJB],OFOjQi$tO5Oa\:i;Wf+=b$4H?he4$!IrJ,C]=BaAcDbi -X1\UK!u/0>qE/k2pe/GLB7VmZVs+tRAS/#K7'+T54\s9nX[0asMP5_<;*Y:!;*Y:!;*Y:!;*Y:! -;*Y:!;*Y:!;*Y:!;*Y:AZ.qVM"4E`6P9cY<)AjPRJ&+q[0_hF%=2DW\g3@,ISf.<<^+f(?T83)8 -(Mcn&cCQ&_SRp\u$o\;X/EN$Se4:Gnbq@.9)]j(t1k*f#"oX[uJ#;us;uN[X$h6;GnHGKGTP)fY -F:/K4*`u)\E0A%FKqX^S@CA_NRt)[)L'uc8g,aG=oSYB/h#%`3Iq`6iS+Y<19,a@lT!bBL/+,^s -Hbd)!E?SpDhJ@3^iCZbdT.0PNi-f83Nn).7BDW26'BP?JFt0-"201WsU%42/t;fduN1.,tAC -+H0hDc&IH+\*l3+o!6[>4\&]#,l016qu,)9gti\6DOKPR$#,jrMg6)3Uh_ln?J/T&pF[VO"/Cg8 -N3!<]fB5*4?\R>urLSCNnOp^U$uNakD$J>GNh"gPVrFh*`]r/1SYOMPIlu>l\nJH_]=A5s<,T5I -r1tcM[`/1UphTBj9__-Ik<SO>MNYlQG\^$+9<q-"1:k@3CDmCeb8mTC4_sY-6N**XdC_p.R'i"- -#N81l$d4SHlPFO8S&G04LS`P/W,=I!jGI)DmbOepgPWt_kK?71(c4uBF0a>3o3,fe8nsuf\)4sa -IY3*mSf-"i&c4G551-`sH@HXn3_tMfqb'(aBAE?b1##0sE6#MO5_&PDGQ.Y8iI>Ht)7703e%g.9 -?62lKgtR(&_Du^+/6>>MD\tC*YpU,*PEJ_beCSe'<n/;,032LM=pr\-jSo5T.NY.YCRWSbM`Y_* -:Pa#g7^Tr"<hDP[SZ6#4CNUrA=0,F"]5_EUZf\!hOic]?/$K<:=B>\'6%7'"$N6p9/SCi'gI?$\ -gJ#>B;q'o]o&@O`9=p,oQSu<Rmi;&m-tWNOUdbBPB*@BH7eXSdTA8jV6<:jiC[Y:f)>Ie4(L6p7 -4>l,H8&LcqQ\I[YHo^uZrr<AGMYnLS/#Kc%DRCSQf],V8]!k=af$@tl]^ae`$bW7YGTp`SVD#hM -7oTAS5A/l,?5f!PfA[j6iI;W`iEliC/c;&<O5g`c>gIIQc=ZY00khPF1F*Fk4#FCbehU]b^Y^(5 -rKb)2nAF46Z/H-"9u!s]]L1hiX)`?@fl^Rq=\qU6oBHi8]U%N<.f&NfPQb;Og+^8S^L_<aHs6;, -A`+SE_pFGOBjYI5Ff(dP5+<m`f#/MQ/SDM:k-gEsULV1)bDlk/Pt)pKqmZAHS\A11O"+o5I8]W1 -\+A/8B7@jM[/Q]p@=HP6:QBPq3di0T/h]'Yb6_`_NKrUre@(\u#lk#q=eLj,J2](j(H<H0NaUHk -HnTTU)kT^1erJXoaf.QOp8deEqpIDm3DI:tL'\*IOE8,Hr#G4P^d!SM?\EeIUY9BF*RS@O>$5'^ -[P1gi0e>sZZSOC!'$SSD`0*^W#>0&Oan"d4dn(m6-1K4#i]I/?_+hWf`Fl.E,s5AF*e`Cr2P"sD -F2d8*p^tFl&dQ72Q?"s63>hTpBn%+%?u(6!0L+h/W.4ADGn7b6q+Kni:\tmbrrCGm<IJX\=lgaY -T,bW02t3UB!!JaGrr=?H_4U3qCO[$anc&Sa?Pd!mIe-KT$6>2'>0UmhQ06q1'p_@!gU@f:JhSl5 -Rf,j^c!U5rkPUk4PQ(VlllZ(&F^LI0^q\nNTD52WT;?d+rrD('Vu@Q_8'8@iP"@%#4\^@Rrr<2; -ZhTGun3^>s#O4J[ZdZq).$ZZL3pPj;0A5a`<MH#u0&<9*A/q,0ik?23dI6iT\,;`8^]+:D']8a] -CL<'G3WB(*"Fn64p&>"/?i2$rg[Y5<?5d1k'd*s(iC4&Jpl]@orr?s$J$V=!J'`,m8,`fP&,o2) -<rO78?e3DAq,JJ5rL*3!re#\-5O_7CJ+?S]fq08!kVr"+rr<1jL]7?#=0'_BB9[mXHuf5eT\mVI -r"<`dr0:V:Iau3ApVoFK?Q&=F3B";(UEuuqaF:t%P_8-ag^.-@l]s[*^u0Zp=65M@'bC:>#@%3. -Y=h[i&hEQ,(%Y+*""%%;<?*=1Q.GZ\6hIPho%YiZ3HQuteDnX+R_$2mW/(?ZJamuTSS(YErk[!3 -Kmd&"-@Aefea_t`rO7Tborj.e-_>"dia\b=]_P%:8VV=\J&$-o?^^T`L]7>WYQ"Td8(2tRqX=Fa -7[j8L_HnM41&8cOj"&8l:i.QWf"[(9hC<L4=b+WS<sM&GQTA2@>?RNCp1MD\a;WsQK9,k\C*3A= -9Dt@MbPm-D$:"#OW.4A<HEkT4TqrXI4_smS,Pg"6;>lpQbPm-D$:"#OW.4A<+k&V8@-:bh;?$WJ -9gep\P,m._)kisX4IkYc*-UkSr$WS8jp@t.rO]8XTA+6HAfo`j`N.u)[+gRKAr#adC%04ZZQHNm -NJd)H5$V_OH-\dqI_Pg^!3aLOpaBeQSk"e?!:/VTr?[35)Y(<97+B!;ir9#,A:DGS\,;79rrCZ[ -rrAl`nSgM7+H$+JrJN3j/BdoFGY,P2Wr+oedG!95]Qa3HjL6U$a3OC=iDc?1U6"VIR\Tf[Fo'qo -!!N3!!0]V98,[`urf)7!DZdc8Bj:KWqf4mX`jbsJ$$:[_kPj2Yhq=VA^Z[WGU]1;sRYUnC,uOW/ -n]UoaIgSF08Z7.0<I2=nrB>]f*`;m(n]UoaIgSF08Z7.0<?Knd*5C\rn>$!`"Ib,G!$t^Id6JaM -rL*3!re#\-5O_7CJ+?S]fq08!kVr"+rr<1jL]7?#=0'_6*`;m(n]UoaIgSF08Z7.0<?Knd*5C\r -n>$!`"Ib,G!$t^Id6JaMrL*3!re#\-5O_7CJ+?S]fq08!kVr"+rr<1jL]7?#=0'_6*`;m(n]Uoa -IgSF08Z7.0<?Knd*5C\rn>$!`"Ib,G!$t^Id6JaMrL*3!re#\-5O_7CJ+?S]fq08!kVr"+rr<1j -L]7?#=0'_6*`;m(n]UoaIgSF08Z7.0<?Knd*5C\rn>$!`"Ib,G!$t^Id6JaMrL*3!re#\-5O_7C -J+?SaBg3S.,PuE<7m2@]8Z6/!!)!7kcg+oB70#4GlN.A")$5f:5mgD8B=;O(;*Y:D+#1j7;A7.0 -cmF,tnUCAq"J>0_mhTVE#s9O'eJ@K0mZ2^rCVDRQmt;L;Qe1I2]J@:[1WHOA0NHg0Mn%gVqu6Z_ -Iq.O9%4fG4nLcJM;0\MA6'Aqk<u++EYhAC",lRJ,f04+7G%9Ud?T!>L7DEHJ2thh$Wo1DV^[1W+ -nXIQ;<eYC+Wp6&ANNPAqU1dSg/C,"Yn12[FeA!_GYn^5u,4%K^DgD?_JpMeon?9ZHL&N:C]Jnc\ -^P@$tXu+l,LSWJGY9'<bp6N6Ch(^6YSe2*_c%Go1),TE0;1H2lmq;Y#V/Q)A=uWCKf5I"fDpMAF -chK!1JUB33Di]3+Bj\.4L[AmI(/58\[_\rul./m!(t)p)S>2"#`F($a=.a;$$#sj.?,&>-rkUh* -0>K4Lr'&L,-[[`F+lL\#Ra6gA4M-i5_fhJlYGXSTPM"+C]9SOiB\c$m/K]ENH/J"Qn6NaWrnR?N -Q_o.Wps\`1?h"qdXeE/Nr!/t0`##]5?!T8AhV?4_EG]TLDNPXGZ/i4nS?@<8rKTKXi1Cd4AGCT3 -N@X_$rMt'Fp@1kRg$n`pHo1>;F&BH-oNb10/bE4WEA<VEPKRO-,a&iAOM[S1g./2jr9_k46@-mk -P$aLS!3[X@-it)qW;NXTNe8&fIR0-C</[8e0iF)[GVAt/g\sm%`r?&4j8T+Up=8V3i4nb[Dtu.1 -)ufomO8bL#=1oBh4mJLR;Erto('E(71M7rG-H1&s$iUN*rr=FO2uS;DrrARSiSUrer0@.4qVaC4 -J8<qii3\8([_0Z47C2u6=,27J5OqnB^[$R1q>meC\<VOck'ooTq'$pZH%5Z`5,94boRGd@r/hKq -J(P[grr>G5IW,eiqEOH[r^_ft5O8hnrrAc+]\a-IhCEn*bl1Yc\!P2%BVLC_OS49fIIg*'d>?1Q -9Fm4Li3n.+B++_>@G=TV#$Uq^*=(R%C\?0U$Y4>U*%th#]4q9FTZ^])A"``aXaFH(^Y7;6rD2Y7 -$J52!bPY0,8+[&`3r]3%"7TCjJ?6NXSL^ud"`_;`WW)sV"lQT]!Ejp:3`fiO!.%`!e+cf<oo&f3 -rEn\$;+5/>KdX(TQB:j]1^T;jrh`Jbr^OYn$N>tH,KZ.Q.Y!_53Yh4U9(]%Qr=@Yq)h.K6dNA@+ -oWRV2rr==EoDZVTrrD8M/*S_?GQ(>F_Z'W/pcnBdYFC#OrrDj@=.f1%Qi@%R_-]c_bJ3Ue?5NVA -YJL5=TXB52rrD,,&+R^459&Y/q'iQjir'Jc)L>7Hks^(jUR?fM;4:l,;?uk3'VOTHJ5JjB"-.)/ -!2>?!!2>>Wa(%QR.&>W[Jg_)#Csog$72_he"Vag!"Vag!"X=&<nkC\nM'mguUql(U.JUBjSe/BZ -VssG7jmcMIGZ.GJLADilmHoQ>^R5n.b8cOR=HFag&)Iq$!)7MV$NC*BO+uO/4s9-^%FY/SV8M>a -"GPAg06qN&qSe"13GWe"R6,\N^,(Cr2<Fi<n5ZFb.0m[R$XS)0`?,^T2;u/C'\a#Fn1.h)CK=ST -mN<9brJ2DeNb-Ci'Y_ZC"Ya50LZ2>&^o9P/4+DoJ#CJ=MiG3q#)@!aP>$bo,+8[CaiMNhML!HMW -2kF$ce6na-&f+BS"jV<@!NB"Fb"oMB?h,_1nq:(Oo4QsU%@e#_?^cF-pa,G8p36&Q`uPu4?aI5$ -rZcZkj)p#oc/SQs6)VGNH%#CUo+gB:QPY89eiS+/D3\RffPD?#,L4e^q_MCM`Me/)pf6h)ko*W[ -^+Pt"978P`FN1^mle$oEds\pBl!]>W@8buDO5?G#S-kZKC->3c=Y=iXKV&tN/M72^>[P`oVVWW1 -!KtGQ9A-4Z%Xpt$n^<r#S=4nB[Y3)-rL/5\BD6mLli$t\6XT=1_&ipGIO`q'`-s&\oP7)_>?)eu -WSPT%,hF%-o=/Dqqpj;s+CL_.WMAbP])Ih-I:7+1h3I=WE<PecB]b;=1:iUa";!j>NEdJce]LUp -fbEA>"VoB5P"Hr&M#g\W4986]NITlh\%X0Yo`"morXS.<b[)7:r\JfGkrSg;0:F,S_Uc`hrTm=E -n[Vl!Cp>akOgE&<5f7Rd3F>1c[J?7:[;VdXmT2T'rr@ejpddLlia$s0;>>A6L#C.XYkWiJrr@_8 -cg7)8`rjGqQd"+cR3UgTWT8&)>e^r"2[=o.nN<Bcd8Rq]_&_$OZX1R$A;3gU3<\*F'Q)%$J\g+r -S;R(\_gW$hNVc@Nhg@Dld=)nr4u</"^*MsP[MG<;[FToemha]lQ=b_%-Ppf*Z:0'G;>-*7_]&SC -NP*TT>t\,pR/[/!hh402QI=7A*g,E2(.[>%#MCEqRT>F.%i&?qF$&.p]X`u)5+E&'"*mYd/[9GW -R%Q+,;-Ufs\!h#HpU_<clY_QgjO8F&P.U9L:<$CH%-Emq?4R+MZh?6SW:^)igB[G$dQDSZVba(q -ji-ASH!r8)0s\Hu\sCe,+X2F^<LO3q\-$d0iH'S,Gir#UoT'Dd>j+4K^9t"3ZcKGDpZtc%QVcA) -A*q.!Dn:"KEL__2[+ndD/$#H-%tm[_r"\PWRI#;S#QBV/X6X_G?O;*9nTU#Orr@Y?r'\<.n6VB" -i`Z1B$=2mLiZBc\BY;#C%_"Z843eTt\'#W[#g^XLoW%g_pq)*<Kq98/\,99ZTDXnK;<ntmWW)r% -HmAV/G=hK-!/,M+r@,=][/U-bApdna!2<WThu#&2rr=4o_8#J<?#.A^pW*4nIhQKR?67T#KbC5a -Y,D5kXV[ULo9h_Nn4>/hmHb=25:uDVrrC&%5Oh885>1L6J&XoQr%e22SO(="F>`nVrr<1F?pA:p -Ijb5-.DPMDf"X2d,a(_EpTM.mi0YQ:n]$.L7p1bf*Y$Q17q2>UXX*X)+TB]3jSM*Ta:lXY,6:R, -h8mVVr\`WorrA"05N%\#rrA!-q$6l5+4U1c3FUL0?;*O/HsITh!/jq;d?"-p#QFcIdf0<abkSgM -!(=02^\CtCr^3mTDQ!'"4^s<>J,!0=(OtY7G^'/f$UOdmaE2pKbkSgM!(=02^\CtCr^3P=egp=3 -rX+FAphUshOoGD&QG<8EIuSmDrr<E_ipZgYcOTsTiFkIO%_k,Ui1V'd[B4o,HEG5D1lGWM;L<1f --(VaL!8F87jbsd(`6$"0h&+F#lgdgh^Z7_r`uiEqXS=aS!$g`Xf=??M4@bO`&c,So+8cbaj7Z!l -8`Tb1n,EAWRf'f9*$2fZoH4&=h;]S!kb#1UKH;0'2N=nSU@RBIe]3M1_]q+.a>*XanUnV=\];C4 -?/V3%gQVX;YAa#hqG3'Bng'"hI#m@7ZTA\o/U9;Q/AI+9!WN-,ZbsEdqAfh@!$Tej!5ctT]Dhk! -ZbsQQ=qCU"YNiLe5F5/JUi(q"U])$A`S^M<SfRh2_U*f'*=(S2`S;R1[@SE=!5d*4nf8-4okaQ$ -K3seVn5.I,4HCH]!8#.2qF_9HM4]W3(Nu<r/+DNt!4gI+nf<0qrnDaRWN,sISh7J'[+g!R<0CpB -qabWhf,Q&?`!.O?S$E#YFCR;n)6_&mD1D&79E)XYr?b&$4puk]iii<-J,3,?/*Ja/#NRE.^]"Q8 -a6\<6Ok1A0rrAg#^E`9p"9O'KJ',Murr?O.!$1u/d_BBi$/=[Y%s1NQ9TIf=Mn/aap.6SPA)s$% -ZgGTMqo>R^X5U]$J+0FAr#bfV52XAfrr<@IJ*Z:sg<Zd4Y:'>MKphITreY9CJ+0fer.df?/C06h -oLh;.rr@bGrrD+@rguED%p5R=TDfU=`S^M<SfRh2_U*f'*?XdW4tcj8d4FeUrYC.d!0HCHegR^L -rr@b@nTXthB8;!+Zlf4$8,OpaMnemW4?NQCKqSGGj>m;6MCZgK!9%O;?2jo!=lJ99/I2:U+jp;i -$T$f2r=[EdrrD"k5PYe>4^s<>J,!0=(OtY7G^'/f$UOdmaE2pKbkSgM!(=02^\CtCr^3=h=JEI# -rYB.chteXj*WH,Vd!tU,+7QU#0)kq!/F`--(5)VeOQZet.'G#u!/6j2GQ*G3LO\g#+8gmar%-0P -^[t/]49#;7T`5#Q3WSi1/'7ekiF[ICrrAcriSXPb#QFcIdJj1S1ZIm%'$h'f!9%TUq$qp<@Zd06 ->k),trr<E_ipZgYcOTsTiFkIO%["IOHsJ_X_Tr^Crr?Q%4Fc90!.)m(b@Yq,N6&UV.LRlrgJ0aH -mn]SXRSFj\P"e!Dr(F%aU1eb[QI[uUPkM@=WG?BN95mjC@W!?5*eP^HSk/0=Z)$-ZnK7ZCS)XGJ -L\s7(R<244Ge`s>nB]%<dk,H[VYEO:M0r8d^s>'r$g:d>jp7?YT?D0d;A=^c!!C`ci0SbfLG^0) -HJEfNRIP%CHTcg[omK3eAVJ*iM=p2s[^VOj/u"mKdjl\WM@i]qM#o0";-nb4S(W6TIaVE'Nd_Z@ -eG]gMF_Z"kD$sFmNeaOt)OasdcZ%ua,J%u_#Dc*]7j<^do&Kd9Y5\Lq3r$H:TAj.'_)eL69dA]e -N$d*"ou6oaDf#i+EkpEpM]Ll%m*OKAOuYEImIHZ("X$@WnESDan,?j!Dj`68jo$Afg6_N2cp(oV -N>K>A4sO1q2P1EU9qthT=$A"9dc]+fnE&3%pJ.c8O=SKo'.r+b0LCZE3-JTtkK>tLrr<3SpdP2_ -"UFR)LV=8tcF8#S2iC5VoY!b#f6"\AHYj;0eeV=@h'k/87$5.-?q@#L+TDEtP1Wmj^?_B@0&VmQ -@n@o0'kC\i=<=,fe9u(tQ/O5H%-^Ynkgip\QQ'M$+LYD3%S,A(\Bj:J]heF2[bmN*]B^IYTCD$e -rrDO\/Q9Un_nR,^?PRhK`Ld]Z]IWM><me$,?P-O5/a9^$$VrB;73$9@NQ:.<1ea2s6"=8)/;%Ur -,Zi;VYc$iAj58Ns<;;S?MuFlE;o]Jt6LcW+.bUWm6K:CL547B,-:$!o2h#:!@ZOu[XJ@R'qg`%I -[L`]E!SXM[Q8d]d?e$HP`5\$H>d)^VCXKTBiFCu1paK:ah&cIeC@T>u;U`QWW<]b*3V6OPZHD$. -\Nad_q)I(hm_L.Y]N;*4!5i7?<00S;j4o.:T;hhjnVZJDi23Q9fRq3%J:HV"rr>e0eaGK<*)\XV -U?D6on:ck7Zd#ECl53u.mdK*T8Q?H5P"CFZ#<^T<5N&]:!O*+4-2/OSqLi/S!:dYpIu7u2_bUkS -!$*iXrr>JFIm'2`Ut=>iQORBp<DhA3>diD5rYY-GSC4PL_*KGqrWgg-n5FgsIN&0Z5AA^=08/ei -e9#uCX(W,X[upg<L%bSM!T9QZm9Y/:/UtlMZ5aiM2u\>CM:I[`%[W4L`.-i^J'L$Vg\+gkr%8@. -$kFOuH[LR_#31(^E7hg/#jiESpE.o[C9FH8WP5_mrrA4S;LUa"Q1h](:YMS]?5iTCiQXFD:@YEL -f]e^K8CmbTe7XW+@T=^"84pJSE6:]rO@V8!:E9$4rrCYXUYc'kIL(0c+D:Qici3u5-$UIKJ%ShS -?^^i&Q#A=<b^[N=pfIHGIQd]2_EV!!!94cC_dW=ArdfM]rrBo#;uZjX($`:MJrC4+?a:a#j^7N0 -IMMk_TO3b0n;l*!!;ONR*\RHmJtW#]n.)uURBC=o`f[4<'qX.N6,&(a$ipL36jNo,7XJ4`Ql^jo -)o(=9I"'n#+<V)N$Qo<p>5CE!am!D^hlBao.lXAi?flWZ^,gLB51U+@mJd1U;pX4AiJ6eJq_TB* -pci,X<7PL//[!eSYdf2hPW18*cnAEsf=cWVKg+-0qc1lkM[`>]J)f0k[Qf0^q>;_1p)K*J\GCR( -_g%$&d`\tHX3tjf<:9KFUjO#ub7VXpXHfD?^Ee9^r!ND(4>Wa['_%*Xg2Dum>C@F82DKGP;NV7s -+?N_7+c!QQ)X>)rYl$$O!'n:?rrD""WW)tgMWhff@@r(!$7>tI%a2?[4/I+F*eM'TIgYg4$H@S. -:>OgiGuso%+,,4.(ZXEN,P=;#0h;."+,,4.(ZXEN,P=;#0j^o3kU=7='qrou=8XruKn&;&j59bZ -ofrF1=M?`o!.oh#2u%0bV>gOOBCS`PALt\$T)6DdKtM7G;S`Gl+Dr?)J_0!@mJ%`S^*s!]K'Y+> -AFC"=!Y:3+L]0m%f;"Sh+c=9<_piNP4)*htA#m0t-!!+'GL-9h"`jAFnZn2m>\&Esr(8V%rrC,_ -prWI_al<MU4+ktB^]6MY$H'hH*2/WK5I$E"gtVXFrrAJ`kC?^+9O#NJM(<U`rr?sZ8cHc9"7X%t -1.)LO6dq')L;&?9$fX6t#lJ,XFZZPijgVV-o,TE"Uq)nJf&:+t(1Z\3YFg;SrrDj@=.Z<jQi@%R -_-]c_bCD85"6"V.T=+dIIs%gfVI/mWO8.c3+.Mf`r05ipnU?;jj8Ku2_MeL6B9,SJodB$Sr*k`^ -Cd/:,!73C>^\C=aJ,Ech;eQ/NRTp@h?dWQLB9dta@JEq'JUTc^!5^s!rrD'nahMY1#t#ZQqJVDA -&U,rn&CeKml@3fo9(e,R6!=18"9&ng6N[S[dXUHbXqA=0I75MoI-uLBY($JXF5m(gJ*IPirrC() -WUN.M'H?#G`/Q*:rr<R(igk,0.?"dWA)WtFG`k=cMAB;bg]K"G>S1=u?^EYH\c2X4.N&,J]LG0h -r[R6*TCq;W?_DBl#iW)U$H1>UD7$_'q4+KHX,4%HV\O&ETZ?GTiBf;A^E2S;`;NL3!/seT!"F_B -?hss$p\t4!rD3FnN)uu+Ck>A@?uU+J?_4Ug\t3"'!"F_B?hss$p\t4!rD3FnN)BTT%>WnLq??Zg -rr<?':]CER=/p7j5fbdl*eK</nuqh)577DjcnEGSpdaV!r*k<U@JEp4QfI!$,P=;#0j^o3kUE>` -_!ut@+$]P@rX*l=J)Th&FR=Q]eoYap;.MTZ\cq^=m;@okU'CmrnA"l9+5kJ*Fo-S?7G"qa=&QWc -jP&=$=0kUReL]HT@O0o3PO&a+&cVh7V#c'_=g?HQ'$p+1:\2PG^[Oh!&,[+LiV*F7e2bSJ6Z/ss -C0Vj7Q;@IQcRs**.s/J-I&sZsZ,Wk(.^q0?M>F*a[MOWe0rB3fO8BU`5Q3B1rr<L`iEuEbq"Odg -#lRR!!/t!Y.cZ[kRW),a5d/HDW^i?S!5i7?=8mc"4oYN!5?%R^itR!\@JEq'JUTc^!5^s!rrD'o -lF7meN"83J%TD>Q`[r_#a4nA8/Tpr/m/I&=bl6&<m^2K<pL@j-M8'u>G39`Jj!-]h3>iOZS<>Q^ -m7O-gJa#E-9l=&78>f?!JiZeG9clV!hn&4<L\r[\H#u^XF%,VQkDLq!h[XDP3Wa)?RU,=11Y_`W -f'b.>D*4e/=$C@QB2+&i<B_eiO8('J`4I[Z$fa<eNLh-AIO+2b(tQ']f3IgVg=o>CWI9J<mU9=6 -eWM=iZF!`.@4>$T^.Aa&Qa$JiK$AZs](jPI0Bp1fe%@d$9m]gh2;"_2D\HJ`>3QrPgY:LgR:lCG -=f'o8]L`_sDg@Q_"#]6`ZBrGcK7<lNi1uqZnAg+X1LUNG[GQ_*HKFMII]%C4-A)\%@'9a^:Gf'a -jn?>T"EcWN&"Qg==D7;$;0kB,aiEsqG9(BWo#mlE)ufoS?]"1m)LQVcT@a\JG5,.trr@g]%s>XF -[i0A^Sea@NT65'dI;s$,RrEc9P':#nPhS[P]t%FaI)K*Wa8Z,C"T>.oA[9?CrJNdVVeR%/7rNgZ -pu=`Ndd8u8RWj?tAML?3&KGWJ$iij6^]+9;M:T="+7/CR]a)R.T+U`L!VjRNO_K7he,0YhGB9kN -G(S$-i*.DZIfBDjH!lG$jn%SP)$#g`@f;$GD>sTg?gpj<%i+ju^cr2+!,HpWL(h[IJ"gWqLVo_q -C*Q6Y.jEfg"3ulM5fFjbN5PsH8Dp!MI.Ef-46ulIr5@js3)bMgAT.0IU&%XU+5unE_N0;?&b*Kq -g0`\2G=T$hB=UI`QOaKT)`j"pPp?jTf3AeTCR"T7nL8oBHl;F?MpfmF3BU68g1nLY?b^J+KdGB" -f7#pklG3UB33=YhcM=s79fAM?>(psg*Ih`%!"&YQ4pQ!9pr>uFY*^gd]R\%D25Sig`(dfnMgL7# --F]NbQ'Ndf;pg;BFN.^iF4R%cf[1aii(r$U_4M/8($`LBd4@.*4X48H*D1CT?VRQc&k[^#So$dU -2j-p8!U$i0;71A\BZ#9FrlZ>`ppKU7a1sa^LS5b(dXKD^lV0S*D)+g7XbrTl[@5e/QJ+m<Y/c7D -QQ-TDKtM'%#*[:P60mF9-Ek.un2C0#]sKf7KHCH31[kq6^6RY!#O(l-%u57/bZ:$Qi9ZC</Bh7R -B6Im!B4>#3R@'9cSsUtbS,t-'S5YZ83N%&VfHcd'aZg&-J&C.B.V&tf!5^B"ref.)lZ&"HYEHU2 -rrC2K4t;'7Y6Y&bd];\;@g`.`rr@YaO8-iQ,l7:Zhs(.@+#d3r='qE2n5ms33R&rN`RmEIVWtoJ -nUpg4g&D&05FM@LK`;&C;,d+RjF!s3!#[.+RBP#qp`mZDrLNWN3'Znp:&b3hf!Y=m?_cNJ7rS2^ -NIUrI.DPMDf"W-mF8ec;rr@XXU&+chN'HkUrrBOgqO^plJd"3!pk:;L>:n1_<"r1u0nk'YrrBl3 -n:,6pDh&AO/UMur+oW5QSR7[In5MXJ4<8A>]e+a+8?^,tB)_jn$NC)GIjTWLi8=HnV>gO%jnZjj -kNUF0;#^ORQ2^jTB_lXPrOVIt!(NFT]W]gLpa(FfRQd5@!+4?-qD?gcrX+.rp4)c&rc(.pnWWr? -OT,<aOo1X>Jc:n@N.5#7ri2"!o&rt16VBu+%1Gp+i<I%CJ)I#mnp)98rrB4qrrDmg%=Y^7!3aLO -paBeQSk"e?!:/VTr?[35)Y(<97+B!;ir9#,A:DGS\,;79rrCZ[rrAl`nU+jZ`_RY`qVhGS"T1:Y -O8KV\6YQK"qDIU05_#EO^K\J2T7?EEh?a,]Y=JTmdB?mdi-5*Xl[OQe!,b<]GhN)s,.\lhoD\f- -B<ooR(&^=G1kcW@T"GsA.&>]R%4O9W]`8aEDX#""QS]"&U5C?9;+2i":3a_X/JQct.*9OFbg#[m -_7&pAEd4e*M!0#f[\F*XI0eZJ@oj77R_;9=lL"D9d\0RBnD`QnRlZEWQ2^i<kMW\q`L\"kJ(.(4 -r[PL+H\h+J8Rch*3<nSV3=HF;BVgQ^<rUB:<p\<5LK>!eTCF,WWb_2J83tOG_53m70`f(aMC8J% -12^Pr#cH-Ihs!^hSe(AOp)j7(5APb*P=P-NiLe!e!$$7(8[XFYRo@aPDDaC*j=DK+ja>r7ME"k3 -\Q6a<?CUG6i-0eQ!,'U]>PN9TSeU\_K7#n!T.<[aFQdNmUEno^OXc<RaZWEu?T<Me?4cn:nZ1]9 -U#?L_r&a\#U$8fG<nD3YA&M9hDKKT"cUNf3hVZMJCP^A*D\k)O$*[Qh.XE`V9CZ*W;t5(K0*bbI -r\=3<T_PhTj%S)&9;lR5OPP/&bI*LXmj4:Q,*2*WkTL6V1k`rJc=S##Vsrs&96V*E=4^6XqHZks -K:LE2::[5N_X]^bO/=<m5t)Jd);r:!;fDIe*uk4[gQ2?#gK2%s;-j_3!!P:\!0\Sr^\t\B!9np> -HcpOG!JBo@r^i`<^[)hZrrAd^^RhJ)KmkM$aYWH'rIZ_PoM\i_eR,BPC%0aS!4RGVj1)#IV=XWn -g9:F"Bj^Q"J+RijgO@=1nlP1ml\+0l!NmeMrrA*3/,m5Crf3;VDqSe&9)Y+TE1?k-5W/Joi[=Y_ -Z/=Q'rG@)b!0_mSqXORc[\$G-p%goB&,o+TKKnf4C&\1-'#-C2HMnr\#QFcL6c'r=#.4C1d0X/3 -iK*lTDajJobSaIPq&O;d;.$UMcr]7Or"^sb:Tq\Yp#0E\!2SpfZ8MF5rr<4\rrA8KnH]#;=T8Bc -3nN24H2djh=8j$3UZZlkrR#qdk)Cnj4LIEMp0[b=*E)A*IHp6crr=*DTDa*irf3#<GQ.Y,p$dD^ -rrC.;rnWG0/)Y@DP:uiSr/ppYrm&:L5l;As!+7<1r?k5(LI#0Xm-MXh'GlA7Zn!g.-VE`VirbfN -e+cf8VD%`9om`@9;AT>nRTe)$$M^Ou$a9R1-Cs,Aq\uZPoT&LVeuss\i4ApgnnHr#rrB=8g]%7E -mjm/O^\JdErr<]0cSmf_!->.'ISeE\($Ko&[M/YtrrCeLe:*F)j8T,I+9(&D/,LFg!6H_'rrB:1 -^\T8aqFgNfrrA77nA"pN&,c[4k24hk!<,PikP^+2rrCG#=41H]n,/[lL&V/=n:0XR?c`iX8$N!n -*.L?8Gk:o,Ce+987"0l^PYc['?dWQL@8o?brr=8:U&P+!npfj-YLO-srrC-RW.3F3TDASjBma^G -R;C44C;/-r!.o:l!5V7>,PrF-'@f3&YNVQ'eF,7(DI$*be'\GW@q[!@.5)m9fnGJ\@#fREMeUN3 -;sF6TI^A%"-?M"#3,d%TPJSl7$^t_s%?!s$Q;:"\op<J/n63#N^-;'eVNGTOD](o^FhAsB*O%i; -):!4N4V[Un7fNIDMtg9Dd6'_8q_8$Mn]LcgrL3`djL/a:=oSKo7$[FkormEBmu9+S20DZQQ(%+& -I@#eY>muoQVhMp`UF7QQ]=YN'jH%c."8K/4*;Dlqeh*Yc.t(1K/n7I<%][Yg"+j!]HP9Sj`W"0@ -T7L;]+QNGI<rW0r/Sh^2n(,6V^t"]B&?.hH:&;5E]fBCJYb6+q:cb'2.U+!V+7NHPq)q<alj7>) -!419-rr<1jrrA:7r'*>`FW^Q?h,dVV!!T8"!0bp%rkOhLq`T1Jm&BO?:YCZdc@t;WFL9V1d(K=c -D`NA\o53Q@QO;B\QZkfeA%d?O:2u$s8lBh)PQ(X2=n&qK/R2%r$5?M%.AW<$cedL5&W@6HEh&$b -e0"0e%8[_!L3?Z`oc.DtrjZ%n+2K%TDt.JukCl#s-*#Wii_:cO<,6W+0L09),q']7G2:fr#'&!k -i)j6,)X[DLF7l'`L3!d+0pX^;W`s7eNi%[^Y/A'_.&)5!BcN:13h!sX%LJrHq>UHo$7k+AAflXD -GD1-'LE6m!R<S03=GOe4Vg-5>_;WRJQ8rLIDjb"(N+BjN<EPWqZUDH=2<:D!:J]Z%i_Sp/nTf5' -rr@]oZJWNk"`)[J<u46_Q1`qDL8B57LWT.Rk0DVd8rknZ>cB68!U$`f!.qjs)E3S(B$ED2e:&3@ -HstPQf&F6f]Jg&(rJ:sW2UKcldbJ/>Gu.!>1G`Dp57"8lKlQ"V=2>DurrBB\mE=Gd1W%uVD[^m> -`SLa2f!MKI?$>r;-*d&X7GJ\5gcL>E9(qWdMtb#OI(Mpq_S:CgDm0/(J'kQA%4K3/^Kt])W;6bm -W::CWFP(sSVK`/<#MSsV?L\A+gKo,c8XiVae)=M8RBC.(iOFJ82sg(WLdZb/O9>'[&`eEZHk#s_ -?[Q/L--sJ)*dejQr#D>?(0:DanC?pn`Pefi#b";Q$`"A"dr3)]jpW6t+H#mMg2l2<V=CVFoItN2 -`)?@t`]=:_C>L#_f%"Z%:VB/<#"Vr+/2B^@Yt19\A!Qbn2V&rt:Z0"_-s+F%AhO>_Y?UsrIN/&7 -i4Zk6ir8uaVPSXBh:nM-Z+%8-<OAosq5#b+QHJ9e#<8UBDSCI7q0<l:P/$\#p.+KFiq<(tn/oK8 -l<%6S9<@?cGFr?Q!F`A,+\"1/*!K5`N-5rhWQ6%k=T/El<hJm=_&>On["nmoQ(_>JVqJtNI&LL> -Lq,X<.Y44,fbLUBEc#qSVOo?Q@'?4&!,iD&-c3X)*f$HQ)Sa3T"+3)u#EP[HdnJ<);63sc[[M:m -Kf<(`gcD77&isib&me-S"9dT)oE@`7#KT'o3@h-K7A#V_Ym5kirM`$>RbCPlHj?Y8h]29\!.8M3 -oj8X48Tjn<li-r&kcLk"IRJB54K/I<D9uRe\Tm,(6r*(\?FB:Sa-rX:^Y*8Y\&4hp0PauAdJOHT -6/fLI7F@rdqWl.)oWq1BLP=ZPi^fc3)[K+aib9]0=fmuJPA4>SIAcQZp--lRB$Z'8+RhmT4@.tr -.t)bDehrNU8!_k'6Ghn`]:/.hKU=lp,F3ND_oDHYTssSe08Z=*T7]<OHj]A`JLtas^C+9@*ranq -nE-jK:D)+KC\S8O]1FV"RQ2[2no$>)+IC?:G\tI'F*DL`2\u@.PP^[&A2VUZ-iN,>)f8s4]0@s2 -f7)!%Zp0=1C/9Jn:Q<">pRg,bWL>IenfK4Dc?NrG-b#KE+_?OEUlBmMDF9"F$0f*<ie]c:iENEZ -*@"V:A@C6N*Ao'gWV8HWa<Yk+J9N!;iD3CgjaUm7ftYEhZ>[RM0>RQ#NqILR1$>(OGr`CG]ssYH -T&SaB+E!?FV34:j"j;u/J,o'3PQ(XKWi=1cq0"*RI&i`XiGXHX(p>JTi26MS&U!d92iXuC0>'LX -/Yg4%C3:Il,LaDQ,+6AX&!f4Y)#j%bjQ#K#phB+g\&(pujF>dHL]7?#f8tA(:k.E,T+s*^c\:<E -fCrHSI;CY="QYGm6cqXPVmSbc,_$R/!:U?5rrA5Ji8=;Y[uMj+rrC+<2YuIOgA_/-?9Jc8^<<Rt -% -!N*_pBSnD.3oj(C^ciq:E9c?8[$BGpab";m6.9W812<:F8l5Y2c]ZlN$%Ud:]+)fcdKHQJ+8Y"rr<JB -,NW,+Vu@!PnUC)gn%fHFdbhk>2=W_%Y"LLZdI$=sL,*W5`l9d[);I.5J4:AsS:U16huEr]YL28& -,J&O)4DX]lkJVFSrr<)%C[nS55NJJup`t=)isYkeKFds/5H3u3p79^B!^76E=$QE?@K->LFMI=o -g7S<V5DoI@p]Y++!6KBKTOEAK=7rlSr_uCPJ&>&sJ+Q;2/,oV-'o2eh-.2_m%6^]j!7<%dYQ"TQ -<Zh7+?EZdPSl,Lf%6^]j!7<%dYQ"TQ<Zh7+?_.2sn5,/]bMus`F&pe'd<1u]8StTZfkPNHQSIJB -1.6$GK@F=j#IT#efB&(k'aXg>`aNXQO@?"Dre^op,k7B'6nA1Tr0dE-K7EGUQi28tk7d$Ir<WE' -Jp2TX^$muIe#2I"GR)9\+cUCm=C,]Bf!8L71)%#4/ePBM+.!`<mKNXkFKa1Ypa(12m#S%D!8%2, -rf&f2ItF<`4eM\"J"0<_HtE<XOX*0WjF8M#/c/<.I"0,2poj\tJ6!ciQV7>Y%6^]j!7<%dYQ"TQ -<Zh7+?E?HPQG9GpZ2D+W8,P4;VuH`bO5dqR!EajB>p90EFZ^c@[%A*/rrArI&,o5*=JThhL(*X& -phAPWD]]9L/"C8O>c^0c0#';oD8-ZSim6>B`O_#^?DjO>F#5/qC']Z;"tegOE/a&g`^Ug78(,.Z -EUr;D^EnBfTmuWY*]O*!YD>F8Q5][:`o$S*;Z?a#MuNcKOo#Z@hsrb-rr?B_rfn/9nc?aUlX-K\ -Z"M+Xrr<@Sb[(q2UA/`u'3^FIfp#h-p9nmV5OTTR$f%Kg3c_!X?^cV+j/MumotUJ4q2b;\mf[,G -I?FC+!7t;UL@@;(7WlJ^rrBMQmJLc"!0LP/qYC-k[^,B"2"mjI!(;n-^]"79J+?kenC-*`r=V>P -rrDft@K->LFmAU#o_JF3Gt7chp8@oj7$$?BrW-,Nnm)LoS^d3pimN3UrrBhb&,o5*=.l!U%jjNJ -k,$,r>$m0&*oCG2rrD,k:\\ZV7.g7KnPj#tSErK90"kFb6u5-hJ]HkZOFOW5`D71MIaC8>Je&IZ -cpJ>"FTd^aoa+VC;0*ie!+5d/J-C=-)KD#`*hc?B>#&gMekXd[_h32'Y7Od,*YfA/&pJ*bf#R#6 -r`fDZLD`E\K#F0N^aQ.+@YT%*<1!$mcf\b]H2J+?lo;NHam/^?kD4@Pn>#u!/$:VC,<^Tu\^ -qN(!ti%'_Rjghmn_tFTdZ8$!SNO36$-^%'i>T=L<%3?^q;O'9q*/QbcSaYcdEL-^ViVIYr<2ukA -g<hcnHC1>oe(UGm&jM9R!;H_+rrC/_J&>&sJ+Q;2/,oV-'o2eh-.f3F?_SVDGt7chp8@oj7$$?B -rW-,Nnm+*Oe!c\BIM.$0!<3&JQ%je\Y.\G0QTiEQ#'hf@m5M#WDuTeQQf><0F8gl$1&h6;Fnm]M -ais`6eDr@+$%'3e@t5FPkCNpVYM8ArrR7>B'`S._r'^(Z"3,Ys!ruZPrrAf4^BF)PEfCJT/*ek8 -rS,-_`R`#aFGKkNAoWrr!C#;-rFbUIm3ejbpa\mhIMD]WS4.&tq2nh4R,l*pR7Y!q#Ho7OjM;^# -12q`[^M\K?0lMjD+[&PY5PcsIMnl=7;oS>mjS_j")j41iQ<e/"*#JN0p8@oj7$$?BrW-,Nnm*@, -e(U/e&l4Db!;H_+rrC/`lL^%Gc7fS&`IC:Jc_<]SRKRYl)0H1"$o7]%H?B=?"V^r8:K)n'FYo\/ -7hhEpj0.2^iXLt8L&4\"`Q^d/rkItR;:PM-^)YQ;9(=cmPhIBH@nUeZZd^W[TOaJ/$tkLBQRT=o -Wika8pa!k]iboEV%.S57id%mM)0Kj7?f+t1?V&^UeKF?UUra%MBoR*50XQ?pSAHI[7_'q[/h>/\ -D1C6]:Da#cqN$H9^L[?E"b+i;:8Qo43mJa5`O_(m[e`\Ec[*hFUj)=MZ'c\]]/kV$kGTH\rr<2d -n58[&_d=,2Vni<4%=A2aIh4HfhAagQ[[+eh)U?h1/K3+j\ap)76qX*hcJW&N'o-,]DmTHDd_@Of -^NqX+?U&c*fD9.,Wcnqn5F"?05W_I`1o^g$o9s56BVLAo4;[u(CiT=`ptV(Rq@ERlgK2$Bl!=o# -!!P:\!0\Sr\K+2mHLq.:0D<rPQp)oN!4_M1*<-#^^#"823WSA-.Bl#G4@D=hbFb^/VQ]0_^NR=; -_soF.4P.g+p^kFCST2DT(I<rS9q5ekj4:sOIkTk5om[E7)ZKg2n*5:E'`<'eJ"_3irrA*#/,m5O -rr>P^?+91.rr=?saE>E7J*7*HI8b-jdmIsPgRYk?O#fttnZLpG=ulAoAcDa8-N=(m%=^;2M>mQ# -/9glbIp6;FjPS#W]RT=He=:U$-dob"^&bH&"?[em"<AE,#M8\V?^r@$7WL^hJ$0U]=2DD\,9MTq -)*30E$5P!^[ei%oK':?%ns=7b*sJp.j,DU5G\$gSg+.J&bl2"m\!P20/]6(8\9a%jI'8DloC:`\ -r!0k6!9355^*s!]cc:Qcn/h&u!/n&6%qtF@%oH\nhsaa_q*(tnFlp]a\,ACjI]<-M'S#<+^d%T) -GQ.Z^fAtQ]'n%r^rNruimFK`*;>V*"o4!`aOlS.MD^:Bkk.^<%chSKonA!3i42g%EMq&n4BjB<U -7!H(Hr>cnW"$D4-J'[_eH>`2WC'AQA[i;[<k/[F?<7hYi^`X%nngiXG?$=Ptg+bggHjtSqN5+o+ -nji*q_/J%S^j[0r45imppV\to?<HFbOA?aS9ZJ?oMTUBS`"?=DnG`LJ^PDe;6Zj`,WC<b^RjuWZ -=`tDa!:Bs9fB0KOIj$b4?YI_G'44<0_GU*2>pmQ\_fGO$1_W7>rr?b'1Qlpq2Yh/NHIq;l42uNH -G$u@*80kUp>Nh-`-]XHc>bK\LI<HGIB*U9\_ph`fY^B:io'tWXO8=(4rrD'C6pDB*`Q*LKrr?C" -J,ET$R!"tniT_rQTD1%N"8aJ@E!)=(!"!eW"-``b*d<nAa-H0brdHs3rr@TDJ,ET"KDtoTUlWMe -q_2\2`%q+"9/GRsI=k:PFHfAj9>"fV`,3M?F.2iJBn+!r&+Lmic2Re!l?XP>kC\X?qK/IDr,LHt -rr@!;!:?]L5=[m,rrDd(rr?q#Q2QdD!9BC$*<-#_>&X?Q"aq]o0)kpn_"_$%%,MD>r2j<aI`J;" -iE'@K)c!F]fDSZ/YG(srB9@X,20a@[D.]5f]#5r[=M_UbIGhVE1$EEK,%'n(O8.c3*tu\enl'!^ -`VLhO@'IH-;XPU#\0!*XL`$"ZJ4LdSmrgqhH9ABg5P+F'+8cAUrrD'EqCN]2n$`g)<'3n$LTg63 -Rs@6j"'gVHnONS-49PT`JG4Qk>uC,3584%sY]#HTGRnM>pL<"J38/HOI;<"n)YGG(1[n`ond$G0 -rr@1*T@D>1GkS%"h+ssA2>W)dJ+=^hifE/Cp_Ef/,qJuq"MZd;+1#>PQH^635Q6J%^98Coi8VII -rL3`djL/a:=oSKo7$[Fi:el9@e8RpfpTNPi-3!slO.uR*otE?a!6F_trHhoJ<0,FVg";A\;*GWU -Y*El(!2A&V9uGI^Mu40Ji[]C!nBo^_n5@o03Y*?<6#pNCY[_k.`c9TFeTkL9J*5k-5PPb5rrC$i -oG1U/ktCq)njgPop`o!HgP;`'"EVYe$d/7>rr>8)!WN/8Hb]P4JJZ9HJ'pF]rr@TDJ,ESr)G=T2 -qu-strr=FK..5e@Sj2clI$kkp\'TUZ?Vg\%_-RdY:YPY`mH2ih:c^b:9nGDn\*(dA9,%*PbRsg) -*0:.BW3=o0$iVjuYPN;>!;)K<G[LGBgblk0m!nZ$^7OD83rS7?N(O$LL.(fCE-UlLQi@&]O]UJT -!Q[BT0Lr6oJUB<Llf/ujiQ$`?CqNEB>1qTn[d_*AG7:GbCD)=t#=&7j^QGL8*?:sIW<Y&)hFI41 -NB!<Q_dU*@op=a#dhQbno86A[J9-\$ao;@Gn&/Rh^CY>VjL*S*FTZD!-&/eU9W=4&4M?\-:-$Xn -YB(9Q;#gW:i#Y,IhXCIEMm'h9ZV#Lt(-&m&BhJ4d-Y)YG28,f2dGF:/`d+D`J&(T!V+oA-/@kt7 -m/&ck,F("8G5hOrSGrR!1%/BQ9(`W[RX1LsVc+jK)j#(h2C<Ho)EnRSHfO:>n%:O;CMUKQbLI`K -Sb2c,h7F5"HoE`?9amCu"%MS.@P`U%o7,G;rX%u]^\1"aQDNR_%Dh$E=2l0?U1s??pPJf<H`u`% -B+kJR<4KT,7udah+"[i&E(J%S]PmMdrr@Y(r+YY%m0a09Dh]>=oZ\1LeNcb\Ld)OFR.S]19-[gg ->75&+CWVD\r?$,:SYtSc%9Gc%O4e%&cDU1[6hoX1Dr[_$nH3(0dBsE7G\Y]#LJ%'eNg!^7G?S4J -?(HGg(X8B$fi[n270S0jACgb\n3$FE!.Yea]ub2iT6L2nm2rb)J:'fFCC^^GLVoQMX5_=K!c($T -CZ2<Y&H;`=SSCTF=Q3AGOW8s3E8hb'@WF6EjT,&lJ:HLO+1.?-iMZsSq\o7pmo5loXe5,ipf>Y9 -7%QhD,Ehgdb+Ve*\3"mE#Uf$;$tghqe%L3@r*8_m^i,!8)>/p6ME_,*1&OiGTXA&tid2,D_nt-) -Vf@(mnh$d5DQ=WjQ7sRR0WHLQaSXBhD9R&qWE[(9!6[^)Y88h3k]ah7($co"pa>#0CW&+AV/+f! -NG3[:feVr19:6qnQ6JC*El7CLZlG$^jaIM=pkH]EmtDnSA#,\DK1WJ3=(RIc%G6M*fPgh/T6JKZ -#H`,9MV`&g]6?&ca=38nHNDpu;sT,3j7%XbN7q:GRAb@k`0qd'dsRU;3Yni?UL)f=#F5PdXKc"r -)N\*T:5-bc=<Ma6jQs$`'m>_omMq1E$;elc!T[>EbY`b!MtT!TGBf2.a,<,"2oTQsP>flje1Nk! -ESr,6P1iIp/<AQR$dQ":SfHP-Cs(F?=cV[^YM,JbSfdorHir?BMd@e$-\efe1%oVIrF$n]](#p# -C"VZ2*+I,`E@.l1!O\*L+]b"@A&*GIgh@V^n'*N!?Z.NgSqK]+l/^aWgAGf;6hE#4P];g\l!2iW -:Q&O!puCl09(?8Aoili__tqS`Ff!k:Q"0l[?r__fF^WA5^bW3W5TkrlnH\%pOmo]npR:ffF"O8U -@C+:G4)&RMGIkf(8<oaObbKkOc;+G/QC;YF``H53beFF5jY*5@5O;I(rr>LP<V<JA'CacMU[Ua2 -rr<3Qpk@`iSPnu?40.QW>$B\j.e2SF"F>;B@1aARId0[2!;Us31\?1p4;Zs8)=\K<1[F#U9RlHC -"$N6j21OPfTCR&l:]63UJ*B\XI>@h&%gMf'rr>D%V>gOKp8@ojaS#&;r"PpcpP8`*I!X8LD[kQ! -I:3nJ'sg$2F5"*jZeR89-:D;CFlWsPN8toT\&J[Q!#YA.!6$&(r@>`qrrCV"J)QaTI.^jAhsa-S -q)=:_rl-D%oU=@G3.?Mm?Z5rE_)";imf`P$pa`F[^*V;_/8m.`\Se05[&_BX0pjQ>'%"S^%ch&M -F2i3O/+KeJ+8fX]rr<2:6hUHZ(fP\aT?eV/qpY=o/U4i+!.ofM-P+OZFWa2XLNP_?r0O8[!/H2S --N=(>Mc0QT_L#5]!9AJ*[d&>lUY4k7)#jSkK7#$G!25<KrrBo_;uZjYH9^BHh[.']@ar0^T%*c? -q&YpLB<TK#paRB`Sdr70!+(u+qBT.trrDQXDhR$?0kt(j:MPCWO'eN/\)5,p)rfK:/#qo]"k:#M -D8ioo7jODKgG(3"#h^].NdX?F8`MW,!/)*d3;uVMB>M"U!"76T!3^G@icqk[U&P,//,oV1dIc>m -rk&11dAFZ35?dsUrX&8p=niB`#OL>VUA0@C]X-+_]XX)uO%I$q!EqfhmYW>iT1n<Ijo,S$pg'Nj -H[hP]dX5S$q[t"Dnir=%f5KnH?7p`cTYCg1pkM`Prl+8#O8P?@rr@h,Hm\jnTo2hK!5a(]rrD,+ -ri2"!o',N5NR6:9rrBsQ^(Z"C`Mn@G4fSG]ni\/r!.oh#-6W<g`C6bIrr>sjVuHb<oJ&/T^OTDH -YP](jr_FcYrrD`^#QBn(?_Do<n5"_R$3(!YMc.@OrrC#$WW)th4aqI$g3u!04sU'UhCR7MH/uNb -DrubHOl2B,?nLA:P`\td.XH[3d_?[i]Db4J^['nZ!7GD,`Se'%!/6<Fp$M`u4Lfm5cG*Sui1GMi -BANpo!3\om!7@uWOs?Qgo3\9-Z*3P_nE8c>m*jof'3WoTXgKYeAkD$D7DGBmR2ClFE3c&@kY6Fh -J`$#SXo8k0\K>\K@Xm'QJ*Z:sg<Zn"Y8I9>LP't$rrAaN;Z?a6HW0qEjEa&Li84jUk[N&Vn=J/0 -!;R\NVpFLXg$'IP=,d.Z_nj&#J'c06J)NPirrDUQ+o_OoK)?r[o.auepePXSr/X+2m*kt7WGeV^ -1&fUnno:6crrB<f;?$XEW@RVp:\Z=K_MKK\Hpalr^k%OVl?rU3jLp"Kr,gPmHrKRE`]BrTN@gHm -Y$Tpg]112S`qKtc9!A`"JiI-DkWh$#B9#de'Cao>J!'V8Jk>tBBiff>?^`u`rdR!-P5UUE!9DeH -*rc5m\YoH-kqmPXg'A[]!$%VKC\6f`G5\p7)>H/K07u*@93p%!oaN]FZaI<&F=fgUOsC=7"!e%P -!Y6bO4[C:+GJL]efno_/$N/5"`oR-"Kmn(?On@0=iudd[DhR$?0kt(j:MPCWO%9+1)rWaS$sK"s -'AB)Y!$g+fWVl+04Vd!!nF1@Lht/X<?hdE3J,G?tr&bqW2uO.gQi7ZPTDnm9cj-j]J#JS0e,69: -$c_)p3U6VEp%p]IN,&;lS,Na"n=AQX4@?*2<9*s,m8'APQ`nP=(#:21MKLr=-)-jn=$f1UK&hq& -,EBdY!qFn;(ggEpL[O"(VsUa-b!2DR+2Ra(mDm+_q'W`qrHLX.!2A&Z&b7j<nW%DX?bmhnYJSO/ -_7EXK`kSIm4gh(_aM75*l:_qE!(K?Z*d`ntMnk\Jir(&#!4Nu_2m791lS$WZat(IriS`T"^Z].V -^[RiErrDj9O8*rQ_JBnc!!s.5J^=7P\tB!&,M2Qbr:kV%'[(dQl3*@Y.3aLON#Waa!#3Nl%-NLr -1.<IM$0IFtBGNcYrNuP?l<Xnt[_*4BVbd(dj0+EQ[tI*&=Ms+">0PcHDVA;Vphh>R(#@ua6gYL\ -DT66#1FshId2MKGTD0`lLAZIpHlVZOVssi6_o)5?..Mb_XD+7@[(hLsHlZiEWhu<7`(WX#FHT32 -1/T**:iIrI^Y:D4n1X.sqc%@ZhL%cj[4aC%'jK>:-BmrU%9m#CdRuF='N.^H1Mpi1H&`Ygau<^E -A-;$+pa#h,LUD&O^+%QZ5G`a5e(4O!`L"U<lf(QBIrB)r&Yq+MM%Xr&+rb#_KOkg2Kn.r4lqhn# -p.t9]?[lGS-PG7oId?QJ5,M49"-+g"EQp?[,M:GFAqW!pU5CCYn6br>\,;X)NW0"Ga8Z-4mAo)J -W36F*!.p\iacQ;TrnN"q^=p9^\r$L(po48n,gXD9p'eM3!7=MJcW,H]^D/uoRJ;^>_3[C_.BE:0 -YLWP-phTm0gV9`Xgf*akq>Q*8=8k=hYPRrWqDqgI^La&5/,!?C_JfAQf+Y1a!6:Cjrr?BGrr>P^ -?+91,rr=?obPo"GrrA]1rb_0=r^L#YnOWYf^jjJ@O8X>'!8C;K#C?=jp]pg!,X]Ejp'.o(!7;*[ -S--HRO8K+[!0SMa&,QH4J*;QhQLMrnijYZ[cfPY:H$kX\MC>[]%qmK`]D`0Srr=FuiXbnTZ2XgP -Fg'I:r,2N7K#R`ian>F]rk'e3oUTdc]KH2oOfSK^$iJED]M8Ch]i"AjQ2^h*>+bb?0E-ulW?-es -l!NuBWW)tMZMspgkj";oCZ'SIrrA2Arr<*bV*#7f!0Upn!02Pl53S(+>5]u;+8@27r.+]Frr?CA -rrDltf?)G?!39J'I:N9W"PWkUO<9@plf-h%!'kl.(P9E_HQW-3nn7Qb0DF^WbOn&gmXGR@dZ_6> -.7[#/o_)*_`BWitJ,(qi%Y*-eD>sU3GEqm0HrL%F"kWbSP>:W1rJfCcqF>g;k7.FkaO5k=Qf`SH -^\aQt6h5th.'H"Y*O)10rrE&PI\ZOVh]MjuE;oq3j69q'rrE$i<Tj=7V>gPC0NZ\0ZL@^](PVkh -lgTDf/RLF8a8Z/19!:JG/MI*[K"dEHQ[e)S]J'9b?\A@Y6#-BiJ+>aXpuD2m'??a9;dqu1qBPVh -oV-udMZ/N(1CBi8J,'ng&,Q$arr>;AI].L`r^H3Ark7Cm!720j9B0?Sb@Z5c<9O.Xo_t_W:4KjI -:[2`g%i50Fj?UK!+3<d;/,i.BrX"$emQY<uq(8$gepmW1-%0+5CZQ)[YPq1,MtN_B!(9Cc=0Gg, -)rb6!\G@l'T3L>or/W:Vf<tVYV+CP$rLL^aK_S4>_,gR9qCQKiXtTKlrrA2qi@k'3>Q4]e[B@rm -TX)o<8mgOaP!0M>_&kq8FYloURdN"ua5dL'(7Y;!;K)F6=oSKgp$uR6DkR)=^9dh>K%#4kl:q9Y -?qW`_T"[lnNV"=:=7#^Cq'7?f!+'%3P0]`Y?hl4Vht?\-R+hF=_-ca[ko]T[&,qJjpo;'Yn5oOE -\ju^E6iR.\f"ZraUZ&'7cfe.F5M^:mZM]jXL\qfmr^._ZrrB2[^\SYPomM4]rr<2RrrA/$MneS; -YPs5-I:$?[E$tR?B`.l12LZm$rWGQF.'Kg9!i(hd`11hnX[u3JB0?H52Ymk=k:_eO[IVN!?]4Ei -n:S_%/(4D<^t-sRbABF;2oXAP@V2mN:UE6j3>)HA85_/iaBKg<no*/R`t@Xp[-jE[>5TiEn*giW -e$KMY1uAZ8W7n_92&seQY1?/Rbi712?+>GD6rmr39SR<=priPClX0-Uh\U&HIuAagHr':q_k.KT -f35nLi_KVhUKhXnmNa_)>3Zm%b:FrPBhWRt\iR,![?TiYp,`/HHuJn-HsF)SNHam(`h*RO)0fK- -k0HB&nYMu4li&*ASYK8sCI$*\m@oIr<Sk]kC%hT1@rXl3QIa[=gAX5@W7ni;>s0fg?oKimE!ZC+ -9OOj9"$`,U<<mCq"ZU!3!K'J62lM8t!9blhXT/sc:cS,)dK$HurN/6pGk^6*K<-nZ"F/80Se6Y3 -Dq5S-nAWDZDl_W05Nnpd^TqrNC_t$FHB!SpAe"&?efYWiPPWYX;Nkec+,7K3po0tb44gSs:ZL=9 -C>LAN7SOrq7dt6J:6VIS&6R+Yaf&H;0b9Rdh'cYG<(DOEci,Kq!5Uear+#4X_;67&mtmsi4B^Sq -'&33-9^sI+A,W:Vg;IT!2X:8FOrq&f`7"rkOtm-!N13lj7dh>W,g`H^3Q3EtlMSC+=5lPMEqFSR -G<E5*0E%3<rr?Pig$_N%-(_;eY<AH$k+d:&>XktUmH*HZf68u$CR'kfe&f$P:;tr!Ri@EgmGN0, -2/l$*0PTRF;JP;@.60QD,NPJM6iK"<nPBVoHnP`>r3Fc:lVOC$YEJkrrrC2K4t;'7Y6Y&bd];\; -71"V4?^eb!=0_c*)*+MRA:MHX#IjWDh,iiHIVSl__-]Ffk;8f\%`//FV)MEMDi>)'1$S]<MEdO* -=+p&A1+Ie4QfNOpc:L";r%%D`rWr!PIa7fbj$3$q:%/)^0%RH+`F#Ctn4.!g!#Y70p&>#SNc4kC -[BIT_*ImU@0CVO2J&WT+&:`I)rD0ORi.*cgQNu*#NkFmS%XM4L[?'EK-4d3q5.%[q(mmLpq.9R+ -"[i:iPJGb(:DT7gqC$iII]$9/O8K_'O4snDrrB5q:]1nVnkU.\r#i35a7<m.rXM#&df0<NEr=pE -oBFuD:qtqS)*bDjS^SZu]Aoge[5Ic,?`8JD9)ene1jq=^^TRS:oP(MP]G">l-GSg"r8N0lj"(-0 -KLgUEaSnm04G/cZ$)PK2ToVuA>5kR,+3V,,#M+uhK?ZH>O&0jQ6PC+<B_8LM?hc$Vr16E<qL?Q( -+8SV>I^P;lqH)aUr"LrJgEX`<!;5l#rrAk!fAg0q^\C9prr?CBrf\T#*sLR"/62]MYAaF@8r;R& -l+kPm\,QHE5B>Ydrr@XG8LDjb!$C(2IRoOkq:Fq^r"JPu9`)XIp5f4RUL(YV^ubRr$C/BBqP3Gj -CObi?6iOfLmB$"D+'L@HBkX^7j8#KE+'Jq6['YhfRKUW(T-GFmr+5i'5NLi%J*l5Y8,iQ]Up&In -^XY%$ODFBIp6>RWPDeu2!<%kFO8bD9?\WgdrrD"B&,nN`+1:kirr=8nrrD!U;8j'C83-NJm$I(1 -$2p7j*ustCk+DYRUs[fSB`A&sSUS\0ao;A3CjutFls/$>!;)^@q;28R!8fLqiEr#AGhrAdL&V,e -^Ee+0&$6[4['Wp,WVl02&$6[4['Z=9E[UuNPftb)aA`#;nIrqB!:i0crI<l$DuCO'qft7*%"Mt: -:\(^-59#*nkH"U_fBhDk0rsds*C#+/op=lklem-gr\)\aS;beQ,QXP'?aft7%@@&Gp5+_/p)#s- -jdOf\8+:sbqf2,TrrC$Od.,HY"<[IlCQ#u`n)F9hrrBMK^,Ng_iBQ_urNt:poq8;WV4t`!O6=n) -'i5B"V4rhI.?).iA[jSnidYY1%=!NF*ru4WV0Gbum!^>3oIJ[%,(79iMmn8g(YhO`&f!DP@hba* -Y@=/gBfBOfpqQ\PfR-WfeaJ;1`BGs&?Vo3?Q.DA$h89teh98P<[(ddCG>"uL:h,YH:iN,Z5cP&* -rr<2WpiEH_/F[Sr/L/3FYDP4;!$"Mh$)R/=XfUC5h&T8Xm&]&(T_gP]nK]2gCNWSf6pX9n\Kme1 -MtUf^\Wp"#m6U5p[Q\4$!",."GlIcIrrB%cf"I"8*r&%k6fAQ24D:?&r)KJ9e&=B:LsDa+`fm3X -.b=%Flo&f0gL2@^18YgSQR.N,kea?iCu2a-ohYMc!2O+&mb2#PrXBq.UDOt[K#'7+1J39"FN83! -+n>$]?\eX]B)_j`?7GF=MXI(Z_k%Fg-e3>gd0mNO$5[QZ3G-(B"0!DB2e:UC@bXPdf6N;?brWRc -p]p\.leXJn^SQ/ki\,i@piYR\(2-V@UVecOXrUej$OEPb-][0"cO.L8$(_5E#\K#%5tRliA*>4H -!#b%t<OfGTl`IoYaGc=r^TB,55Pu5Mr_/*errDcQrrAnheaG*>=+^GP_+g;H_[q(IYs2[W^\iT9 -=1s%B`d":VKCMn>8Y:gRlksmE!2>psSuVdD4t4P`_bUjSF8_MI3ct>L=7at4E-NVZXa[8.[7J:p -q455AeG0"kMfP_,[EJEMr-<!`p$@2#FLBkPb<PQ!m(_k>htdAV-WT<L8g&ccN.(^+jg:<-I`j_N -!/81#aPmN@oE/IG?6Mb\0ug`(hGX9tlPp(CJ*IGNbcg@k]"c+183>GerrBi!q'$jkrrB8\VuDKE -r89P28Ki**4CbR%:TmCh+8?)5pei.Ea<7#lc`d:d9)4MW.8DbdF!e8$RJb6n-Ch9m*GlKf?a(Tm -=6"N&(,,Y_YJ_OUiFDlfV!DBn2>H)/!!S9&nXWu/4b(g0Ih20oYIX0!C,rEWmI%a6+$[]KD[<GU -UZQtTr]ISQqY":p*?A$@%:7K'qA,of8[_GYrr@Hf;Bn:68a&7)pb*F"5'H#s=!H;rO75W?+i>m+ -V=2TODM\1]5P8gaYH363RpY^gnQ5[:>Q4]e%pp\P6&A,TJd)afI:N9W"PYo_r)?F2p5=G!"mbZ\ -%&$QZjBIOL(JcB-44B*iffqKGVpg(?iCZ.05n%cE#+RZVh@F#uHrL%F"kWbSP>:W1rJfCcqF>g< -CKJIsn6L2ZnB(YL"Fu!\0"1c[dQ?1Vpi8r<F;t3iH24aa#uN=qjV8Jt*hnY3e5r@(CK()(L;+e` -rr=MEGL>8eVX`NjgA]EH5FD:Op-8QWP#Zf-!+BSkoLp"lQgD?a!%.s/J,9'bq?pBL^Tm;6iDo"G -,\jXZcht&#o'b2Y^68G]E.;OS$Ohu`cCOt#IuSq*3Y`]]$$*Y!a/>X$I!+mt/g=0CF+/rD%6Z,8 -h2jAJQG9,Uc#B[(-iX1/HVj_BYB`A)"'=eQ`=*!,YK%oXGsCp'>132tW[;W2D4f,03WA;l5H1La -"EbFQ+KAh%o)A\g?`/.T;DQ<m@da&dG'G"?T+\Ur4iqW?<-KFj?i657([F<bLm#KU?FB?Zm+%0l -?(*DkT02tBob(?VqgrI#$]_bW`IAJ>,oVg\)b',)H*ceKBptW;8\s<YCN&`6r>5F'^Z:(C9E)b. -rrDmICUC5tp37m4#'`j7YUcR)k9D)>c"j\ihf@';8k]&^njgSpp_TT"3gqKRK@'3qXdV(q5lUi# -Btra%-N=(M-(k1_?R@-iq@D^=lTb.r2uK8K^iE2,B7]BmQ1AHr'mpVBqMP6<&QU"=PiHn9AGZ<+ -FSYnPMd0D>PM=g3o,D%Opac>3h';p3U&P,?CL7et0qRDMhS.S1=<kZ980a7.#lanGCL>"":I_+= -4%8Aj6i$o*)N^O,%%u)#>AMV.=8r9:2?*[;1#hZuj(nYpThA`of?+$mn4eYWZ/XX9MU[*\rrD`, -3r6W3N:UDRn2+BjC._+QrbVL6!h,jI$7RnBifkF5I;A//Ybnr=PE'A-*5l9?E6JeV.SU?oO[$;s -m9/@q'DA$fpPh&VgP<`)$N;7I0YX.9_k.Aho`U%8A@ICu@+6b*U2Lt:K#PobM_^"&5\ofFft74j -U$s#p]D/:>i/`V"&c=`NT+K,Ac`5c)kn9CQS\-Ne1WW*("f=]jWQF26H,d&XDaa@Ri6R<&+b(5S -3RiFDC#W@m@IW`AT#T>C37?d'"_9o>A="K,d^4X\<!]o#*tS9ln?^&_&G-?I03RckX5eo_DI+Q\ -:D9sfpHN=7@s0%OhH/S^pj(+b+8Bi6f#muoX5ES^F+4"%FP?Y0qIk3'S1*Hg;j?>F9FKUZVi9Yu -MNh!G.&**G^3'=b^-$Y,_4EX]8+=F4R\B6>M*<_?K&]K&h-5,AB$dW]/8)Z-\:Q/pU3hKRXE"'7 -kcHK27glT9Mm!TgZG1""GN0ILnDD7B$^X;Ca572GfepGa*F<G3XE@(r[$oG.`bFIn=+MZT@RR72 -V&hHT(hH7,k#^::!8%,]PL94gHJ;66q+p#%mH=!QiO4a*T8.`jNb-S6piZ*g:%4L,r[>m"Vkj/b -L[T?2m0GRRKTb6Z&C+REe`:BI]!:i.-t'+2HkQCk4B:FFfe;=.ShBOSMr7AEh.`plpts'E^phbZ -4?oRBbgBY[%ir_&6U%6KWJW,)6kW3@$H*PTS+^OoR_2em5=P@Fj%Vge25tt+pog\>&7=,2Ik]8d -Xs10+daH,sP5q#Qj,VtMdhi1n4H(IhKH+(6+8@50M#9d4>JdN$rEhqD4sfuRa#5"O21(="jg*?_ -AZ8mnNt&uq*7&O/9oBM6jmiSf+"Q\<GNE"DITsRM:ZS)(R1bC@]$j5(`O,QHU@PTRV=;N^2")9+ -I`ka>2%)!;9@RBSRp4'-Q@!tWS8MISFX:0m*.eJ"*[s3IinZ9()AN%F[Adm:7[n2&cF^a!96_Z9 -_,k]g$8Tg>AF`839mJ,a'Bf're\>W*fj@&72S#mAlT2GEec)7b/Wqr6G40^'4kj2qL&nrC9`@p& -!@iVb>i9rUTr)&Zp2+YjDf9c:-9&n#@RP#Pnd*(oSDod(S]Rb`MJmRqc\:6p]Gmbu_,Ge.pkIhJ -^);Pg^[U;<>A@&NO<pI9Jitq)8P<l3b\t9Br/Ko[o_88@:W!#?ppg;))>3M'T`5#GQ#g70Sid29 -Hc3JE]Fj*#6K0g6XI!*J]WS7@+[\!t#"^f=alAhe5@nbf(`E*gi%0rcQgI$4h+;&T!"Dlr^]'*\ -JA:TH[/U-dQ21+Q!!Q$jJY;p.rM"DWmgn`17_<4QKa\E1Vd7>c'"GH^,n!15g]K"G>S)3_kV)ih -\&/aQ-QWBi!5a36rrA&,+5'`SJL(6q_RT(IaN+4:p7M8#^2Jn=DO,QuGRDo>9rE)sgXQ'0(ucI% -/j;8k:f;!bB;Y"9r+GVb!:N[4g(jA.r"?3n=+brAHjA6i4@.ua%-Uc6CXYt=C)Wl`Z8rqO?lU]$ -,tV,Tl&\D4?Vl6i/,V-J*tCC;#Q90)5PX%^r%b1f*SDMEHj/+dnh8^Hn[eN['C`mKO^j\<Q$Grs -eXB'Fk^?5Apm$]^E*lMD7PIoWdr"@7+oSEi(^:*A(-d>bn"1.pEW6$$.GsXF?OQl6kbNG2rr<B6 -:]<@Grr<J.nAG`b_R].PrWk)?pt[V$1:P.3qBm<drrBobe,KE-fBLC!Rp82:WdYca!7=@,(]G*a -TDW_jphHFTrrD[h49b`bKa"CS!$%d5)-c'Tr=b4mrrD"BC&\1Qkl1X;<qp,'!(>k_J+ugnJ+:+C -&,9n3L&V/F;EP-_!/1TSrr=%Bc-Q/5f8VV**<+Jl^8%E;qI["1c"h-pF^oN[&?ufI5\),[*kt'L -UjqmVh[Da5S9PSE!"&Nur\mAtARC03j5J%/`dd7SBKu3]I(pHd]e'$`YZ7RYY+=!:DdQH-\5S6a -jB1#nV$/d:j(@$$VgU]=`c3aF%eLk4+^_!on4et(h?WO'm(]I_qWEgM.APdsmF*r#p8r7O14p_m -P]m?8F4.c!rY])%O!!n0Hj5)g!GVQ6`p"$#XmjLVO,#n$3;(WM5PX&^hZrpjL<)*4`_rof[hc'n ->I=6Q+$ml[,N:N7'#E.nTTk\DRsnXk7/m7AW;'[uJ&TLu(4Y[Y[/U-dPi;L>HnYL"U64@er$X-] -puNUeb23U^O8)ct"9/A<Iae;sNR@b+%'B$:re\[GrrDP\[/U-dFo#:p+.V+NiMq>CrrCG;n/)'< -(8(MFKDSVq0-l%daRBrMrCe!!r,RknAT*;FoM.LRrr@`NVuH`9U])-8iJ7@FNrf7\iBM&V!649- -#5tPc(_At-O5Mh6J)ih.rrC(io*b9YnQ)"9n(P\!3f]E'l2%9JFZ]jIX%S\K)*kWe:=iBCi.<pN -&4M&>rrBqeHnYdMiQ$JTrr?O,VuH`9T`3+6!";Uur%"B?jSo50!n7/LNRu9lNsX4n$m]eWVVm]' -Y*+2Olfrn"#]WjLLDMLI.V`iuEO0M"e*6(F1O7%B44N:2%Y)esrBgI<IqWa#GXqI.n:$q/Giuos -Ata!Tb;H]a[;??"+#V=])8R:(Go[??^\fjr_[sVELHYh?!5Si:rr="2I`gOV!<3%^ESs(Z-ga.n -h0@]miRT*+YnP('XXUeNQH^`,rB1[$MnD?oBD?.KX&4fiA^,>Okgd*6&,9n3L&V/F;EP-_!/1TS -rr=%6rYh]nJ,L(B!Is&oC&\1R./s:%<qp,'!(>k_J+ugnJ+:*7iK_+oJ'g7F+8urITDWTA7R'$H -phHFTrrD[h49b`bKa"CS!$%e![84[;TD5qq!ri8;K%'`"N`,lW_^g*grrAd5i'7,em6CC%+oR\? -)#!`Ei%4d#Iae;sNRDK7NL0@=pg>:R4sP:\OuWIAM>a>:q%CFh5A32hcWU&;j*Ss2]3Dm/]mfro --\bWa.AL[H$G*H$AKZR1i.IKsBg8o,_]CQ%kJ1>Pe,n,!!0,G,!5g=70c`FtGRk\l!2'Lnrr="A -N8lN"UVnu<d&g0]6/LiRe'.[f&)u<R"sTmi1t:=2[;C'$6h-eo:[b:Id-(?,!*]>.rL&.L5DNDI -m-W_H)ufm[GUg`,cU"gjH[5;-=QP7fhD!$n>SUX4"<KiDgjd3kr%KC[nDh;e4FbERe,KE-d(clq -_[rI_LE6Q=rrB$Ie,KE-f+/)\I>?eHeSA$^kK]7@-#7fIggS6jNZb5lSSCb:NP-9T^Snp:eNXHA -!9g5'$i^26$W$a^8,P5?_Z'W4.38Qj!5a?:rrA'Vrr<J0nAG6^a+40in=R)f!980N_^g*grrAd5 -i'7,em6CC%IY<(cJ&>7`0E2$HOl.nj-nR[YjWXT&IM\OS!6*%K&H;a@K%'`"N`,lW_^g*grrAd5 -i'7,em6CC%#PM3n@GBb]JH#W=T="Uuj)gYD3Ibd^L+O?Si\uD0+G%"/[.O@uY*JeViqq@\]NM7- -'[Y#;[rT&@\7K&QO?jmQ(&JJjARC03&b+hr5l1K\?s74C!(G7!AT*;cBAq0eq#:>m"fMA#)m>(X -4p[k#0Vo-,AIiD0aZJA8qcN_j%HCXi4Z]pE8i,Y=mAjFh]hcXhE>TPLRK!83=6p`R5AC,tL3>`b -dG^SS++[jh.k"EXI<s:D(e2%=))sXYA,@d(0ff76MfIZ;+8ULkJ+:*Iq^[%J"9(m4JH#W=T="Uu -j)p[ln/VuZF^5ogIaZuHX_[Y!F'^T]Rf#Gi;6*8Ug#$Dtmr&,Urr<L,nA"s[7tAADTX=_!j-1Y> -YMj`drYA"S\c2Z/K%'`"N`#fV%'B$:re\[GrrDP\[/U-dFGKQkpgp(aiQm%prP0uirmS'a4rE[o -SQaWOdd=6>DJeiYDdll:mN@T_'_/C9Y)Kn"X9]r$Jdkh^qG*5iT]oM.2E'.[G#hHk(A@5e,DlcV -!2tdJ"]YO&!5JZ;:]X:Q2lQf;4o<^,TEN(5NjOKM8Ji>C;*Y25TE$YLG[L@_\+Y.!5AK*.8)flQ -mghH+^#E<)BQVd="DKa9@S!8+4=[t;TdQLBCY^GC*o[^,9U41_6<pWLHti*$hcp&_Ir<SdIhH5[ -O,Z7BiU;G+&_8e`9mfO+hItB_X6M%N9r&)8)L\J"A%%W0bTWWkB`,C_S\J_cjTe)D`fnJ+*/oc: -$k./l8P\M&fDJj&RkfY6rH;4(BB(Z3/`<gm+55&A>kk&Mj'%RU\9hLn@2bDB5:eEj$lu!K`d<i& -k.J?V_&E:ioK*!PO#-e9?acU)NF,md7rd+RZHn[Er"6-kNp\dn*ZT[YmA=mfrr=+i^[UC3L'&^e -^,mE0b=mEM2193E3B_%nS/SoeS:27*Te_ZekkQM(!5TVg(j,c5n_sKJ\(a^X7\fr&g$loYKAJcL -A,\]01]IHNeb-*#J-"n#cI&58Z]nrHgm7*&[/"u"mBs.o+!mQS,A4n(K3n*-jQDHU62pqne1^_3 -YMk$Mrnd2'-dqS7rrA1^lS<dL3`F'$VCE`a&U0+*jCXPF=8Y(ZiJ7@:]R0YYJ[V3KNCWn,X5Sj4 -#J>E`!.hSNr/G&ed9;M)/,gO=nAG6XhECl=^tVZa7]*Zm&[1/M3<%e)g%sRZBE%s'X6Y(G?DR=q -N9(k#]+ZH]kkQb.*7s\qK:RA0R6?&KD)qUra_FWHF*GMCTA/3b_<_)iBJ]YgP1B6736rG7OcXS% -7(r>?lMgBW<LajV)d\QFa[?%5fC6hNl^g3drkE;7q&5=hF(`B#g@('kJ*HOQrrA1^lWiJQ8MmFJ -*<g!m&<#\(;Y_0.X5:n=6iIACnAOqs^#Qmmlh8g-!0O3%n4(0I,]g/6oH3r-[/U-eCAQRnEQ&Zm -/Y=>=_j\:VJ'`P_^\Aa^rrC-if)G`%2LI4a,@9p&7mm")9TT+;YH@&b&l/S.8ZbgX>u-WuiQ^6g ->G(<O*Zt9-[6OP*8q5cY^C1)anNHF$ci$&]J+>IFAe)[I"t@S<FQ//!c)u8>f@6g!Pr35:H>%\k -rr<OEpgQMg!/^H2#lan.lV%ieQDFN\LGjN7jSo3uGjt<sq#.Scrr@T"os!J8FJHQ5.g8D5q34nV -fMZT]am/fMP/#u#T*u"Op@jVtn2Abq!0O3%n4(0I#QA5i4oYMtgJ@f<YH;ba:DbprWaTu0YP<0? -_[lSSGk_4<")U9u)OfRQ7\>D?+R?a(_&,E$[[d?tjL'DS867/q2A\PL+7MbGL*mkj]QV?005WrL -)Nat!_&Ih?kDa]+KR_V@VuH`A=4Y/sct7o]TB0-8PFCU&D0_#.E-J4To$I1[rZ'b`^momlq!d>C -T.N;')MJ+jJi8!2(rj2J_2nG@[/U-eCAQ;c(lSmPP]/VEY]QPlDCb--V+FD<DZ75>,nKbq=2P2< -#/0'4#8e8cQll,U5lUh92>f-Q5MP$XrrBjh:]<heXhQDa=s=SC9)emH21.+X!20(IJ+,AFrrA1\ -5N0k:%!hjQM>*&qn2Abq!0O>JC.o724Xo015"YbSLGeuarrA_\Nt6a8rNmIB!6Jt?iQ^6g!'/ZD -GRsb%g4/ZNI;R(G@#@Vd*/rFZZZ5*=[pih]V9Y?uI](:XrWq9J_/oVV'CQtBHN*uBgA_0D2$<g` -fC6_0rr<_i*K5Ksjer+Y,?NHk"EVr;S1Xgh\Xb3j[Gnp\>*W_`-JS3;5"d!e7^%P,k?[W9*WH,g -D*Rh7L&V.)2>f0O'<cZT-iT`T5PZ53[:0A<8ih(5>U#>&.jHm6f^_hkF7qH[a6\re]Dhj:h>Y*9 -rr<?1g&BCtV*%XlnpK8_4LgRmo346$6.;A#g5Va8\>"kcKecX[Sd#WfJhf&PTK[JfL\qctp2Ken -j#q1r^+]7;nF+@<-1MH2\qU-aXlsr[\!I^fc4#Z".]\5"fi/H$>@.L4!8s?="$^C)M6M6BiP380 -!!W-"?]N-S3_Q"G8V4b65r2!V*1IWX)koY'GTbVJ&5G$=!$Gdb&\;"LK!k8ZMAM64da:Ji$n.j- -?kcI,!#/:!!#/:!!#/:"BXe3[djQ1Uk*L>4E+l`h74.PpB9Pks*O8JK-GXa<J\qP;.7*[H0d[T3 -86ZtiS5;,_U:g6oK`.]gJ(`RFdNuWV[>fN9nLgQI5(fQn.fmE:03TeO(@[aRM?RoJ)-jPs`u:rj -=E0lrJY*a6`t*nCDi'O0HsP[p0DreU7e&C-rL^)l8K<^/Up9?!qoVODDXk<'A9V'T,1ST_$+i$d -;m2q#r-.2g,N4u@[;QZCpX!W#-A?.crVbNiM!^jl$bNi-^edf/4BJ*Qcl]_]_`uh*d.l'meSHhc -"M27WZgd[bWS2%44)IRXkI#nDlsX?B'&>B8FueB3CaSP[8N(nV'j!iUCqN96>&"t(e\1X8oLh?\ -`"FV`:E';VkeeR.Jd<TQ%9fcHg+lWk=$]7hRtp*'fYsSt_tK)gWO1")hG")J*Zac8NI4ge\Lo,S -HoL$:m9<H;`OnZULI62H(?glM2\RIYP#YS)ZDm0h(48K-iig8%(W;F">5j9m[qQl:l2'8/-D.6i -mTfR/_#FBk;D1A7Tr,4lTf6fuJr7P;\&:uWiPq&jrk#,`l'?N0[^pQYbX`@O>gFG'&WCjFRTRp` -Yc^42T=,9J:PN3tr$CjE>k*9.Aap/K6:]Dp%F$Kll6K;#dd05H\:Rr0qoLai.C9`+!n+]d)scUh -aRlJ]"FuGkBgKuh^aPq/EImF@"Vc[17rW,pJ^DbqimCKlP`c'h'WToBE+l`h72/Q!721H+39G`, -MITlp<[9R;B;TIeIq6=K-c2LaB8:k3Wq]?4`3r^\'(I""L$qrEdiV>q2g3%o.1f)Je50Z`qpe3Z -[T!YJPLeSlq0u(9P#f>!Dk4(M\MMfMVYQteJ4MkoekV^pr?#/3I]K,FhnqX_U-ij=IqkB'C6ouS -P$%>[]Vclb2uqtAAY<klU6%&O+'Mi>N$tEX?kcI,!#/:!!#/:!!#/:!!#/:!!#3Fa$pd$*p$toG -\aaIpQ\9j+O4hFe*YS"NO+mKNnN-PNYh(%Z6&+u-PhPAC>bf>Z4#Cs8Kdo3KLIEb)9Z0ib0)kq@ -j0js@5-kYQ7WM;f6G=BASnmok_uB_F^W,XOi9#aR$i^3`pU\nqK>'P\KR/W:RKf)^YDVu(f#F9S -S&63e@U6'U/#ui:Zs/mZM8A;g)?0\QT@sOcrr<GACS)M(`G6<drLUZKB5aJX\poC7UTr<*pU7;s -m&p9H1s[%4ZFf+^.7B&#bQu'"\oc`eV&d>LTDhSMM))Z3VY@d<ButgDBBgk31/<'.n8^>:2=b\P -j7.oF\j-*,J)Wu8IhI"Go>Z5"[d[=Wj"3F_[-KeV[#+5=YFq?4(:JrLf"bL`5rY8go=A#KC[2]3 -UTH.LXS`!W_G9L$hl9D"$sG'RO[37(`G^Yu*r%&>]<;e@UJm(CdVW;=N3&'bb:KqM;*u%2)<I/U -*@"+M<d/af<G#VL94&>3!5WJ6$`s-<iV11a1s[1eVns%dnQ3TYY836)SKc<(g9n6,E8PE;SGBBC -h&'$7/5MXrXqXO[;31<*^@moY-IRjKqBl4'F6X9d?aOa(rr?cj"3][G#&6)@qL,L4g24u<l*ji- -jd"=C'#?`=e8\7mW^t9()R.:B_%k\G3^Bdlb,W+;:&l?Cq76Air'U8Jq`jl-j&a,[&!"C:r'fWT -9>S2XLqXL.gh7`GCV,Mn[)m$'AKjR>7guCM,dK0c9V`>R$5G2Hr]g@U4C.hkrrBkjIP-"KnB]*- -*GIPUQ1/B>ei#5Gn[r0N>s:p)k*eSGkJo8D"AZ3oLq[];&gmt+W]O.E<O>j'ri3rcUubW6T(;hs -Do)D]qsWNgm7$Nji.m)0I:L:3&NgN]%4B(l,[+49[BEcupA0uYmT"j1>ujuVo)OI)F4.[Y)p#5L -igpHdSdCWDE^mm-e;T+bE'YK+^.\53i4VA6GO,Fi]8][kIO=j5`EinVnG]#Jgf?c)=BTL"Z"_$^ -L):]^2n&JOnf`h%XXBIH]oVk,rLD4#L&3$@3r!1<J^pUd7YP]U96Z[P4HZ;n:ba8+geQBIj\V_F -XlW?Da`_uUmshrF]]Z+iShZj[ra2)Ye5C3*\J2H>YZ"]APCa>;VcG1`4Tb)k*XgM?lOA&;nBL@f -Zbm9RVakSMhO`eJ/5($ud$J(38JA;-RYm9iMjIkKG@St5*WFid$iVW'B=RF8KAnnp]M0A)1W#-I -hSEd%V6kgnP@o.d.r0Fkb!^:KSln1bq-Rjq]jNfB$kQ31>5X]bOJ_fFq_EZ;21K7GMKU']rZb4s -8A%T(D;u]Jh!&,cR`5d`lVs2#hDp=V0$l0?_^(8kZ[%"CdYDOD8H#'.C+kFY'L"JR5km.7r*o3? -4scE53d.@Xm;h5XnGHA^Se%"@i`DCT>r]YGDY?#F->9l;o%AXJmB*HuI3[3:]&09tU4%i8fDGRJ -5Lk32r>8lQ=LHE',4a7.?koh@8u8Z-!^UgrW#u^/e-`&1YD??m`17S=;o>'TPHX5FH**(_Rs,n& -*c*Sg;THHW;!B/Z1?U.0<8`?Yi\1'S5JnL7`S\(im?_bNrr=$`UW:(gPK)WM\FBLuLb6!WXYT/J -FBpp,!-kJVOq<aHf'=076=Ti^]S+@Q5PQE%!/G[r!!iM@F(m[8Q*-UQl$becQ(=JBZqD)KYfG`t -71qFG!EE-!-rIb^*+K^\Vs^NC]OLm5J(4Xa[[e_fq>UGWp).ZTMHYrYN.[4,7F!pZ=fmFG;DGu] -V4ck-dU@-lJe=/dIk!g;EX=c(WNn7r'`]p&nRo[VM4Y`:CVL[1PK+^Ppk>SiDbTXb`9Y_T?$IGf -dd:YpmduDFYHqNX4R3A]NCH;H4@LWX"U65cQkkp_XLVDJhr^9j2]'Z^kAQo\r0'=p/2D:gqGWX? -6/^n?/t;RIrLpU%fl,o;`S:CmMO&RCXmdFlI\EH*iOqImei$\bMKJ0"Mb%%"5p2Wa3F#,;(Q.E3 -aP]"I2Q6R?Z(0V&`?QlVO[Bk%]X]$n]inKjBAFs0V#LEm<0oCukh>p':[pi[;+2[\K@A8+7Qmt9 -Ut>rT%$#?YJG=os;g^e(<Ul9hIh/se!#0/$IuSn$aZP"mdE_P?[4`^?RTEKSG/gL#'-lm<iH)P[ -4'rj(+@kpjiE(lK;(\Tqnb@/u\^]?e*;Pp&(g97aN:M/MA(JCNr+l<4$Q%jT`c'L"iXWZl@o9b& -ikD+dC@KsARSK7kYCpdG]IeI]?eLT"ZTO'W\HH8fX*^d].cqpPpSZ3hJ"?!&%Adog2SMf`!9AU. -LJW7@#,'L(RlqMiQLa=tc7*=b"F6eFe`;k0+p(OkcH;f&-%Htt?^6uX!4RHsrr@\c)#.N\idZjb -1"EZrLHcKV4=0NSJ$H?tXQIq1!47pCgAYQI$J*ACIAON2=u'NLI$2V601#JJBjVGLF5`bEO'$ml -58$lGi[;auk--b0g(HneV9KbIqJ_E`QkjTi.sP>`d'Ef&3I``a72pk[QU]F#m:Z#cjL+M*p/I[` -"+.5hnOMj-_h(?sBh!*e6)V`L=MYs$,jpJgd^W-%&347-!L)jMp(]XO*1YGm;+9A=U5CCa'N%:! -'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'\4NB7l9K:bm[;ArrE$*S$)(k'E8&aG5Q%*4>GidDo&"f -nFqTY*Fd&idU"32\!Gb(k>8913i]HG@h8`rB%Y3"EUp$Eh%O&`#OQ$j/&AfX`:&VQNeR"Ii.]Ig -igA&OYMb`CqTS2^%GVRb,!Cm<>t_l4N#l[??ZmB4kWd$nK>&#olenhY%/A_t*Zad3L9Jg<F/8,j -Cc[Q8_++uhiL*gcX/`DFi.+<?A'aMVi17U_2!mWLo&&A<_:s=M1<*$Dc=m+nV_"."Ot;LanZ[d! -'.gGg6%pLQ"FS6G"QJM!WV$2j[q*63T?+%(oOAoDJ&TD,!:?uY5<XL.DiDFC5!!ALYTrJK(VV($ -D][0_]cY2$G'^aS%=KcZDo=D99T/V$-45m7IlAL(O`nkMPug9HV;knhHiVRl>n=m2M7:(B_r'0Y -Ho9BL^[Yn&e/(.Rpjm7Qf(L=9Q[X==2Ym*!Bp>Q-O\L:UBHQ_:ce5A9]'Z)gV>ee*"#Sh,:73^d -0("#kV+!PSW54WbFau5&YQPM'"D4MQn4_0]`->Rp5PS%s"M_2[lsH;JrX`p"m&&\a5rY(iD"@^k -]CDC(1L%l$W[YZBp?;J9mIsn6aI9b%(T%&3-2OP14g$U3$tBCB4&h*j)5sX<@ahG'JdA**#ZN!< -)MLRU0E;3*!:21C0u0l[e0:M]VQ_AQ`W\Da>iQNd8&G9+n5_c*=pN"gg2H[[D-p01IA>]t7$gSY -dQCm:kb#Hc`78GT(pgc2AD<5:SsYjS12kh3NUspPD;\2.HnE)-qsYiGr]']!W-gn\(JX[an@E?5 -.<p[*7Ae+@.)*#H%=6Jp"EN2N,9noOqN\3SE>th?5K9>Jj5DBQ+0X=3h[oc&Ho^`ZWMN&Efj4B2 -_fg@%p1_-^aPM0pO`tl#+D7/0?fD!@08lsF6M`m1qYd7dRX?$;>/kJ([ZSto"d^1Z2JCKq"14:j -7R3dae2^T7rf)@U?cqTC<4bo[,ek.F_6s'1Q9Vi:Vr?Of6iIA[n`Sr@SZMVW9`rD(G*tOJB)XC5 -@^*7te60aC/BuM&N,FX'8[^KZ4JcWufjj`R`.%gP>-I;OGOTt<h:l9$r\r8:d]R^Sh+E*5I5]L' -X_5D^]"!#t\<8^NN]!7pBdAOFb+^sfm4s&(n;RAI$teusSe^bDpbM!bm,lYiR0h=gJb!+o\(g!Y -@`Ks"#:GOIK(7Ij';P8MpnatD?ML/N?bsJhhH8IMVq]Ospb,@SQ4%AmCeu?J#qHVu'`m$`J-BXa -W@&WuhrnVSj3$hj^;"g*,J3^qi3*Z=2>B]#Y75_RmA07/L@j\OSNFoTAOM.+"=h$MJlF'-\2Dei -:,?&0'(C@8i#`?kg)bsFC"b1tUg'[dNJ3(l>?]]G)ML_VN;upH:]OJq!!!)-P[Iu$;)qrWMO[XT -U6`VeOh1i91pk\aPKks\b%JRu\#8TWiNJ.=!:X!<fr+^S<Unn8Rb!JX\7T"ca*QTtZs28<4FTi, -]8+I:A8U]Les$=N(C5P=annHjhDP'/iP16k!76+!nV^`DhnX.NYJdqurr@mZo[eDuJQXRC-&-9g -AZfJC-*Tqt,BRh`%aq\4TR9'(NP6#&>kjedpt*KW$N;">T>ionPP-ST<q+Y)m\a^Y^R5V!F!PTP -H#?8-ef.3%_</>^^)?]lj2@CHZR16t8ZV.m1$NoVc".Kt]sNa>;VkO`mZJkOb!Ig4%$,u2*3*(o -Rb`DHo.S'cq-9fcUYGbOTA\P<m!`>kgn,*>1]'Ld#l%3c8GJD./`r2c:ZKcV06GG5lWgm*[aLtc -q`HNG'&AB27'S,n&`?W!1PS5m=!("_gQCa/^U6#e8sU8[p<>^@W%G-iQVDZLnUJD/WeGLUQ?dL/ -P3gCpO@^_YrB'!lJ=[#9LVmn'#3u0sn?/hN$O!r!gI&X%@%U0&>B6S@QL9Jb&X5V40?@"1N!dJt -U\c&/,l$EZm46*r2>CJHkJeG6Kc3=Ul<<)"m.Cb24V>l36T!2s`iA+($:Ykrf!VD5$`1<gCX\P! -HKi24PDl'eGA]!X?+7#tp`n0P#6Y#Ul&[pk9j"X036aPoB:RP$91m#kh)!hadL\tekU9pXq:\@V -5K^\JZ\ub/[L_aYqa,#+rr<lu@IU>:^BK!XVa]QXoY"R8I613P%>CY3]tDh,e@*jO\rj/UB"AJN -Z/Ru"Pd1,?C#F+Sl\b51m+Ln"i^^p='?/fPn/$]Lrr<gZCHpJjet\sD?0XIG:4L[Z,XWh^oC=T0 -*p_st:V#:CrYG-8QEfQN]arA[M4Q6f,l20@h5T\3*^1sfXF(W1mIbB#:EPHt_EArAd:'buJZUL, -0O7o)E@HE(E>5B%K`j6COT(aI(Y?'e'RV(n^89gN2:M6qr@6CY;RK=fgYBFkd\$i<="HQCq.',+ -rr@XslZu@oXmr%CDoJo8^BJbYHsu#-Ih6id;Ra3#>1S'bcre+n'RclSL[=CRG3^Y81H*g$T.jV+ -rKrMN5kM/l>`i>iq*%f.SbMb&h9,\d^3=mOh*"lI;+3cZ9lB,.l9YtPl7"q?B?C/R[su>cbJ2cO -i$ZBY9>k#sKDZ,I12U\$;c(n"Bs`6#;XVua2mh"rq?KUZbf34cbS!DrrK&M5;W5>&pcBLoK7@KO -O.J&pYJb>qheN/kZfg]ZWVE5oZdQL)Ig*ioTF9L][O.[_XhoL^267J&4i4I9[VuN^._k;Y`NOlb -&,?+]l$PSQ^Bs[J`h"6]OX6>ef<i%F.k+a@1,D9QZ4a5>"HEpI_qtO.(Z?GAC7ZKpHm.Hs1I9U9 -a&1<&1oMP(^[m!hR:9/&+`L3D_!]=iBV`0bcda\`hG7LihLSP'.)kPADsid3rrBiqc!Q*P3n1fj -qcW^ciB>MF4t8LE^-1b-7umQfC2j):f4LF55A`77g+-r`QXWU$,o3O2XAT5moilM\Kg]9Mrr@Xq -Hn4^LK)Yi/WunbZj>t&47]-I&U"e:)hKZM-\q5's7=sN(g<4H_9'X4YG"-^QP`2Df/Ub<Fn@QT, -I^,\`0R/(7LJ[L=Ms6[9e93Plg23ndHgTa1]:t.pR'MT9T.)N*d>$;$-1JX6nJb<pNMhO'$XX]b -f!3lbCN4(XVPAET)(%=R\-qF]BLs\4`!i.CdP=GONF1hMp`uJUG"YQejo5;cmr.9*%##[B:S_"+ -_#lO%RRIAo;+q%K.%gX!.%gX!.%gX!.%gX!.%gXSKB%1B2t6;0L%s-ThhXHGZLKfmM`r5h5DQE. -4C,#P;/*,b&i.:=Etg1R.4F<*N04$t\H^d\qEh!JjPlH9p)WuO/iW\?a5@VY3hO9%6LiaUDL>&= -@k7lE=,FE#YTM(*`aA*D1X>SVH+S:s^`W#q_E4sr,<*CY8&;nqnGV4#j883gi[s40O,;i-pn-Q( -L=^;d:pJ2_n#2S8JuSlDq1NaBc^'spRqW=oaJCoT$t=nDg\T\&Qe[:=HhBL2iQpj$nCQW3a7f;' -Ug!Q'puYj#%hD=3htYf-e<YFe'5UK:"jPhaa;:0OaBQl6,U^f[A*iC\TECj[!]]3S]f6_ohW1Jr -$7MR;&]\&^$M%QXS+\6)IJ[U1kR`"<f>Q:lrYW=S92:O@nSYP(//Ljun_=^bEsJ*aCl6WPmV'm< -'eFFl41PFuRMg<ICK107ha>`_YM"QD^*WQ4i(k0S\cb'tMS9t_h-0Sl<kZ#3ipTT7QrY+)!-mp8 -7ZoT.B9RBX:3&o_r$D4^HoLOR_64LL4jpthVHWaR`YTPYf!D2b8Kbd3;3FL($Z9E=OemPl&/5\U -'EAB7i9iQ,'G,:E#8B%<b4bi80h1\JhHu#pEV&k\r"C124LQ:L[C)(T7Yr4?1rH*QD5-r&nMZR^ -2T2:<,aQ#pD_XF\5eNq`XAOT%70D/U'Ds9+rX3rdcbm=$l:\$X1lec<C3NjPgs77*,KVgfe<3T` -Zb$k@8BaZdf1&,Fm=WuKi1+>8I*>2596:jj(sY^LUb.VHQ@YnJNT8n">'ra-NhrH7''aF<C=_ij -E;FaSF/Icn0YoJKgH9ODpuq7ZYj)KOZUdAEG,3]T)LC3.hhSu9:/?Om%)6B@J)J&/iVd58L-?ol -T$$pseN?X.C=*;6?*Zg+QZk4.DMKOH_T2fli!(Kg@A84o*WY]]`@V>7g4+hKgJ8N.A&F)=>$^c) -eZAD;nO`FC9^LCM.**YL:^@1.@!rCcB=Xi`1a_[@lYCr9P.KcS\j+[54MOAaO+&0qDrMRn]N:rn -pR50>IO)oXnHJTOZ$U<]/`\H(F?q5]D)mJ5eB`"WP_c*XP);YWZHqlOi#gUh_Kq5rnFk&D)Kq7C -hT;_BD5hcP<7]Q(8F7\.+hkIR`mREGn$&th@a15$]h`RN,(ME47!)I8Xn"aMr;L/B+CcDRS^NB" -HhF'65u#2N8C&"864#KbZ&Y_%j-oNSrJ/**C&\/O[;UkEH5<8aia$QTj&^uQ?IUOu]lIXXWAWh/ -'^91O0MnE84>-Ctq7]kLY\ba*`[M0?6dGt5.r6"d5(DL]J$9X@muP17GaIGT_@IH-<qfVhTmu*` -&)->5._!%<[0Wo\8M+MC:XetSm3K<PBL<$7KX>RCR%071re*[\(d>=S&K&=aMK/b4!ci%>Zss9H -;G6)6?\/oJk*235hqmhr$Ukb+:f7mg%r,9/dU:-KX^f+t87kESMH).ij!ruG&4,S3kALfZ_'OSD -cO=U'*5@-bh6k>nI]iP9LTGFeC]"&d_maH&?H1-5hV-A$@>&ShObQkDTVs+!n@0L!-rnt+[3`N6 -107N?Go)Bg@1S%*4(!kX=7B7WG5hO\m,>2=["[U52>CU4m-uU3\0t6!5\Tj&IVeH7[6?8CaSu5N -^,gKd_]Blh08G_Z9(6GdBr^AogKn,e8Yo\GWE:F'>B`XTC)0,<@?Hs[16N0DKYZcQ!D#E(e(4Mj -L>Qt)HMmdC*QW'a,1EWe[t6Gk#S9KE,)&um0E;3*!#V]%3#SB@E&a[6;tC-DMC>-+72/Q!72/Q! -72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!720Y*_52)X-j1FhcXTDZ.&)65f[Bhp -MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8J! -MC8J!MC8J!MC8J!MC8J!MC8J!MC8J!MC8HP*HOr#6CpKYp7[j,-\5SGi,@@'6e)#Qia7Mu.bFS? -i.$F2(\29d7^K5^1"Zlb\"66<m\QLf=JLT56BNYPAWP%eqpe,?b?lB?cZ&J>CgcgR:';/kd_&)j -J$kQ6K6:OVr[5#$4>YtmKRXOcD01,AInI@Vrloe3j_Uh-UGPp':?FN'+U'-S1\7BHO5!KoTUtgK -2ID"of##jQ*:q7JYF@ai:YMl/hgiIVSM/s:JGp>Z#K>r0G\6]gQC<Q7j85qk7pA!U@@l8l*g:]G -jf[Oo9Y4DFgf%n/>G^6L=8[qk6g5nFgl@WJ+@:<1oC'I:paLF(^Pi*lZi:#XI!)UeQU1C_HtB6] -kZ4-ZMKOhM$`DN,Y,&Fras,7:\<1B[e9N?m$k_(&cQ%Dc570RmpmumU`*X1l*bZJ1&BSoLL8El[ -4'S)INYe8IB]P7/<JELZ@R^DD0uBnH8j'R\kU!e'gW&YIV_?jHlf,\3qu-qN@I`*fg5j5q'7<^V -T6,"&G=G4uB0+,<ebh(L/kg6<C,Zd\4g_=R)eK1h[#p\C&]tWP?VC1Wp87Urn?9^_DR\VTLqX&^ -k)6:Vp7!'i<7e6'm;HIf)pF12,ZT!@6->?Fbs#1BItsBU,kYrXhbd^0EVimd/@=r$Vh_/EPMd:c -qtldtXgH.="esjL4A`-M_N>]p[##0dN1a`ZeVF3X<9O4erXR\1,*V!hT,%>E8)PeuNJmRo]M2qJ -6JMgu@5gYO,Y0$=gUfK+'TmQ%15b'Kn(M:1a+_/JC#U^Ca8QFpHp=QDmAjFUG?X+02Kq&oJ_K33 -B*ck;+cLr:!/$e@*]s>#^)25Mn0X(QT+cTAn0a!=1ZCVIBf`u+YM*.3l@r<p(kQHI&^.k:A_9aJ -,DlVpp,hOiMt%VN+7Sm<rr<Te*sl]]47I-Qiia&iP=<m&261CJ%:)6@CM4U(P5m\=Rb%7jnOpba -#Ws,Si\))BLICX@L\0*f0(hA6qC<LH<W;WS9$2rQaT@2'hd^tioA:8]f&$hI&+H2dna<gT0>JJr -JTZM_=Eo_t`&;f8:$@f/(p9Gr'8Gn^NdFd@*<+CD%_`bCnS168naD)m3FP(-eDn*i27mW`?I0Dk -i&$Ie`!`GLmZ$PY,)-J(\"^Bl#POMZF5jA<?>*MLO1Z:.l^E9l*jp-g>3g@<?/+#Q"!u^?Y$GFC -5nX_CJhUp]!IiQ@%"9\l>)&O*Iu(fBnKt*.fgVlI>%r<UV<%>nZEEEZ,Y7!.8=b3@Fob]c#o)*t --[h$KRueoa??>')!8AaW(W7s/C>LB.rrC#&LH=mYZjVr#C3m=\i`dq6*BJ!=j\7L$;E)DsCCkb4 -[3(/gBR^A:8b!jYJ)OakIh$U^%URiR'"f!(E8KC8/T2h&o3:"jEY2ciFd49X.6_???6Y=KIp]D? -1jWOPJ4Ca0>Rlhl<;\H%IMQ8biksb?JFC,aVF8niG_4g[[$OFmN"QN?EjBs]TRmJ$!5Y^^=7%$t -pKd8@PN%KB*V_\i_`I>-S#aB->=i8%I&4T!3.6s/V#7%X&#B_km-(U%iLe)M$iF`.?'gC1*TAXY -`L\+"K,[N`7_ai[b2b&f@Zs4(NJ7U3$,HafY(.LNdqZ`pqOjR?.1@W!M?#'!M?#'!M?#'!M?#'! -M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!N:I06ciP!aLcq^TZ>kIPm9Y;> -8GmUci"*`4eJ?6kg<QaKD5-6?B:J!'92N3a6Z39Y+"[jYkBn;4UUCZf*sqEqr"L@L^`U"/O8]sn -C"L'3pa]).hML4'SI\a"f4tJl?Ku.q,`<IVTjQ$M+ugf&2Vq,f=K2p-=1:uj_eR<.l['^Wn(OZe -!-cC1OCWr4I66&FBjVpboM=1]?\\P,\'s8b&8BU/IM9E%hP3oU[qK9`\!^?hZbk2.^oM=7-HHO( -EEk`q-i6pA<qott;YVWu^OgnPr'0^V?96O-%78*7f0"D(U)4ri6>e$2(j(\K!\P\Lb3c_-$km;+ -.IH<s5J'c@[bC(r+m'9-k*-jEMXl7OrrBDgf"V`jeG^sW_s`B7Upns!EPlAJ,h7"kTl-s[4?%=I -BZs=`QcqpQ)D_eiiHH;JHhOoC<T-/pp)aig:Pk\S[,1n!]+(BhDS/DN%ZbhHi='p)+GKP2#1bdl -I's_pcU4G::E+c4IgnR[>\R%0O5_74oEhqXj-rc(;V/$f+&GNS8>BidOq09N8Rb+=OBP$SQ2pLT -0E2$(M#78JJ)d$u!"8,M*.AF^SgDgUj1`r[r+Dn]?WjZ]p/rPaK:rU;+b7?Gks^>fA"pWn_Z'VE -5Jf&n>529L'B5@rX^Ve\geVSAaXhg2AT44`Se(MA=d5#+LQD5]/]E(r[Jh_+d2i;_#o8jTNkBAj -%gAi@FLF5OCV%d!S2C\/kmTasYF-R#X-;pBM*('I1fkFP:YJ=tkJMciBKd7&(QSD4T_P"q+Is<> -e9.g->Q%n6#OKf!M'g(<igPeE?aU-V:BL<oha#cl+a>)!f5C&Ndid,CFk^,I\ZY'md9E\IiQSI) -`D@#f'T`e61kEB=F[^71+73(t_o2Nne[:r(i\uEG*?RSs:6DO5>ANqqgM,94J8Jn\A1JY8ZB$Sn -Cp4bu'c!A.Fmu;+phQsUdbj&&_tj3PiT]4N<S(aN%@cUnAB8r,F5.'a\=HD!?%E64.T6Pt6_l76 -a#Q$?g5#'4n?5FYAZ#7Vn)@])/USM>7e5g?o\Lau9euMV=e2:t13lbIW];A-J/+,1C5W#>*X^9$ -h\5dc=SSf`brcT7>M3>2Y\F_R7AE44GtDoB)Wd](SDg2ZOU\s8:)]MQl4d;'j58R_iK(jJ#AN$< -nP@)1!r-\!eZM*VA#\b)rM>dMm/)\9;+i0lNql]p<0NRl*#bI/5OC&lkMYcmfA8.MpO`;pA<p_& -C%Zmlg;YGI/s2"69'QOJjGc+]DWaleO\4Q"gJLf"hnuGI7<*/qG8BeCOu[#[kou7O^lA[FO@;m6 -oVTQtp'N4BJV=e85Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj! -5QqUe*+q*)F,i<0@Up:Z$`G>04!Bk]mTus7>502tAqAul!.MhX$iV(>:Vkb/NP'3!Hc7Momh;PL -fI#/H0,-n;,M"F*^7$HRBd%_3NS6i"c-1l0KG`J4h_1Min*a4-r%4i#ldP.(f\&cp>sak+?E>Wc -'#]aQOgF(f75!XM3!IrnAsY.9UUT3kl<9BDaSarb?gRCEY6BEl3rB$U4nuV>>s%$uZgfe4gDIr( -D0L2DVH\;GqdOtN`M/0^M/?'1![s4&j4PA47pi+_!$`?A)PJ7,o_A>O-Eacm/#pd1[Z>_W:UDr. -`Kh_q2\Z\E6Bcq%S9%j@#T,^?C".0!Rs*P8XX3f]V/%]8f>\o?a6^XArmJRN;6PaRl[KCn-XHX2 -co`\WBieUknE5fJ_f8l9?VP#SX8RrU[a\i@7qjGDU*i:V7>5[ue*Qp>7P)J!%r-p48P+$=igTg< -HSs^Ydm#oYBWq1Wet$IN9BhbN57)^9j%k2O^OY^a$p6E*Num)$8UN@)]=FA3]!b="aue?.Kt.C` -RV>,TT..sPmQY.KJY"=hR6PAgg1+6?i*NhMY7:8rq^VUG_kU#WZtk6P8SkcmD`UAf!,N:9VjoiM -\#Tg`qrMpC@:*l-NdBa^dWm2C*e1:Z=,Vi\YJ&fQDjj9rh-9A?IY[&em%+#<r-%ian>l8$f6*^; -r[5FkpbQ]hpjZZ?6gM;tQe0"+%31IEqL"oR2KBY!8HUQ_n4U'$p4<hD/cO)2YWn.4B<U%\i"(WQ -pdZp\L5U-547-rge#r>(,Jk5-h;jdPkpg8TNojHG"3=_5)oeaeo!e$Hr@9Uo#6YA:3#DdK3Y+il --LKoEa8R1W7(1gUrgERRWd_s[&bMV!ie<DZq^q+X%hX9<)E5T-#VBtB.hm2r4fm4T:Gr]WTk$Au -\KWuM0tgiPFJV(&#lH7Kn_p+#Ih_A<rW)4!g2Dq!0-:ejgAU-rL9L7j'2F`YMbS%Y:52F8N]G=f -0U'_uMgMe=3Lm`RqEsA+3tjo9S9'cAPlC`-m&d+do(RY0"o+"B<rW0&^\j9[0)ko_O4a'`T>6L# -rl`n7./fb+r(!aa*q5eYFBr*VZden74i4VEL9ceBCUd`7PALT;&T3\nKr%?.rl1S:8&c(me%oAu -[;Qt2#1pM)BkQ?3rr@i.pOn`2nGUY-U)2<cjA-lO0@J!Y4/cF/Pnr:K50jKh0[AS)D^^nSO@Z%_ -bQ&nu^V*))/pVqJ^]+9Zb>6sTl(\'Wr^Z-@X8`/&l.#CPgC)"[SiHL:im/J:0?1Ji(:iDG]KbpE -lU:7B!/"n4XKCKB_Z'U1Nr%QWNX>*+Yg76%EdrFfL_Nq<hmZ\)*uO<m0_d`iT*Y3q:P]DJa2IQ6 -g5gr^]=,/[eDQe4k0Qh=pN"5kp7$8sAPk:?#S$s;@m<A;L]Ct*r2G(<#f.R:S!2r2mJVOPpF!#* -lE#A5j'RJR3Ug+j?\RAPHmeD9k3Kl&?\e=Q(K1$DVqu*qHEN6IWSH7a*CWinUXL,_G\0U!QUQ_? -Alk5'WUTofK:hX/^E!6rrrBE=_6%!l#$q#TbJE$;nTBkeWbGO\#u*<`;Z?aa\pfP>?<tB/`G#UL -eQAK$Iag9[8!Kq:09t/i"WgP,SC:D[9@r].5Q*%r34h9KINS("jTiZ+fd#KXL:dcg39WOYrLYra -2o?^J^(Ya`_Ho-9bPqPP?"re(Gnmo`GTsnbmNHX^ni"SHrHrlghI&j&_>aK=r-.\Cp-&AE]N:bR -*7HJ_pfm5kpJ81<+MQ</:AC),US^;<C#NH_=Vf-89XC4uiZ_*i,D+>Se;kRD"%E!Oi>kG+rZfh_ -Y7PA.`Of;\l+3.[?.n)O_[RTj8.%nH3i`;mV,R.ln9`$E!rNXCiL^6tA&H"inD/Y=[aMNG3ZUE( -fXmJjOM\#T=kT2#%$F3(,h9K=d@,F*D_I"J!;]Me9t8BTrd0-Wq+'uPp)*SrnOl1C_1/G3%+Mq$ -H1;O%^mCKIPkUabZ[WEikuT[1\=nR]q([\u/K-U?7qK21o,13&?Ut+I+1"Io4uN>rIMVHRYJACu -=7FM;n<:dS&+MQ_(9=3Edla(L[sMsQH%+=^YnrOCL.J)-,AY(nGVV&Qg<gOR0F/b[0#Bk$"HV-- -c+.nArQ[O?OYBN_l1Y#':\6k2/cPf^YM(&T_cgBEEMI9_19gObnJ=mh(71b?RS=.4`Ek=K/Sq>m -GciZ8,T;'Y6LmE*S(ohQ`nUm5V@(3o`a>srNGcHcphSk:r$[Kj;1(t*]&2K]q>n4T*ok'4H>,+d -cQpaei/$2oh(%3k=iiFk-kbXlGCGqcQt%BQ5717,A.4Ctq9nDL^Sh(crrC-Da14dT]UJ`drrC/* -_"i?V$%;=C!68FVHn4_n0-'a+>js;5rrBusF2V6VY+pKE>oE!IDER-N9pNrfKOjL?.ROl"6-XgK -]fX\*Ob(lA:/SDaoVkJO]-P,P@3qt&gOFR[Zr'7HKbRBL"Vag!"Vag!"Vag!"Vag!"Vag!"Vag! -"Vag!"Vag!"Vag!"Vag!"Vag!"Vag!"Vag!"Z;[+nW?SB,IeU<JM_c/rr<3Dn>4'l0>cTd#J"+b -iD5MN4AW'bZ9i:)9uWXo\/f(10)YG/KS>J)4G3@#rKqtPj)<Wjj%d)Bmf7'O&j.cC5^Y<84<(0_ -$`[=*L5S4*e6/^!"R[QoXtQJkCH1`eQqgM-<j0-2[TS`T_QlB/0ZYIZ0i^%`%G:G[6akH#].6$' -:9fXa[^EMs@=m;?!>-"L<<Jm6$A_3</U-+?9Csa*h*3E<c^B56h"a`Apg%l`qd09J^(dg&Y-lrs -"*d`C?PD]k5hVI_`nn_`.ImE</SE&@qg*t*aT+)[bl7[Z76V)o?Q/qECeo_ng<]-)Wr.2<ESug, -=ZV^<4>1hg-.V;7V7;E;<R`-E,[Y2)bfHJGMm8e<$hfUEiI*pWP4@mT/?GI@\2SV+":GgPR"2&8 -.L,&Z<,O]U;<TLmP"%-FJVpurg6Yfh`r?&%p^p+JR^@JRcL2VLce^/A0>rq)ZVf*L!+`/!$[>V/ -5EBaO/TfOTnB5-_@n2k\Sg)A_U<t1,Irpl+]q`).lr<K6.-o%R(]+R;@_^B>'B0N;r#b^--AUQp -)#3N)9>MM_`+r]il]PE:g5=b@?eX=Mg:T?7#`u\3gWajVI*#!9!I'"!Gt2QR#;g^/+Hd$G8u### -Ip_>Ok1WE!rr@]NB>L2@^LMVoft[Ln0C\F5n>F(fmg/hJnF+6+cNm=MY-k07Xb;[Z"kB[j'$YTB -$.^M4Gfprc=PdGaboZ+>Rsr3q):e@4NB[l"8)c0-po6Q63aSqlg\`t\2!?bFXJ^t[\scmZhSH;< -IAk%-%l-BEQJ38Ur;4]eB`1"H(@"2h4n)hFL%)/%^PatoJ&@le^)hNK?L^(fCDrM.iS-Fubud/R -Mhtr&1r5(iLF5)BlVe[9YL<FNMf88DE*TTY\&uk6K7:aGZi7H'g\-g*NM+UEVd=a/pgpO3YCZ*# --(dt]=t"<lXdgFDg6ZL3fQ`/?VA'FX59E'"Gc/I:[^NO&Bmpb$r+u.Xj6m*)GV].g[@^&Ik[l?G -RATR`e?3ZIRa1.M:eDsEI+h$uD@#"ha2>ZGrZ(]#i<q:LGY^TP4>5[l0g*'21J+j/b0JO%],XZt -U($`l"`9W`oV&b^g[(tiT7<8+EjW$_\,4Y'k.`_De+S^uO$4ue[eKKQn4NU:[IJ-kqaB[pHo`@* -T[djVcf+f+l-W[_T'7Vc/"\$>B\Mb-m%KZ1On+Vnb^@arhs<Gp)VQ:ehbDLJB.[W3"6+J'!/81l -oc\\@QqrRRZ\/^1G;kqg/#,Ze1/9sn%d%#]%Tj7lE>)jq6-$)UNuc?g]f.>;H!9+pi?c^LqL;<0 -59`>MUn7t+<;Lh+%H>\JHk3p=r%G6uKAjN,Ke@MKbmnu1]<]qgD!-dUhWfA<jCGeULF<kWjoW=0 -)rC8f!.u@0)ra*#?]7/ipa6NRU#XC-_Ud-02cuD6][aBfoZ"ETpjj,cIqQIi'?6-5]F:cUNm(T2 -C[BB+rrBCGJA5dt!";/fHpmHoKKOUV>?n;k<ZWI4mIa+SVH%1?XE1/:\6!&T%"QPXaf_O:dbrNS -/aY+IK%AB$222rV5oakgN%1if!eJ,hJ-@pSnoFGRLV*OQdahdWotRL%A+6hu)u.2;cbuH^q::!' -C0i@=^)d,`nNVma]MflJiT#9#UZsW"-"LCrK4pP=/LP56f<)-0b!qC+PIf7nA)A2>+1*-W-\#du -K?)g[dX5-Uh&F>)'\BuJX8$STqWddkaeP0uhC3>QNNOV<gqbY<N?q`LQ-llBkg>@LJcS%!4JG(d -N/tmaRD*HDVrI@#j^H;5]Df9VrbZs'T)Sd#rX!t!pgrKXLYiY*BCNdeielOd.p)4p[GdYh9cHd? -dN7RLCT-]5L230`o(Q2E1qjaS0_:Vc/?.*LpgsI*"T%ZOm*F\9$J*tiL$+HYd=):7SdUn'>#k!E -[S9*Nj3P3`@Zp<M$`CIc/_8#hOfF*b53ZN@;7qnh":T`9VDF5<,]o`lmH=99?iL*uIt8(jrSN6. -o\!o&kPQ"6_B('!Fo)Sp-1KNG1eg?T^+8^)Kf&`M<Ns-I\%7k5MedEcc^Si(Yr].KZB^OLXL['< -;=))M1,4Z$TcSfU3#KV78\**jocfYY#cK>@JOL8PRY;GQ5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj! -5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj! -5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj! -5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj! -5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Tg$Z~> -%%EOF diff --git a/cfar-report/Figures/gpu-fpga-cmp.jpg b/cfar-report/Figures/gpu-fpga-cmp.jpg deleted file mode 100644 index b1eb401c39826c4fe64d9cb5d66ff9e5abfb5491..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/gpu-fpga-cmp.jpg and /dev/null differ diff --git a/cfar-report/Figures/gpu-fpga-cmp.pdf b/cfar-report/Figures/gpu-fpga-cmp.pdf deleted file mode 100644 index ffc563657b6d1f1567e81edfc84f0db9ce4fb872..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/gpu-fpga-cmp.pdf and /dev/null differ diff --git a/cfar-report/Figures/gpuMapping.pdf b/cfar-report/Figures/gpuMapping.pdf deleted file mode 100644 index bd055d8db06efd969f444357127b5c470d16a083..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/gpuMapping.pdf and /dev/null differ diff --git a/cfar-report/Figures/mapsExample.pdf b/cfar-report/Figures/mapsExample.pdf deleted file mode 100644 index a04b7453cd880e434cca1f14a1ca2c2b2851d96f..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/mapsExample.pdf and /dev/null differ diff --git a/cfar-report/Figures/mapsExampleD.pdf b/cfar-report/Figures/mapsExampleD.pdf deleted file mode 100644 index 260df7871cef05e7aa0c14a5e3f93a67649ae906..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/mapsExampleD.pdf and /dev/null differ diff --git a/cfar-report/Figures/mapsExampleS.pdf b/cfar-report/Figures/mapsExampleS.pdf deleted file mode 100644 index ffbdc80bfe7bad25d16037567e529fb55660e371..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/mapsExampleS.pdf and /dev/null differ diff --git a/cfar-report/Figures/mem-stall-improved.pdf b/cfar-report/Figures/mem-stall-improved.pdf deleted file mode 100755 index ad2cac59466d7ca242068ba3710fd54e3582ea73..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/mem-stall-improved.pdf and /dev/null differ diff --git a/cfar-report/Figures/memoryModel.pdf b/cfar-report/Figures/memoryModel.pdf deleted file mode 100644 index ec37f660e9d2557622fb2b0b35ac9e64c309c78e..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/memoryModel.pdf and /dev/null differ diff --git a/cfar-report/Figures/memoryModel.png b/cfar-report/Figures/memoryModel.png deleted file mode 100644 index 069cf8f20eb0f22ddcbc0d4d08c2191af5c3a7e6..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/memoryModel.png and /dev/null differ diff --git a/cfar-report/Figures/multicoreMapping.pdf b/cfar-report/Figures/multicoreMapping.pdf deleted file mode 100644 index 6e5f49192c995ed22d02bc8e06823143456f2c79..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/multicoreMapping.pdf and /dev/null differ diff --git a/cfar-report/Figures/parkd-waste-graphs.pdf b/cfar-report/Figures/parkd-waste-graphs.pdf deleted file mode 100755 index 5f33c3871c07d6a9b0176c74867bb307d5f283a8..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/parkd-waste-graphs.pdf and /dev/null differ diff --git a/cfar-report/Figures/visc.eps b/cfar-report/Figures/visc.eps deleted file mode 100644 index cd8d2ab9cd42d8dc32db3dc9b8fb90f49e137108..0000000000000000000000000000000000000000 --- a/cfar-report/Figures/visc.eps +++ /dev/null @@ -1,35407 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%BoundingBox: 21 42 682 506 -%%HiResBoundingBox: 21.000000 42.000000 682.000000 506.000000 -%%Creator: tiff2ps -%%Title: visc.tiff -%%CreationDate: Wed Nov 23 01:35:56 2011 -%%DocumentData: Clean7Bit -%%Origin: 0 0 -%%LanguageLevel: 1 -%%EndComments -% EPSF created by ps2eps 1.68 -%%BeginProlog -save -countdictstack -mark -newpath -/showpage {} def -/setpagedevice {pop} def -%%EndProlog -%%Page 1 1 -%%BeginSetup -%%EndSetup -%%Page: 1 1 -gsave -100 dict begin -720.000000 540.000000 scale -/bwproc { - rgbproc - dup length 3 idiv string 0 3 0 - 5 -1 roll { - add 2 1 roll 1 sub dup 0 eq { - pop 3 idiv - 3 -1 roll - dup 4 -1 roll - dup 3 1 roll - 5 -1 roll put - 1 add 3 0 - } { 2 1 roll } ifelse - } forall - pop pop pop -} def -/colorimage where {pop} { - /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def -} ifelse -%ImageData: 720 540 8 3 0 1 2 "false 3 colorimage" -/line 2160 string def -720 540 8 -[720 0 0 -540 0 540] -{currentfile line readhexstring pop} bind -false 3 colorimage -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef3f3f4a7a7a79d9d9c999a97979894 -9c9c989c9d999c9d999c9d999d9e9a9d9e9a9d9e9a9d9e9a9d9e9a9d9e9a9c9d99 -9c9d999ea09c9d9e9b9ea09d9ea09e9d9e9c9d9e9c9b9c9b9d9e9c9d9e9c9b9c9a -9c9e9b9d9f9b9c9e989c9e979c9e979b9c989a9a969c9d9a9c9c989b9c989b9b97 -9a9c989b9c989a9b979a9b979a9b979a9a969798969d9d9cefefeffefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefed7d7d7fefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfd -edededa2a2a2bcbcbabbbcb8b8b8b0bfc1bbc2c3bdc2c3bdc2c3bdc3c4bec3c4be -c3c4bec3c5bfc3c5bfc3c5bfc3c5bfc3c5bfc8c9c4c3c5bfc1c3bdc2c4bec0c3bd -bfc1bac3c7bfc7c8c3c4c8c3c4c7c4c3c5c2c2c4bec1c4bbc1c4bac1c3babebfb9 -babbb7c0c1bbbfc0babec0babdbfb9bbbcb8babbb6babab4b7b8b2b4b5b0b1b2ac -b1b2ac939392e7e7e7fbfbfbfefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfcd2d2d2 -828282e7e7e7fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffedededa1a1a0b9b9b7b8b8b5b5b6b0bebeb7 -c0c1bcc0c1bcc0c1bcc1c2bdc1c2bdc1c2bdc1c3bec1c3bec2c4bfc2c4bfc0c2bd -c4c7bfbabdb7b3b6aeb3b6afb5b8b0b1b5adadb0a8adafa7b5b7b2c0c2bfc2c4c1 -bec0babfc2bac0c2b8c0c1b7bbbdb5b8b8b1bcbeb7bdbeb8bcbdb6bbbcb5bdbeb7 -bdbeb7bbbdb6b7b9b2b3b4b0b2b3acb1b2ad939392e8e8e8fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf3f3f38787877f7f7f979797f7f7f7fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffafafacacacadadadaffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeee -a3a3a3bbbbb9b9b9b6b6b7b0bebfb7c0c2bcc1c2bcc1c2bcc2c3bdc2c3bdc2c3bd -c3c4bec3c6bfc1c3bdc2c4bec6c7c0a2a59e9c9f98bbbeb7b6bcb2979d94797e77 -6a70697478718e928dafb1adbfc1bebec0b8bfc3babfc3b9bfc2b8babcb6b7b8b1 -bcbdb7bdbeb8bcbdb8bbbcb6babbb5b9bab4b6b7b1b6b7b1b4b5b0b2b3adb2b2ad -969695eaeaeafefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9b7b7b77f7f7f7f7f7f -7f7f7fcececefbfbfbfefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffc8c8c88e8e8e737373919191e5e5e5ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffc9c9c9949494979797e3e3e3ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -989898000000363636fffffff7f7f73d3d3d181818c2c2c2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe4d4d4d -171717adadadffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffeeeeeea6a6a5bcbcbabbbbb6b7b8b0bfc0b8c2c3bd -c2c3bdc2c3bdc2c3bdc3c4bec4c6bfc3c6bfc2c4bec2c4bec4c7bfa7a9a380827d -9599945d605c262a260b120e0809080606061415142f332e555754a7a9a5c0c4bd -c0c3bac0c2b8c0c2b8b8bab3b8bab4bfbfb8bdbeb8bcbdb8bcbdb7babbb5b9bab4 -b7b9b2b7b9b2b5b6b0b3b4aeb2b2ad949493eaeaeafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfce5e5e58383837f7f7f7f7f7f7f7f7f8e8e8ef3f3f3fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfb565656000000000000000000000000202020 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffa2a2a2747474d1d1d1ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebebeb -0f0f0f000000000000868686ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff646464000000686868ffffffc4c4c4000000 -000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffa2a2a2747474 -d1d1d1ffffffffffffdfdfdf000000000000adadadffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeea6a6a5 -bdbdbbbcbcb8b7b8b0c0c1bbc2c3bdc2c3bdc2c3bdc3c4bec3c4bec4c6bfc3c6bf -c1c3bdc7c8c1b2b4ae82857e7f7f7b999d9a272a2a03040815181a222629131719 -090d102629281b1c1a989a96c3c4bcc1c5bcc0c3b8bfc2b8b9bab3b8bab4bfbfb8 -bdbfb8bdbeb8bcbdb8bbbcb6babbb5b9bab4b7b9b2b6b7b1b3b4afb2b3ae949493 -eaeaeaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef7f7f7a2a2a27f7f7f8585857f7f7f848484 -7f7f7fbcbcbcf9f9f9fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff808080000000 -1010109c9c9cbababa7c7c7c5b5b5bffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff121212000000b9b9b9ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff6f6f6f000000030303000000606060ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131 -0000009b9b9bfffffff8f8f8a8a8a8bcbcbcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff121212000000b9b9b9fffffffffffffdfdfdadadadb4b4b4 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffeeeeeea6a6a5bdbdbbbdbdb8b8b9b2c2c3bcc4c6bfc4c6bf -c4c6bfc4c6bfc4c6bfc6c7bfc4c7bfc6c7c0bec1ba8284805d5f5a7476709ba09c -40444a060a1023282e3a3e461b202521262d32353716181661625fc1c3bdc3c7bf -c1c4bac0c3b9b9bab3b8bab4bfbfb8bfc0b9bfbfb9bdbeb8bcbdb8bbbcb6babbb5 -babbb5b7b9b2b4b5b0b3b4ae949493eaeaeaffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefbfbfbd4d4d4 -7f7f7f8181818e8e8e7f7f7f9292927f7f7f858585e9e9e9fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff313131000000757575ffffffffffffffffffffffffffffff -939393868686efefefffffffffffffd1d1d1868686b0b0b0ffffffffffffaeaeae -737373646464939393f6f6f6d9d9d98383830000000000007f7f7f949494ffffff -ffffffffffffd0d0d0858585656565818181dfdfdfffffffffffffc6c6c6858585 -e4e4e4cdcdcd7373736f6f6fd7d7d7ffffffd3d3d37575756e6e6eccccccffffff -ffffffffffffe4e4e4878787646464747474c9c9c9ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffdddddd060606090909 -6f6f6f0000003a3a3afffffffffffffffffffbfbfb939393a0a0a0f6f6f6989898 -686868939393fcfcfcffffffffffffcacaca878787ddddddcfcfcf757575727272 -cfcfcffffffffffffff8f8f8050505000000cececeffffffc9c9c9858585c1c1c1 -fffffffffffff2f2f29898986b6b6b737373c7c7c7ffffffffffffffffffadadad -6f6f6f828282e2e2e2bababa878787eeeeeed9d9d98383830000000000007f7f7f -8f8f8f8f8f8f8f8f8f8f8f8fc3c3c3ffffffffffffffffffd0d0d0848484656565 -7d7d7dcdcdcdffffffffffffffffffc6c6c6858585e4e4e4cfcfcf7575756f6f6f -ccccccffffffffffffffffffe4e4e4878787646464747474c9c9c9ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffeeeeeda7a7a5bebfbb -bebfb8b8b9b0c2c3bbc6c7bfc6c7bfc6c7bfc6c7bfc6c7bfc6c7bfc7c7c4c7cac6 -b6b8b26b6f6b676c67777d778f98945c64651e2426282e323d464b252c31353b43 -373b3e151918292b29b7bbb6c4c8c1c3c6bdc3c3bcb8b9b2b9bab5bfc0babfc1bb -bfc1bbbfc0b9bdbfb8bcbdb7bbbcb6bbbcb6b9bab4b6b7b0b5b5b0959594eaeaea -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf6f6f69292927f7f7f9a9a9a9090907f7f7f9d9d9d8f8f8f -7f7f7faaaaaaf8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff252525000000303030 -eeeeeefffffffffffffffffffdfdfd080808000000b5b5b5ffffffffffff4c4c4c -000000636363ffffff525252000000040404060606000000bdbdbd646464000000 -000000000000000000141414ffffffffffff787878020202000000040404000000 -0a0a0ad7d7d7ffffff4b4b4b0000006d6d6d0202020000000000002121219e9e9e -0404040000000000000d0d0defefefffffffc7c7c70a0a0a0000000a0a0a000000 -3d3d3dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff575757000000767676ababab000000141414ffffffffffffffffff -cbcbcb0000003434342d2d2d000000000000000000717171ffffffffffff4b4b4b -0000005f5f5f0202020000000000000a0a0ae6e6e6ffffffcacaca000000070707 -fafafaffffff484848000000828282ffffffcecece1a1a1a000000000000000000 -040404fcfcfcfdfdfd535353000000000000000000191919181818000000ececec -646464000000000000000000000000000000000000000000000000666666ffffff -ffffff727272010101000000000000000000010101a6a6a6ffffffffffff4b4b4b -0000006d6d6d0202020000000000000c0c0cedededffffffc7c7c70a0a0a000000 -0a0a0a0000003d3d3dffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffeeeeeca8a8a5bfc1babebfb8b9bab0c2c3b9c6c7bfc6c7c0c6c7c0 -c6c7c0c6c7c0c6c7c0c4c7c3c4c7c3afb1af7d837e757c77767f7a858f8b656c6c -1b21211217190e101415191c1e222617191b080c0c151716a2a4a3c5c7c0c4c7bf -c4c3bdb8b9b1babbb5c0c1b9c1c2bac1c2bac0c1b9bebfb8bdbeb8bbbcb6bbbcb6 -b9bab4b6b7b1b6b6b1959595e8e8e8fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbe8e8e8818181888888 -b6b6b69393937f7f7fa3a3a3b1b1b1818181919191f2f2f2fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff7d7d7d000000000000181818a6a6a6ffffffffffffffffff303030 -0000008f8f8fffffffeeeeee070707000000c4c4c4c0c0c0000000202020f0f0f0 -fbfbfbb2b2b2f7f7f7c7c7c74747470000003b3b3ba4a4a4c5c5c5ffffff9a9a9a -000000272727dadadaf6f6f63232320000008a8a8affffff181818000000020202 -6e6e6e818181000000000000030303676767888888000000000000c5c5c5ffffff -404040000000919191ffffffe0e0e0c5c5c5ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffc9c9c90000000f0f0fedededcecece -000000000000efefefffffffffffff989898000000010101282828aaaaaa5a5a5a -000000191919ffffffffffff181818000000020202737373adadad0a0a0a000000 -999999ffffff979797000000343434ffffffffffff151515000000b5b5b5f4f4f4 -1d1d1d000000515151c5c5c5a4a4a45f5f5fffffff8b8b8b0000000d0d0d999999 -9b9b9b101010000000202020ffffffc7c7c74747470000003b3b3ba4a4a4a4a4a4 -a4a4a41a1a1a000000989898ffffff8f8f8f000000101010a8a8a8d9d9d94e4e4e -000000292929ffffffffffff1818180000000202026b6b6b8b8b8b000000000000 -bfbfbfffffff404040000000919191ffffffe0e0e0c5c5c5ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffeeeeeca8a8a5bfc1bbc0c0b9 -babcb2c3c5bcc6c7bfc6c7c0c6c7c0c6c7c0c6c7c0c6c7c0c4c7c3c4c7c3afb1ad -777b776166636d76717e857f6364650c0d0d0a0a0d06080a0a0a0f0b0c0f08090c -0508080e0f0e8c8e8cc3c5c0c5c7bfc4c3bdb8b9b1babbb5c0c1b9c1c2bac1c2ba -c0c1b9bebfb8bdbeb8bbbcb6bbbcb6b9bab4b6b7b1b6b6b1959595e8e8e8fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffafafaeaeaeac6c6c6bfbfbfc6c6c69898987f7f7faaaaaac7c7c7bcbcbc -cfcfcfefefeffcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfc727272020202000000 -0000007f7f7fffffffffffff5c5c5c000000696969ffffff9292920000002f2f2f -ffffffa5a5a50000000e0e0eb6b6b6ffffffffffffffffffffffff444444000000 -878787fffffffffffffafafa191919000000a7a7a7e0e0e0ababab121212000000 -bdbdbde4e4e40000000000007b7b7bffffffe4e4e40000000000006f6f6fffffff -efefef000000000000d4d4d4ffffff252525000000575757ecececffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -3f3f3f000000838383fffffff0f0f0000000000000c9c9c9ffffffffffff646464 -000000151515e9e9e9ffffffb4b4b4000000060606ffffffe4e4e4000000000000 -7e7e7effffffffffff343434000000868686ffffff646464000000676767ffffff -e2e2e2000000000000e8e8e8909090000000212121f9f9f9ffffffffffffffffff -fbfbfb171717000000959595ffffffffffff747474000000535353ffffffffffff -444444000000878787fffffffffffff9f9f9050505000000cbcbcbf7f7f7111111 -0000009d9d9dffffffffffffafafaf000000080808ffffffe4e4e4000000000000 -797979fffffff6f6f6000000000000cececeffffff252525000000575757ececec -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffeeeeeca8a8a5c1c2bbc0c1b9bbbcb3c3c5bcc6c7bfc6c7c0c6c7c0c6c7c0 -c6c7c0c6c7c0c7c7c4c7c9c5b3b7b27378756e756f6c7470767e7b6a6c6d121214 -00000000000000000404000905070a0000011114129a9b99c4c5c1c5c7bfc4c3bd -b8b9b1babbb5c0c1b9c1c2bac1c2bac0c1b9bebfb8bdbeb8bbbcb6bbbcb6b9bab4 -b6b7b1b6b6b1959595e8e8e8fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbefefefdfdfdfd9d9d9d7d7d7 -9b9b9b7f7f7fb0b0b0d9d9d9d9d9d9e1e1e1f2f2f2fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffcbcbcb232323000000040404edededffffff888888000000 -444444fbfbfb212121000000a1a1a1ffffffeaeaea1d1d1d0000000000003e3e3e -ebebebffffffffffff111111000000bababaffffffffffffc2c2c2000000000000 -0000000000000000001b1b1b989898ffffffb1b1b10000000b0b0bf5f5f5ffffff -bababa000000060606efefefffffffc8c8c8000000080808fbfbfbffffff888888 -0000000000000c0c0c9d9d9dffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffb3b3b3000000020202959595a1a1a1a1a1a1080808 -000000a3a3a3ffffffffffff313131000000838383ffffffffffffa0a0a0000000 -1d1d1dffffffb1b1b10000000c0c0cf6f6f6ffffffffffff2020200000009d9d9d -ffffff3131310000009a9a9affffffafafaf0000001b1b1bffffff3f3f3f000000 -7b7b7bffffffffffffffffffffffffc6c6c6000000030303f2f2f2ffffffffffff -3f3f3f000000878787ffffffffffff111111000000bababaffffffffffffcccccc -000000050505f8f8f8bababa000000070707f7f7f7ffffffffffffa1a1a1000000 -181818ffffffb1b1b10000000b0b0bf5f5f5ffffffcecece000000050505f8f8f8 -ffffff8888880000000000000c0c0c9d9d9dffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffeeeeeca8a8a6c1c2bbc2c3bcbabbb1 -c5c6bcc7c7c1c7c8c2c7c8c2c6c8c0c6c7c0c6c7c0c6c7c4c6c8c4babcb9808680 -72787569726d7077738c8d8f71717349494c3c3c403131362f2e3635373b444948 -6b706fa6a8a5c4c5c0c4c7bfc4c3bdb7b8b1bebeb7c0c1bac2c3bcc2c3bcc1c2ba -c0c0bbbfc0b9bcbdb7babbb5b9bab4b6b7b1b6b7b2969696eaeaeafefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf8f8f8f2f2f2eeeeeee3e3e39d9d9d7f7f7fb4b4b4e8e8e8eeeeeef3f3f3 -fafafafefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffacacac000000 -000000d9d9d9ffffffb3b3b30000001e1e1e969696000000272727fbfbfbffffff -ffffffeeeeee7474740505050000006a6a6affffffdddddd000000000000ededed -ffffffffffff959595000000292929a9a9a9bcbcbcd3d3d3fdfdfdffffffffffff -7e7e7e0000004c4c4cffffffffffff878787000000414141ffffffffffff949494 -000000363636ffffffffffffffffffb8b8b8303030000000020202e8e8e8ffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfc2a2a2a000000 -0000000000000000000000000000000000007e7e7efffffff8f8f8050505000000 -cececeffffffffffff5f5f5f000000555555ffffff7e7e7e0000004e4e4effffff -ffffffdfdfdf000000000000d5d5d5f8f8f8050505000000cdcdcdffffff7c7c7c -0000004e4e4effffff131313000000a9a9a9ffffffffffffffffffffffff9b9b9b -000000232323ffffffffffffdedede020202000000bababaffffffdddddd000000 -000000edededffffffffffff999999000000313131ffffff949494000000282828 -ffffffffffffffffff616161000000515151ffffff7e7e7e0000004c4c4cffffff -ffffff9a9a9a000000303030ffffffffffffffffffb8b8b8303030000000020202 -e8e8e8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -eeeeeca8a8a6c1c2bbc2c3bcbabbb1c5c6bcc7c7c1c7c8c2c7c8c2c7c8c2c7c8c2 -c7c8c2c6c8c3c4c8c3c0c2c08c938e72777269726e707874767a7a858b8b828588 -84868c84868c81838a8083887c83817276759ea09cc3c4c0c5c5bfc4c3bdb8b9b1 -bebeb6c0c2bac2c3bcc2c3bcc1c2bac0c1bbc0c0b9bcbeb7babbb5b9bab4b6b7b1 -b6b7b2969696eaeaeafefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefcfcfcf8f8f8e9e9e99d9d9d -7f7f7fb6b6b6eeeeeef9f9f9fcfcfcfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffe2e2e2acacac -fefefeffffffffffff6e6e6e000000101010fdfdfdffffffdfdfdf000000010101 -111111000000aeaeaefffffffdfdfdfdfdfdffffffffffff6c6c6c0000005a5a5a -ffffffadadad000000111111ffffffffffffffffff919191000000232323ffffff -ffffffffffffffffffffffffffffff4a4a4a000000808080ffffffffffff555555 -000000747474ffffffffffff616161000000696969fffffffbfbfbffffffffffff -ececec000000000000dadadafefefe9191917e7e7eeeeeeeffffffffffffffffff -ffffffffffff9b9b9b000000151515979797979797979797979797313131000000 -585858ffffffcacaca000000000000c8c8c8ffffffd3d3d3070707000000b4b4b4 -ffffff4a4a4a000000494949fefefefefefe5c5c5c000000343434ffffffcacaca -000000060606fafafaffffff4a4a4a000000818181ffffff212121000000868686 -ffffffffffffb9b9b9ffffff9494940000001b1b1bfffffff2f2f23c3c3c000000 -000000edededffffffadadad000000111111ffffffffffffffffff666666000000 -646464ffffff989898000000171717fcfcfcffffffd3d3d3080808000000b5b5b5 -ffffff4a4a4a000000808080ffffffffffff666666000000646464fffffffbfbfb -ffffffffffffececec000000000000dadadaffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffeeeeeca8a8a6c1c2bbc2c3bcbabbb1c5c6bc -c7c7c1c7c8c2c7c8c2c7c9c3c8c9c3c8c9c3c8c9c4c3c7c2c7cac79da19c6d7470 -67706c6f7772777f7e838c8a81898a7f85887a8288737a816f73776f7573777a78 -b6b9b7c4c7c1c4c4bfc4c3bdb9bab2bfc0b8c1c3bcc2c3bcc2c3bcc1c2bac0c1bb -c0c0b9bcbeb7babbb5b9bab4b6b7b1b6b7b2969696eaeaeafefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef1f1f1f1f1f1f1f1f1 -cacaca7575755151513f3f3f3c3c3c3c3c3c3b3b3b3c3c3c393939383838393939 -393939393939393939393939383838383838383838383838383838383838393939 -3939393a3a3a3a3a3a3a3a3a3b3b3b3b3b3b3c3c3c4141414848483d3d3d313131 -353535363636363636363636383838373737363636353535333333333333333333 -3232323131313030302f2f2f2f2f2f2f2f2f2d2d2d2d2d2d2c2c2c2b2b2b2a2a2a -292929292929282828282828282828272727262626262626252525242424242424 -2222222222222222222121212020202020202020201f1f1f1f1f1f1e1e1e171717 -1b1b1b191919060606e7e7e7ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbeaeaea9d9d9d7f7f7fb6b6b6f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff8e8e8e0000002020204d4d4d2d2d2d0000000000009f9f9f -fffffffffffffefefe0c0c0c0000000000004d4d4dffffffffffffa6a6a62a2a2a -828282858585141414000000acacacffffffa5a5a5000000000000414141727272 -ffffffc4c4c40000000000004b4b4b828282686868282828cfcfcfffffff171717 -000000b3b3b3ffffffffffff222222000000a8a8a8ffffffffffff2e2e2e000000 -9c9c9cffffff2c2c2c6161618f8f8f5151510000002e2e2efefefecdcdcd000000 -000000d9d9d9fffffffffffffffffffffffff5f5f51919190000008f8f8fffffff -ffffffffffffffffff6e6e6e000000323232ffffff9797970000000000000b0b0b -4242420e0e0e000000474747fefefeffffff1717170000000000002a2a2a313131 -000000040404c2c2c2ffffff979797000000333333ffffffffffff171717000000 -b4b4b4ffffff7474740000000505054646462b2b2b212121ffffffbfbfbf000000 -000000393939181818131313000000202020ffffffffffffa5a5a5000000000000 -414141727272ffffff333333000000989898ffffffd4d4d4030303000000404040 -6262620f0f0f0000005c5c5cffffffffffff171717000000b3b3b3ffffffffffff -333333000000989898ffffff2c2c2c6161618f8f8f5151510000002e2e2efefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeed -a9a9a7c2c2bdc3c4bfbbbcb3c6c6bec7c8c2c7c7c3c7c7c2c9cbc5c9cac4c8c9c2 -c9cac4c5c8c2c7cac5b7bab4898e887b8079717571494f4d393c3a303534444949 -72797879807d898e8b9ba49bafb5adc4c6c0c7cac3c5c7bfc1c1b9b9bab1bfbfb3 -c2c3b8c2c3bac2c3bcc1c2bac0c0b9bec0b8bbbcb6babbb3babbb3b8b9b1b7b9b2 -979796eaeaeafefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef1f1f1f1f1f1f1f1f1f6f6f6f8f8f8dfdfdfb5b5b5828282585858 -4141413b3b3b3d3d3d3d3d3d3e3e3e3e3e3e3e3e3e3d3d3d3d3d3d3d3d3d3d3d3d -3d3d3d3c3c3c3c3c3c3c3c3c3b3b3b3b3b3b3c3c3c3c3c3c3c3c3c3c3c3c3d3d3d -4545454646464444444747473f3f3f343434323232313131343434353535363636 -3535353333333333333232323131313131312f2f2f2f2f2f2e2e2e2e2e2e2d2d2d -2d2d2d2b2b2b2b2b2b2b2b2b2a2a2a292929292929282828282828282828272727 -262626262626252525242424242424222222222222222222212121202020202020 -2020201f1f1f1f1f1f1e1e1e1919191818181a1a1a060606e7e7e7ffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbeaeaea9d9d9d7f7f7f -b6b6b6f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffcccccc2e2e2e000000 -000000000000292929aeaeaeffffffffffffffffffffffff3737370000000f0f0f -e4e4e4ffffffffffffb2b2b20c0c0c000000000000121212939393ffffffffffff -eaeaea212121000000000000939393ffffffffffff808080080808000000000000 -010101424242f9f9f9ebebeb000000060606e8e8e8fffffff4f4f4020202040404 -dededefffffffbfbfb070707030303d4d4d4ffffff3f3f3f000000000000000000 -474747dededeffffff919191000000272727fefefeffffffffffffffffffffffff -999999000000242424f8f8f8ffffffffffffffffffffffff9595950000001e1e1e -ffffff6464640000004141411b1b1b000000010101585858efefefffffffe4e4e4 -0000000000005b5b5b010101000000191919b0b0b0ffffffffffff6c6c6c000000 -6e6e6effffffebebeb000000060606e8e8e8ffffffdbdbdb515151080808000000 -141414a4a4a4fffffffefefe555555000000000000393939a0a0a00000005e5e5e -ffffffffffffeaeaea212121000000000000939393fdfdfd090909020202d0d0d0 -ffffffffffff9999990f0f0f0000000000000f0f0f828282fcfcfcffffffebebeb -000000060606e8e8e8fffffffdfdfd090909030303d0d0d0ffffff3f3f3f000000 -000000000000474747dededeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffeeeeeea9a9a8c2c2bfc4c4c0bbbcb4c6c6bec7c8c3 -c7c7c4c7c7c4c7c7c2c8cac4c0c1bab1b2aeacafa9a1a2a0989c988e908b70726e -474846131413040404020202181a18656565777a779a9f9ab1b9b2bec2bec1c4bf -b9bbb7bebeb9c3c2bebabbb1c3c6bac3c4bac2c3b9c2c3bcc1c2bac0c1b9bdbfb7 -bbbcb5bbbcb5babbb3b8b9b1b7b9b2979796eaeaeafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef1f1f1f1f1f1f1f1f1f0f0f0 -f1f1f1f6f6f6fbfbfbfbfbfbe9e9e9c0c0c08787875e5e5e4444443c3c3c404040 -4141414242424242424343434444444444444141414141414141414040403f3f3f -3e3e3e3e3e3e3e3e3e3d3d3d3e3e3e414141444444454545444444434343424242 -4141413a3a3a3535353030303434343333333333333131312f2f2f2f2f2f2f2f2f -2e2e2e2d2d2d2d2d2d2c2c2c2b2b2b2b2b2b2a2a2a2a2a2a2a2a2a2a2a2a292929 -292929282828282828282828272727262626262626252525242424242424222222 -2222222222222121212020202020202020201f1f1f1f1f1f1e1e1e1b1b1b161616 -1b1b1b0b0b0be7e7e7ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbeaeaea9d9d9d7f7f7fb6b6b6f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffe8e8e8d3d3d3f2f2f2ffffffffffffffffffffffff -ffffffdcdcdc0f0f0f000000a4a4a4fffffffffffffffffffffffff9f9f9d6d6d6 -e0e0e0fdfdfdfffffffffffffffffffffffffbfbfbdbdbdbe9e9e9ffffffffffff -fffffffffffff6f6f6d8d8d8d5d5d5f3f3f3fffffffffffffffffff8f8f8fbfbfb -fffffffffffffffffff8f8f8fafafafffffffffffffffffff9f9f9fafafaffffff -ffffffffffffe7e7e7d3d3d3f2f2f2ffffffffffffefefef181818050505c5c5c5 -fffffffffffffffffffffffffffffffefefef4f4f4fefefeffffffffffffffffff -fffffffffffffffffff4f4f4fbfbfbffffff3030300000009d9d9dfafafad5d5d5 -f2f2f2ffffffffffffffffffb0b0b00000001d1d1dffffffe7e7e7ddddddfefefe -fffffffffffffffffffefefef5f5f5fffffffffffffffffff8f8f8fbfbfbffffff -fffffffffffffffffff2f2f2d9d9d9fcfcfcffffffffffffffffffffffffe6e6e6 -e2e2e2fffffffffffff6f6f6fffffffffffffffffffffffffbfbfbdbdbdbe9e9e9 -fffffffffffff9f9f9f9f9f9fffffffffffffffffffffffffbfbfbdddddde0e0e0 -fdfdfdfffffffffffffffffffffffff8f8f8fbfbfbfffffffffffffffffff9f9f9 -f9f9f9ffffffffffffffffffe7e7e7d3d3d3f2f2f2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbf9fdfdfa -f9f9f9f2f2f0f2f2eeecece9eaeae6e2e2e0dddddbdbdbd8dddddbdddddbdadad8 -d9d9d7d8d8d6d9d9d7dbdbd9dadad8cacac8c2c2c0d9d9d6f5f5f1fcfcfbfcfcfb -fcfcfcfcfcfcfbfbfbfcfcfcfcfcfcfcfcfcfbfbfbfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeea9a9a8 -c2c2bfc4c4c0bbbcb4c6c6bec7c8c4c7c7c4c7c7c5c9c9c6c0c1bda4a4a39c9d9a -8789868385828587847374725d5f5c353835121313010101000404060706101210 -161616282b2b3c40408c8f90b0b3b38e8e91969699c4c2c2b9bbb4bec0b7c3c4bd -c2c3bcc2c3bcc1c2bac0c1b9c0c0b9bdbfb7bbbcb5babbb3b8b9b1b7b9b2979796 -eaeaeafefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef1f1f1f1f1f1f1f1f1f2f2f2f1f1f1f1f1f1f1f1f1f1f1f1f5f5f5fafafa -fafafaecececcfcfcf9f9f9f737373525252464646434343464646494949484848 -4a4a4a4747474747474747474545454343434141413f3f3f3f3f3f3d3d3d3a3a3a -3c3c3c4040404343434343434343434141414141414141413d3d3d3333332f2f2f -2c2c2c2c2c2c2e2e2e2d2d2d2b2b2b2a2a2a2a2a2a2a2a2a2a2a2a2929292a2a2a -2a2a2a2a2a2a292929282828282828282828272727272727282828262626262626 -2626262525252424242424242323232222222222222121212020202020201f1f1f -1f1f1f1f1f1f1e1e1e1c1c1c1414141a1a1a101010e8e8e8ffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbeaeaea9c9c9c7f7f7fb6b6b6 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff8f8f8313131000000595959ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff656565010101a5a5a5ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f8f8 -050505000000cfcfcfffffffffffffffffffffffffffffffffffff7d7d7d000000 -4f4f4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfcfcfcfc -fcfcfcfcfcfcfcfcfbf8f8f8dfdfdb9999975e5e5c5555536868666c6c6b6b6b69 -6868666969676a6a686b6b696c6c6b6b6b6968686663636161615f61615f4b4b48 -2e2e2d4c4c4bc0c0bdf2f2f1fafafafbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfc -fbfbfbfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffeeeeeea9a9a8c2c2bfc4c6c0babbb3c6c6bec7c8c3c7c8c5 -babab8aeaeacbcbcbdc6c6c8c8c8c89a9d9b8385847f807ea8aca9b8bbb9b2b4b3 -7377781b1d1d1011110f10100f1212131717232628363b3d9fa0a8d6d6ddd7d6dc -bfbec6c5c4c9b7b7b6b0b1abbdbeb7c1c2bcc1c2b9c1c2b8c1c2b9c0c1b9bebfb7 -bbbcb5babbb3b8b9b1b7b9b2979796eaeaeafefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefeefefefefefeff0f0f0f1f1f1f1f1f1 -f1f1f1f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f6f6f6f6f6f6fefefef3f3f3d3d3d3 -a4a4a47373735353534848484848484c4c4c5050504f4f4f4e4e4e4d4d4d4c4c4c -4a4a4a4747474343434141413f3f3f3e3e3e3b3b3b3c3c3c3c3c3c404040414141 -4141413f3f3f3e3e3e3c3c3c3b3b3b3737372f2f2f2727272828282a2a2a292929 -2a2a2a2a2a2a2a2a2a292929272727272727272727272727272727272727262626 -262626262626262626262626252525252525242424242424222222232323222222 -2222222121212020201f1f1f1f1f1f1f1f1f1f1f1f1e1e1e1c1c1c161616191919 -131313e8e8e8ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbeaeaea9c9c9c7f7f7fb6b6b6f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e6e6e -000000202020efefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfb767676afafafffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffcbcbcb000000080808fafafaffffffffffffffffff -ffffffffffffffffff4b4b4b000000828282ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefcfcfcfcfcfcfcfcfcfcfcfcfcfcfceeeeed9e9e9c464644 -2f2f2c2e2e2c3131303434313636343838363b3b393b3b393b3b393c3c3a3c3c3a -3a3a38393937373736363634393936393938383836424240949491e8e8e8fbfbfb -fbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfbfbfbfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffeeeeeea9a9a9c2c2bf -c7c7c3b8bab2c5c5bec3c5c0adadaa949493acacafbebec4c1bfc7b4b4b9a1a2a2 -929494707272b8b9b9dbdcdcd9dedec8cdcf474c4d252b2b202626191c1d1e2223 -2f353734373e5e6267d5d5dfe2e2edd8d7e0c4c2cab8b8baaaa9abb3b3b0bdbdb7 -c0c1bac4c4bac0c2b9c0c1b9bebfb7bcbdb6babbb3babbb2babbb5979796eaeaea -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefffffffffffffefffffeffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -efefefefefefefefefefefeff0f0f0f0f0f0f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2 -f4f4f4f6f6f6f6f6f6f8f8f8fcfcfcfafafaf4f4f4d4d4d49f9f9f707070505050 -4b4b4b5151515353535353535454545151514f4f4f4b4b4b484848444444404040 -3e3e3e3d3d3d3b3b3b3b3b3b3a3a3a3a3a3a3939393c3c3c3c3c3c393939383838 -3838383636363232322c2c2c272727272727282828282828272727272727262626 -262626262626272727262626252525242424252525242424242424232323242424 -2424242222222222222222222121212121212020202020201f1f1f1e1e1e1f1f1f -1f1f1f1e1e1e1e1e1e1717171717171c1c1ce9e9e9ffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbeaeaea9c9c9c7f7f7fb6b6b6f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffe5e5e5d3d3d3f6f6f6ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcd4d4d4 -e5e5e5ffffffffffffffffffffffffffffffffffffffffffe8e8e8d4d4d4fafafa -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefcfcfcfcfcfcfcfcfc -fbfbfbfbfbfadfdfdd82827f4c4c4a2e2e2e2b2b292e2e2c2f2f2d333331323230 -333331343432343432363634353533353533343433353533333332343433363633 -3636343131303636359e9e9dedededfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffeeeeeea9a9a9c3c3c0c7c7c3b8bab2c6c7c2acada5878884969696 -bdbcc2c0bec6c7c6d1cdccd2a4a5a87e80826b6c6eb9babcdcdcdfd9dcdfd9e0e4 -676d6f2c3134262b2e151a1c1216182c2e3232373a323638babbc0dddde3dddae1 -c3c1c8b9b7bda4a3aa8f8e8eaeafabc0c1b8c5c6b9c1c3b9c0c1b9bebfb7bcbdb6 -babbb3babbb2babbb5979796eaeaeafefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefefefefcfcfcf9f9f9f7f7f7f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7 -f8f8f8f8f8f8f8f9f8f9f9f9f9f9f9fafafafafafafafafafafafafbfbfbfbfbfb -fbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfbfbfbfbfbfbfbfafafa -fafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f7f8f7f7f7f7f6f6f6 -f6f6f6f6f6f6f6f6f6f7f7f7f8f8f8fbfbfbfefefefcfcfcfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefeebebebecececedededefefefefefefefefef -f0f0f0f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2f5f5f5f5f5f5f6f6f6f7f7f7f7f7f7 -f8f8f8fafafafdfdfdf2f2f2c1c1c1717171404040494949555555585858575757 -5555555252525050504d4d4d4a4a4a4545454141413f3f3f3c3c3c3b3b3b383838 -3737373636363434343838383a3a3a3939393737373535353333333131312c2c2c -262626252525272727272727262626262626252525252525252525242424242424 -242424232323232323222222222222222222222222222222222222212121202020 -2020201f1f1f1f1f1f1d1d1d1d1d1d1c1c1c1b1b1b1a1a1a151515191919202020 -eaeaeafffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -eaeaea9c9c9c7f7f7fb6b6b6f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefcfcfcfcfcfcfcfcfcfbfbfbfbfbfadbdad86f6f6c373837292926 -2626242e2e2c2e2e2b2b2b2b2b2b292e2e2c2e2e2d31312f343432373736353533 -2f2f2d31312f30302f3232312f2f2d2f2f2d30302f30302e3e3e3eaaaaaaf1f1f1 -fcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffeeeeeea9a9a9c3c3c0c7c7c3 -b9bbb3c2c3bc969790878783949496b3b3bbbcb8c5c6c4d2cbcbd4959599424245 -636568babbc0dcdde2dbdee1dfe6ea8f979b363d402f3537293033292f3234393c -3b4042313537a7a7aad6d7dbd8d8dcc8c6cbb7b6beb4b2b95454561d1d1e4d4e48 -bdbeb1c2c4bac0c1b9bebfb7bcbdb6babbb3babbb2babbb5979796eaeaeafefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdecececc4c4c4949695767876 -6567666264636769686e6f6f747675787a797e807f8687878b8e8d939594999b9a -9d9f9e9fa2a0a4a5a4a8a8a8a8a8a8acacacb0b0b0b1b1b1b5b5b5b6b6b6b8b8b8 -b9b9b9bababababababababababababbbbbbbbbbbbbbbbbbbababab9b9b9b6b6b6 -b5b5b5b1b1b1adadadabababa5a5a5a1a1a19c9c9c9797979191918c8c8c888888 -8182827c7e7d7678766e6f6f6669685f61605d5d5d6565657070708a8a8ab7b7b7 -e0e0e0fbfbfbfefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeeaeaea -ebebebecececedededededededededefefeff0f0f0f1f1f1f1f1f1f1f1f1f1f1f1 -f2f2f2f4f4f4f5f5f5f6f6f6f7f7f7f7f7f7f6f6f6f6f6f6f8f8f8fefefeeeeeee -9797974141414949495858585a5a5a5c5c5c5b5b5b5959595555555252524f4f4f -4c4c4c4949494343434040403e3e3e3a3a3a383838343434333333323232343434 -3434343737373333333434343434343131312d2d2d262626222222222222242424 -242424242424242424242424232323232323232323232323222222222222222222 -2020202020202121212020202020201f1f1f1d1d1d1b1b1b181818181818141414 -1111111010100f0f0f1515151f1f1feaeaeaffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbeaeaea9c9c9c7f7f7fb7b7b7f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefcfcfcfcfcfcfbfbfbfcfcfc -f8f6f5ccc4c25d5352302d2d26252425232230302d333332363634353533363633 -3737353737353434313b3b393d3d3b363634383835343433363636333331363634 -343432363533302f2e4c4b49b2b2b0f8f8f5fbfafafcfcfcfcfcfcfbfbfbfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefa9a9a9c3c3bfc7c8c4bfc0b988898273747090918f8a8a8da0a1a4 -bfbfc7ccccd6c8c9cd8e91942c2f30616466b7bac0dcdee4dde1e6e0e7eeb2babf -474e533941433a4143363c3f363b3f36393d3e3f43a7a9adc5c6c9c1c1c3aeb0b2 -abb2afd5ded79ba19b4c4f4a7d7f77bfc0b8c3c4bdc2c6bdbdc0b7bbbfb6b8bbb2 -b6b9b0babcb6979796eaeaeafefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffff -cfcfcf5656562121210e0f0f0a0d0b0a0d0b0a0c0a0a0c0a0b0d0c0c0e0c0c0d0c -0e0f0f0e0f0f0f100f1012111011101314141416151617161918191919191b1b1b -1d1d1d1d1d1d1e1e1e1e1e1e1e1e1e1f1f1f202020202020202020202020202020 -2020202020201f1f1f1f1f1f1e1e1e1e1e1e1d1d1d1b1b1b191919171717161616 -1616161414141414141212121111110f0f0f0e0f0f0d0e0e0c0f0d0c0e0c0c0e0c -0c0c0c0b0b0b0c0c0c101010222222505050bebebeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefee8e8e8eaeaeaebebebedededededededededededed -f0f0f0f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2f2f2f2f5f5f5f6f6f6f7f7f7f7f7f7 -f6f6f6f6f6f6f6f6f6f7f7f7f9f9f9efefef6f6f6f3333334a4a4a4f4f4f525252 -5656565757575a5a5a5a5a5a5757575454544f4f4f4a4a4a4747474343433f3f3f -3c3c3c3a3a3a363636333333313131303030303030333333303030303030303030 -3030302f2f2f2d2d2d292929242424212121212121222222222222232323232323 -2323232222222222222121212020202020201d1d1d1c1c1c1c1c1c1b1b1b181818 -1818181717171515151515151313130c0c0c0808080c0c0c1212121e1e1eeaeaea -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbeaeaea -9b9b9b7f7f7fb8b8b8f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefcfcfcfcfcfcfbfbfbfafbfbeae8e8a598965646462b262622201f24231f -31312f32323135353332323033333135353336363331312f3131303a3a383e3e3c -3737353333313434333131303636333535333737353a3937302f2e5c5c59d0cfcd -fbfafafcfcfcfcfcfcfbfbfbfefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefa9a9a9c3c3bfc7c7c3b7b9b2 -494946737572929594acadae7e808285868aa8a9afc0c4c6888e8c252828616566 -a7abb0c0c4cbc1c4ccc0c4cdaab0b7363b40151a1d1115181315181011150c0f11 -2324277a7f818b91907f848272797593a094a2aea2a0a99fb6bcb3c5c8bec3c5be -c4c7bec0c3bac9cdc3c5c8c0c0c2b9b6bbb1bbbfb7979696eaeaeafefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcffffff8080802e2e2e1414140e0f0f0f100f0f100f -0f100f0f100f0f100f0f100f0e100f0e100f0e100f0e100f0e100f0e100f0e100e -0e100e0e100e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e -0e0e0e0f0e0e0f0e0e0e0e0f0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e -0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0f0f0f0f100f -0e100f0e100f0f100f0f100f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f141414333333 -787878ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefee8e8e8e8e8e8 -ebebebebebebedededececececececedededefefefefefeff0f0f0f1f1f1f2f2f2 -f4f4f4f5f5f5f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8ebebeb -5f5f5f3535355050505050505151515151515252525454545858585b5b5b595959 -5757575252524f4f4f4a4a4a4545454141413d3d3d3434342e2e2e3737373b3b3b -3636363030302f2f2f3030302f2f2f2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2a2a2a -2424242121212121212222222121212121212020202020202020201d1d1d1d1d1d -1d1d1d1c1c1c1b1b1b1c1c1c1d1d1d1b1b1b1b1b1b1b1b1b181818151515141414 -1313131414141414141d1d1de9e9e9ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbeaeaea9b9b9b7f7f7fb8b8b8f0f0f0fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefcfcfcfcfcfcfcfcfcf7f8f8c9c7c7 -746966504140221f1f1f1d1d21201e33333032322f323230313130313130323231 -3232302e2e2b3333324444424b4b493d3d3c30302e323231353533393937363635 -3737353d3c3a373735343431767573e1e1e1fdfdfcfcfcfcfbfbfbfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefa9a9a9c3c3bfcccdc89e9f9934352f747572919492c8c9cbc3c4c69d9fa3 -85868a585b5d313432292d2c61656691959893979b8b9095898f937d818724252a -13141814151845464b3f40443336373034325a635f707d74465349232f26202821 -272e273238319ea49cc1c5bdc7c9c4c7c8c2b2b4af888a83838580bfc2bbbabcb5 -b9bbb6969797eaeaeafefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefeffffff6a6a6a -3636361a1a1a0e0f0e0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f0f100f0f100f0f0f0f100f0f10100f10100f10100f1010 -0f0f10100f0f100f0f1010100f0f100f10100f1010100f0f100f0f0f0f0f0f0f10 -0f0f100f0f0f0f0f100f0f100f10100f10100f1010100f0f100f0f0f0f100f0f0f -0f0f0f0f0f0f0f0f0f0f0f0f0f100f0f100f0f100f0f100f0f100f0f0f0f0f0f0f -1010100f0f0f0f0f0f1c1c1c3c3c3c696969f8f8f8ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefee6e6e6e7e7e7e8e8e8eaeaeaebebebececececececededed -f0f0f0f0f0f0efefeff0f0f0f1f1f1f1f1f1f2f2f2f5f5f5f6f6f6f6f6f6f7f7f7 -f7f7f7f7f7f7f8f8f8f8f8f8d2d2d23838383c3c3c575757585858595959585858 -5959595757575353535151515757575959595757575353534f4f4f4f4f4f484848 -3737372c2c2c3c3c3c4545454242423d3d3d3636363333332f2f2f2e2e2e2f2f2f -2e2e2e2e2e2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2929292121211f1f1f1f1f1f -1f1f1f212121202020202020222222232323222222222222212121202020202020 -1e1e1e1c1c1c191919181818151515131313121212131313191919e9e9e9ffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbeaeaea9b9b9b -7f7f7fb8b8b8f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fcfcfcfcfcfcfcfcfceaeaea9794946257544c3e3c1e19191b18181f1e1c333331 -3737353b3b393c3c3a3c3c3a3f3f3c41413f2f2f2d2727263535333434332d2d2a -2727253131303d3d3a4646454343414a4a4842413f42403e32312f403f3d949492 -f0efeff9f9f9fbfbfbfefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefa9a9a8c3c3c1d0d0cb83847e2f302b -737472929593cdcecfd7d7dbd1d2d7c6c7cd4f51522c312d383b386c7070818685 -86898d8b90928a9092787b7e68676d8a87927a79828789957a7d8181868259605c -444f463441372331261b281d3b413b2d322f555a577b807ba4aaa49498947b7e7b -494b48393a38646663a1a3a0b9bbb7b7bab6969696eaeaeafefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffeeeeee5353533c3c3c1c1c1c0e0f0e0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0e100f0e1010100f11100f110e0f0f -0f100f0f0f0f0e0f100e11110f11110e0f0f100e0d100f0f0f0f0f0e10100d1011 -0a10150e100f100f0d0f0f0a0e0f0f0f10100f10100f14170e151a100f130f1010 -0b11120c1011100f0e0f0f0e0e100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f10100f100f101010202020404040585858 -e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefee7e7e7e7e7e7e7e7e7 -e7e7e7eaeaeaeaeaeaebebebecececefefeff0f0f0efefeff0f0f0f0f0f0f2f2f2 -f4f4f4f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f5f5f5a1a1a12c2c2c -4b4b4b5d5d5d5e5e5e5e5e5e5e5e5e5e5e5e5c5c5c5b5b5b5858585757575a5a5a -6464645c5c5c4f4f4f5050504b4b4b3535353d3d3d4a4a4a464646404040333333 -2e2e2e3636363b3b3b3737373131312e2e2e2e2e2e2e2e2e2f2f2f303030323232 -3232323131312e2e2e292929252525222222202020212121232323222222212121 -2020202121211f1f1f1c1c1c181818181818181818161616141414111111101010 -101010111111191919e9e9e9ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbeaeaea9b9b9b7f7f7fb8b8b8f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefcfcfcfcfcfcfbfbfbd6d7d76d6b6a625753 -483a371915171817171d1d1a31312f393936434341434341444442434342454543 -3b3b392c2c2c2828261b1b191717171b1b1a3434313f3f3d4c4c4a454544504f4e -4b4b484342403a3a373533314a4a48bfbfbff6f6f6fcfcfcfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -a7a7a6c7c7c4b1b1ac2d2e2b2c2d29767876929493bdbebfcbcdcec4c5ca98999f -434544343934575c58656a66313635474a4b5d6162696e6e87878b7f7b8258555e -43474f2b323a2b3233202422242a26444e4759655c59685b3d493e656a66646865 -75787562676449504c2a2f2d3c403da9aba8c6c9c4c8cac8d7d9d5d6dad6bbbcba -969696eaeaeafefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffcacaca404040404040 -1b1b1b0e0e0e0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0e10100e0f110f10110f0f110d10110d10120f100f0f0f0f0f100f11100f0f0f0e -0f0f121010120f0f10100f0f100f0e0f0f0a0e100f0c11110c111110110f101110 -0f141e223f5e25456710151d11100a0e100e0e0f0f0e10100f10120f10110f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f1e201f404140484848c6c6c6ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefee7e7e7e7e7e7e7e7e7e7e7e7eaeaeaeaeaeaebebebecececededed -efefefefefeff0f0f0f0f0f0f2f2f2f2f2f2f5f5f5f5f5f5f6f6f6f7f7f7f7f7f7 -f7f7f7f8f8f8ededed6c6c6c3131315a5a5a626262616161616161606060606060 -6060606060605f5f5f6b6b6ba2a2a2cececeababab6d6d6d515151515151525252 -4848484b4b4b5151514f4f4f4949493f3f3f3232322e2e2e3434343a3a3a363636 -2f2f2f3030303131313131313232323434343535353232323030302c2c2c282828 -2525252222221c1c1c1616161010100c0c0c0f0f0f1313131b1b1b1c1c1c1c1c1c -191919181818181818171717141414131313121212161616e9e9e9ffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbeaeaea9b9b9b7f7f7f -b8b8b8f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfc -fdfefbf8f7f4babab7554f4e6a5a56483733171212161618211e203332313a3a39 -4646444848464646444747444444434646454848463232321c1c1c171717262626 -3939384747454747444a4a494949464a4a48494948484845363532373736767675 -ededecfdfdfafefefcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefa7a7a7c4c4c24b4c4a0b0b066667627a7c7a -959796bbbdbecdced1babac06f7175484b4a4f544d6f736d757a756e7370a6abab -bdc2c19ea0a0aeadb0aca9b0898a933a444a2d42472635370b11110d1212262c2a -262a27393e3961645e6668664e4f4e8487865054523d4341232a28191d1b474848 -808281878988858786828483a3a5a4989898eaeaeafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefe9696963c3c3c3f3f3f1717170e100e0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0e0f130f0f1310100d0e100f101820192434 -131b270c11160f101311111412161b13223313202f0a10150f0f0f130e08150f0a -101014101a2611203015233215242c1327403261a1396bac0e1e300d0e14150b11 -130d10101f2c1427310f14120f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f0f0f0e100f191a193f3f3f454545999999 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefee7e7e7e7e7e7e7e7e7e8e8e8 -eaeaeaeaeaeaebebebececececececedededefefefefefeff0f0f0f0f0f0f2f2f2 -f2f2f2f4f4f4f5f5f5f7f7f7f8f8f8f8f8f8f7f7f7dcdcdc4242423d3d3d616161 -6767676767676767676666666666666464646363636767679a9a9af2f2f2ffffff -fefefeefefefc1c1c18d8d8d6868685a5a5a5757575c5c5c5c5c5c585858535353 -4747473d3d3d3232322e2e2e3636363a3a3a353535303030333333343434343434 -3434343131312c2c2c2525251b1b1b1414140e0e0e0a0a0a060606010101030303 -0101010606061111111d1d1d2121212020202020201c1c1c1a1a1a181818171717 -141414151515e9e9e9ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbeaeaea9a9a9a7f7f7fb8b8b8f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefcfcfcfbfdf9edeceb9693914b434273605a4f3a36 -161111161619272729403e3d434340434340474745464644454544454544434342 -4848473c3c3b2222221e1e1e35353536363641413e3f3f3d434342434340424240 -464645474745353533323230464645d0d0cdfbfbf8fefefbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefa9a9a9 -b4b4b22223212728248a8b867a7b788c8d8c9d9ea0a6a8ab9091955a5b60575958 -6d746c7c80796267602f3430757877919594b9bab89c999a8e8b9081878e5c7176 -3f62642c444510181b080c0d0508090e0d0f757074dad3d6a2a0a23b3b3c454848 -2e33321f24230c12110a0e0e1d1e1e8e8f918a8c8c777879818283adafaf969797 -eaeaeafefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2616161424242383838121212 -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0e0f14 -0e0f140f110b0b0f0b161d2738547c2d5b8f182b410e162115263c254972335a7f -2743600816250911170f11140c15231d39572f598626446a22324621333f204265 -2d66b92d6ab70f24370711130e0f130e131c254c7e3c6aa619273c0d0f0d0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -1010101213123a3b3a4444446d6d6df4f4f4fefefefefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefee7e7e7e7e7e7e7e7e7e7e7e7ebebebebebebeaeaeaeaeaeaeaeaeaececec -edededefefeff0f0f0f0f0f0f1f1f1f2f2f2f1f1f1f4f4f4f6f6f6f8f8f8f8f8f8 -f8f8f8b6b6b63030304e4e4e686868686868696969696969686868676767666666 -646464737373bdbdbdfffffffbfbfbfbfbfbfcfcfcfffffffcfcfce8e8e8b7b7b7 -8181816161615959595e5e5e5d5d5d5a5a5a5454544a4a4a404040343434303030 -3535353636363232323434343131312424241717171111110d0d0d0d0d0d0e0e0e -0c0c0c0b0b0b080808050505050505070707080808080808131313222222262626 -2222222020201d1d1d1b1b1b191919181818161616e9e9e9ffffffffffffffffff -fffffffffffffffffffffffffffffffffffffafafaeaeaea9a9a9a7f7f7fb8b8b8 -f1f1f1fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfcfafbf8 -e1e1e0726f6e453c3c755a584a34301110111615162625253c3c3c3d3d3b3d3d3c -42424041413f3d3d3b36363429292720201f1e1e1d1b1b1b1818181a1a1a181818 -1d1d1c1f1f1d2222202626252e2e2c3434323535332a2a29272725313130a0a09e -f5f5f5fefefbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffeeefefa5a6a5c5c8c48d8f8a9a9c959a9c967c817b989d99 -b2b7b3b0b4b1838686919696a3a8a69ba19a494d4a181c1a111312545756696e6e -64666b6a6a6a6a6d6a7e8386414a50131e1e16211e3d4341404344282c2d131314 -827b7e988f908a89892527253034322a302c1e2120181d1a1113122527244e504e -6b6d6a989a97abada9b6b9b6979797eaeaeafefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffff -bfbfbf4747474a4a4a2727270d0d0d0f0f0f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0e10110f1012100f0f0f0f100a0f130b162526486b -37669226537f35597c233c54152e452641591e324616253619273a1f3b5c39608d -294d7511264113213311273a1c3553365d8e2b5080172a3c19272e1827331c3248 -30598b32578e131f360e100e0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f0f0f1011112c2d2c464646505050cccccc -fefefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefee7e7e7e7e7e7e7e7e7e7e7e7e9e9e9 -eaeaeaeaeaeaeaeaeaeaeaeaecececedededefefeff0f0f0f0f0f0f1f1f1f2f2f2 -f1f1f1f4f4f4f5f5f5f6f6f6f8f8f8f1f1f18585853030305d5d5d6c6c6c6a6a6a -6b6b6b6b6b6b6c6c6c6c6c6c6a6a6a6a6a6a818181d5d5d5fffffffcfcfcfcfcfc -fbfbfbfbfbfbfbfbfbfcfcfcfffffff7f7f7d1d1d19595956868685b5b5b5e5e5e -5f5f5f5c5c5c5454544b4b4b3333332b2b2b3f3f3f3c3c3c2d2d2d2626261f1f1f -20202024242425252529292a2b2b2b1c1c1c0b0b0b080808080808080808080808 -0a0a0a0a0a0a0b0b0b1616162727272626262424242020201e1e1e1c1c1c1b1b1b -181818e9e9e9ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fafafaeaeaea9b9b9b7f7f7fb8b8b8f1f1f1fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefcfcfbf9faf8d5d5d1575553483d3d6b4b4c3a2220131311 -15101519191a2728282e2e2d3333302828271c1c1a151513111110111110121212 -1313131313131414141515151616141616141616131616151717161a1a171a1a18 -2121202121202222202f2f2e787875f0f0f0fbfbf8ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffedefefa4a6a4c4c7c3 -cdcfcac3c8bf94978f747a75929692aeb5ae8d948e959995c5cac59ca19e9ca19e -353938040905000000484c4b787b7c878d8f777b766c72687f838135383a0e100d -0e120d20231e2826261c15171b1717848081a59c9b767774404540656966656a64 -686e697276722c2e2a2a2a275e605b26272362645dbcbeb9b7bab4969696eaeaea -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefefefef9f9f97777774444443f3f3f1616160e0f0e0e0f10 -0f0f100f0f100f0f100f0f100f10100f100f0f100f0f100f0f100f0e110f0e1010 -0f0e12100f130f100f0c0f0c0b1114162a391b354b0f1c270a10100c1415121c22 -1b2632202e401f2f42192a3e0f1c280d131a161e261d2b371c314c1c2c3f151f28 -0a151f101b291f2636202f451c2f491523300f16170b100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f1919194241424a4a4a888888fbfbfbffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -e7e7e7e7e7e7e7e7e7e6e6e6e7e7e7eaeaeaeaeaeaeaeaeaeaeaeaecececededed -efefefefefeff0f0f0f1f1f1f2f2f2f1f1f1f4f4f4f4f4f4f5f5f5f7f7f7e5e5e5 -5959593f3f3f6565656a6a6a6c6c6c6e6e6e6f6f6f6f6f6f707070707070737373 -959595ecececfefefefcfcfcfcfcfcfbfbfbfbfbfbfbfbfbfafafafafafafcfcfc -fefefefbfbfbdfdfdfa8a8a86d6d6d5d5d5e5f5f605d5d5f5656584e4e4e525353 -6263626969686666666566646362625e5d5c5d5e5d5555554f4f4f5353533b3c3c -0e0e0e0808080808080a0a0a0a0a0a0b0b0b0e0e0e0f0f0f101010161616171717 -1414141c1c1c2424242121211b1b1b181818e9e9e9ffffffffffffffffffffffff -fffffffffffffffffffffffffffffffafafaeaeaea9b9b9b7f7f7fb8b8b8f1f1f1 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefbfcfbfafcf8bbbbb9 -3836344d424175515335201d1516151a161a2422262d2e2e23232220201e333433 -41413f45454149494650504d5655545957575959585c5c5b606061646363686966 -6b6b696f6e6d70726e78787674747432323213141322221f2c2c2a575755e7e7e4 -fbfbf8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffedefefa4a6a4c2c4c1cacdc6c1c2ba8d9189777c78848a85a5aba5 -7a7e7b8c918cb6bcb9818683808483646867363938363938292c2c242828505351 -6a70643e4438171a1811141412161011140f2229244d3d413c19214d3d406d706c -8983835354514a4e4a6165626268635f6360696e6a40433e4c4d486d6e6a181b16 -191a17aeb0aab9bab5979797eaeaeafefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcffffffc4c4c44c4d4c -4949492526250e0f0e0f100f0f0f110f0f110f0f110f0f110f0f110f10100f100f -0f100f0f100f0f100f0e100f0e100f0f10100f10100f100f0e100e0e100f0d0f0c -0d0e0a0d100e0d10100f100f0d100f0a0f0f0a0f110a0f100d100e0d10100d1010 -0d0f0f0b0f0e0a0f0f0a100f0b10100c10100d0f0f0d0f0f0a0f100a0f100c100f -0f100e0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f0f0f1010102c2c2c4d4d4d585858d2d2d2 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefee5e5e5e6e6e6e7e7e7e7e7e7e7e7e7e8e8e8 -eaeaeaeaeaeaeaeaeaecececececececececedededf0f0f0f0f0f0f1f1f1f1f1f1 -f2f2f2f4f4f4f5f5f5f5f5f5cccccc4141415353536c6c6c6c6c6c6e6e6e717171 -7171716060605151515f5f5f7b7b7baeaeaef8f8f8fcfcfcfcfcfcfbfbfbfbfbfb -fafafafafafafafafafafafafafafafafafafafafafcfcfcfefefee1e1e1a5a5a7 -7373767170748180848686878384827d7f7c797d7873777170726c72716a716e66 -6c6a675f60615a5b5d7e7e8067686a1212120808080b0b0b0e0e0e101010101010 -1010101515151717171212121818181818181919191f1f1f2020201d1d1d191919 -e9e9e9fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafa -eaeaea9a9a9a7f7f7fb9b9b9f1f1f1fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffefffbfcfbf9faf7b3b3af32312e5546457153562b1f1d1718161c1b1f -312d343e3c41141615464442888988a1a6a1a8aca6aeb1acb5b8b5b9bbbbb6b8ba -b1b6b4acb7b0aeb5b4afb4b6a8b0aba3a9ada3a4b2989e9d888b8bafafb45d5d61 -121213181816282826444442d7d7d5fcfcfaffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffedefefa4a6a5c3c5c2cccec9 -bbbeb68a8d867d817c787e789ba19c7d827d7d827ea9afa9787d7b717574767978 -9a9f9e9ea3a1575a59272b2a666a678b9189424542171a1f16171e171a1a181a18 -3b49415333375d1a29977d7e9ba39c7d7a7a676967585e596c716d7b807c767b77 -8186827275702f322d1d1e1b1314104f514cb2b4aeb7b9b4969696eaeaeafefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef1f1f17272724a4b4a3536350f10100e100f0f100f0f0f110f0f11 -0f0f110f0f110f0f110f10100f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f0f0f -1010101313133d3d3d4f4f4f878787f9f9f9ffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefee5e5e5 -e6e6e6e7e7e7e7e7e7e7e7e7e8e8e8eaeaeaeaeaeaeaeaeaececececececececec -edededf0f0f0f0f0f0f1f1f1f2f2f2f4f4f4f5f5f5f6f6f6f5f5f5a5a5a53c3c3c -6262627171716c6c6c6666665d5d5d4a4a4a1c1c1c0a0a0a161616494949b1b1b1 -fafafafbfbfbfcfcfcfbfbfbfbfbfbfafafafafafafafafafafafafafafafafafa -fafafafafafafafafafcfcfce3e3e39797987e7e7c90908f90908d8f918a979790 -a7a69da4a2979d998ea6a197a9a199837f7b5e5f60696b6e97979b6566680d0e0e -0b0b0b0e0e0e1212121313131212121515151a1a1a1f1f1f1e1e1e2828282c2c2c -2525252020202121211e1e1e1c1c1ce9e9e9ffffffffffffffffffffffffffffff -fffffffffffffffffffffffffafafaeaeaea9a9a9a7f7f7fb9b9b9f1f1f1fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffefffbfcfcf7f9f59f9e9b2c2b25 -55464460494b241e1c1819181b1c1f2d2a31383739121411434140535959465b5f -4e6971516d76526d79516c7a4d6c77476f6e46726748766a4a7371427069406477 -465e8b4156701a2027393a4036353d191a1a2626252e2e2c363634c4c4c1fbfbfa -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffedefeea4a6a5c4c7c3cacdc7bcbfb78e928a797f79797f7a9095917d837d -727773939893878c895457571a1d1c2b2c2c3438363d40404f545573767a727678 -2a2b331112210b0b1b090a10171919333c364a1d256b1b2bb39796cad1c8b7bbb8 -888c897277738085818a8e8aa0a5a1bcc3bcc4c7c28b8d86777974939690bdbeb9 -bcbfb8b4b6b1949494eaeaeaffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffafafaa1a0a04b4b4b383938131514 -0e0f0e0f100f0f100f0f0f110f0f110f0f110f0f110f0f110f10100f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f10100f10100f10100f100f0f10100f10100f10100f10100f1010 -0f10100f10100f10100f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f0f0f0f0f0f0f0f0f1b1b1b424242565656bdbdbd -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefee5e5e5e6e6e6e7e7e7e7e7e7e8e8e8e8e8e8eaeaea -eaeaeaeaeaeaecececececececececedededf0f0f0f0f0f0f1f1f1f4f4f4f5f5f5 -f6f6f6f7f7f7eeeeee7777774444446969697070706767675f5f5f5b5b5b353535 -141414121212141414191919525252d2d2d2fefefefcfcfcfbfbfbfbfbfbfafafa -fafafafafafafafafafafafaf9f9f9f9f9f9f9f9fafbfbfbfafaf8b5b6b2767874 -adafa8d7d9d1d6d7cedad9cee4e1d3dfd9c9c0b9a9bdb5a5cbc1b4b3a89f7a7672 -5b5c5d8687899294963d3e400e0e0e0f0f0e101010161616181818181818191919 -1e1e1e2828282626262828283030302e2e2e2828282121211f1f1f1d1d1de9e9e9 -fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafaeaeaea -9a9a9a7f7f7fb9b9b9f1f1f1fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefbfefcf6f6f68f8e8b292622564745564346211d1c1a1b1a1c1e1f2d2b2e -3d393a2728253332304f5a5d6792a075b5ce77b5d278b7d678b8d975b7d369b6c1 -5bb0a45fb2a660b2a758aba05290ae5880cb4f6ea61e263428282f24242b2b2c2c -61615e575754373735ababaaf7f7f7ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffedefeea4a6a4c5c8c4cdcfcac6c8c1 -90958d787c787a7f7a7c817c787f79787d787d827e3c403d242726292c2b111312 -0a0c0c333534494c4c565a5c2327270307100d0d220a0b1f01050c26292a4a4d49 -551e26782a36c4b3a9d1d1cac9d1cec1c9c49ca19c979c97a8ada9c2c7c2cad0cb -c7cac4cacdc6cdcfc9c7c9c3bdbfb9b4b6b0b1b3af949493eaeaeaffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefeffffff -d1d1d15d5d5d3d3d3d1718170e0f0f0e0f0f0f100f0f100f0f0f110f0f110f0f11 -0f0f110f0f110f10100f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f0f0f0f0f0f0f100f0f100f0f100f0f0f0f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f0f0f0f0f0f0f0f0f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f -0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f100f0f0f0f0f0f0f -0f0f0f0f0f0f222222464646727272e5e5e5fcfcfcffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefee5e5e5e5e5e5 -e5e5e5e6e6e6e8e8e8e8e8e8e8e8e8eaeaeaeaeaeaebebebebebebecececeeeeee -f0f0f0f3f3f3f4f4f4f6f6f6f7f7f7f5f5f5f2f2f2d6d6d6595959555555727272 -7171716a6a6a6262625151512020201818181d1d1d212121212121202020606060 -e4e4e4fefefefcfcfcfcfcfcfbfbfbfbfbfbf9f9f9f8f8f8f7f7f7f7f7f7f7f7f8 -f8f8f9fafafadedfdb84847e8b8e83dde0d1e8ecdbeaebd9ece8d4dfd8c4d3cbb7 -cac3b1c4bcb0bbb7ad8f8c866563626a6a6c9e9fa177787a18191c0e0e11101010 -1616161919191a1a1a1a1a1a1c1c1c2424242e2e2e3131312a2a2a323232313131 -2d2d2d292929222222212121eaeaeaffffffffffffffffffffffffffffffffffff -fffffffffffffffffffafafaeaeaea9a9a9a7f7f7fb9b9b9f1f1f1fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffefefbfefcf6f6f58e8c892b2925594a49 -4d3e401d1e1e1a1a1a2c2c2c686766736e6d4e4e49353535515f656a9db176c1e0 -71bcdf6fb9e06eb5de6cb1d861afc358aeae56aaa551a49e51a69c4f8fab4c75bd -4e6aa220283729282f28282e2c2e2f63646076767440403f959593f4f4f3fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -edefeea4a6a4c7c9c5cecfcbc8cbc29ea29a797d79797f797579767a7f7a8f9590 -6a6f69292d2a121413151717121513262827575a596468676e756e727672202127 -0b0b1c0b0d1c0a0c112f34327c7a78672531702f33bcb5a3d1c8c5c2cecacdd6d1 -cfd6d0ccd1cdcdd3cec9d0cac8cdc8c6c9c4c6c7c0c3c6c0c0c1bbb8bbb4b8bab4 -b3b5b0939393eaeaeaffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefcfcfcececec7979794040401a1a1a0d0e0e0f10100e0f0f -0f100f0f0f0f0f0f110f0f100f0f100f0f100f0f100f0f0f0f0f0f0f0f0f0f0f0f -0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1010101010100f1010 -0f10100f10100f10100f10100f11100f11100f10100f10100f10100f10100f1010 -0f10100f10100f10100f10100f10101010100f10100f100f0f0f0f0f0f0f0f0f0f -0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f -0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1010102727274c4c4ca0a0a0 -f6f6f6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefee5e5e5e5e5e5e5e5e5e6e6e6e7e7e7e8e8e8e8e8e8eaeaea -e8e8e8eaeaeaebebebecececeeeeeef0f0f0f4f4f4f5f5f5f7f7f7f7f7f7ededee -d3d3d4adadad69686875757480807f7d7d7d6b6b6b5757573535351b1b1b1a1a1a -2626262d2d2d2e2e2e272727383838a8a8a8fffffffefefefefefefbfbfbfbfbfb -f8f8f8f7f7f7f7f7f7f7f7f7f7f7f8f8f8f9f8f8fab2b3ae6f7166b4b6a7f0f4e0 -ecf1dce9e8d4d9d3bfd5cbb8d2cab9beb9aba5a29884857f6869685d5f60838587 -a2a3a55253541212131414141414141a1a1a1b1b1b1c1c1c1d1d1d202020292929 -3434343b3b3b2f2f2f3434343434343030302d2d2d292929242424eaeaeaffffff -fffffffffffffffffffffffffffffffffffffffffffffffffafafae9e9e99a9a9a -7f7f7fb9b9b9f1f1f1fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe -fefefefffefefafafaf2f1f1eeeeeeedededefefeff1f0f0f3f3f2f6f5f5f8f7f7 -faf9f9fcfbfbfdfdfdfefefefefffffefffffefffffcfefffcfefffefffffcfefe -fefffffffefffffefffffefffffeffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffefffffffffffeffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe -fcfcfcf4f4f484827f292723594a48463c3d1b1c1d1b1b1a454545b0b0ac72706b -4b4b453837384b5b606194a370b9d26db1cf6daccf6baad067a5c85e9fb65aa5af -55a3a6539fa35199a5568db6587bbb56709d222a362a2a312d2e342a2b2c61625f -74737045454280807ef1f1f0ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffeeeeeda4a5a2c5c7c3cacbc8c7c8c3bdbfba -90938f7f817d8387839396929397938588856064632528270b0c0c1e2120515453 -7276758c928fb3b8b3b7bbb63c40400c0d120b0e11080a0b313837887d7c6b2530 -783741bebfb7cfcbcacbcbc9cfd3cfcfd1cfccd0cbcdcfcbccd0cbc8cbc7c4c8c2 -c3c6c0c1c3bfbdbfb9b9bbb7b5b7b2b1b3b0939392eaeaeafefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefeffffffaeaeae505050 -2828281010100f10100e0f0e0e0f0f0f0f0f1010100f1010101111111212121213 -1212131213131314141415151516151517161718181819191a1b1b1b1b1b1c1d1c -1c1d1d1e1e1e1e1f1e1e1f1f202120222323202221202221222322232323232323 -2323232323232323232223232223232223232022212021202021202021201f1f1f -1e1f1f1e1f1e1d1d1d1c1d1c1a1b1b191919191919171817151716141615151616 -1415141314131213131213121112120f11110f10101010100f0f0f101010101010 -1010101111111515153939395e5e5ecfcfcfffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefee3e3e3e5e5e5e5e5e5 -e6e6e6e7e7e7e7e7e7e8e8e8eaeaeae8e8e8eaeaeaeaeaeaecececeeeeeef1f1f1 -f3f3f3f5f5f5f6f7f5f4f6f4c7c8c98e8f8e82828487848287847e85857d969692 -8081824747471e1e1e1b1b1b2424243131313a3a3a3a3a3a343434333333797979 -f9f9f9fffffffffffffcfcfcfbfbfbf8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f5f9f8 -eeeff1878580848572daddc8e4e6d7d3d3c3b7b4a7a39e93a9a199a19c94929087 -9090897b7d7a62646866676c9e9ea18f8f8f2c2c2d1313131616161717171b1b1b -1f1f1f2020202020202525252d2d2d3a3a3a424242373737353535343434343434 -2f2f2f2b2b2b282828eaeaeaffffffffffffffffffffffffffffffffffffffffff -fffffffffffffafafae9e9e99999997f7f7fbababaf1f1f1fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefcfdfdfcefefeec2c1bf847e7e64605f66605f -746f6f817b7b8e88879f9d99aeaaa7bcbab5cac8c4d5d3d0dededee5e5e5ecebeb -efededefefeff3f2f2f4f4f3f6f6f5f9f8f8fbfbfafcfcfcfdfefdfefffffcfcfe -fefffffefffffefffffefffffefffffffffffffffffffffffffffffffefffffeff -fffefffffefffffeffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefcfcfcf3f3f17978762c26245a4948463a3b -191a1a191919454545adaeab6b70664d534b39383948595956918f64b3b7649fb2 -6a93b56792b4628faa5e88a16193a8569ea15399a64d7cb75a7dc45f74a1556585 -2026312d2e3933343d2c2c2e60605e716f6e4c4b4a6f6f6eeeeeeeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffededea -a4a4a2c4c4c1cdcbcac8c8c5c8c8c6cdcfcabcbebaa3a5a2878a86787977797d78 -7f8280636867303231595d5c7275758d9290a1a5a49498978a8f8d4245440e1010 -090d0c0a0c0c54595990838264283091555fcccacccdced1d1ceccd0d2cfd0d1ce -ced0ccced0cccbcfcac9cbc8c7c8c5c3c6c2c0c2bfbec0bcb9bcb7b4b6b3b2b4b0 -939393eaeaeafefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff7a7a7a4a4a4a3e3e3e2b2b2b2323231e1e1e1d1d1d1d1d1d -1f1f1f2121212222222525252828282b2b2b2d2d2d303030333333353535383838 -3a3a3a3c3c3c3f3f3f404040414141444444434343454545454545454545474747 -464646464646464646474747474747484848484848484848474747474747474747 -4747474545454444444444444444444545454242424343434141413f3f3f3b3b3b -3939393838383737373535353434343131312e2e2e2b2b2b282828242424222222 -2121211f1f1f1c1c1c1c1c1c1f1f1f202020262626313131414141464646a8a8a8 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefee2e2e2e3e3e3e5e5e5e5e5e5e6e6e6e7e7e7e8e8e8eaeaeaeaeaea -eaeaeaeaeaeaecececeeeeeef1f1f1f2f2f2f4f4f4f1f2f0e5e5e29fa19ba9a9a4 -a8a8a2aba6a09d9a8f99998ea3a3a09fa1a44344451111111e1e1e2f2f2f3b3b3b -4343434545453f3f3f373737636363eaeaeafffffffffffffefefefbfbfbf9f9f9 -f7f7f7f7f7f7f7f7f7f7f7f7f5f8f6d7d5d76f6a63aaa68fe1e0ccc5c3b89f9b93 -7d7b746b6765615e5f696666908f8b9a9a937273715b5c617c7d83afafb06f6e6e -1919191818181616161a1a1a1e1e1e1f1f1f202020222222292929323232404040 -4c4c4c3f3f3f3b3b3b3f3f3f3c3c3c3a3a3a373737343434ebebebffffffffffff -fffffffffffffffffffffffffffffffffffffffffffafafae9e9e99999997f7f7f -bababaf1f1f1fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff8f8f8cecdc9 -6865622823211b1314241a192f21202f2522302522302623302725312927332a28 -382f2d3d3230433c3a4e4442584f4f665d5b716866807a7886817e918c8aa49f9c -b0adabb9b8b7c5c2c2d2d0cfd7d5d5dbdad9e0dfdee5e4e3e9e8e8efeeeef3f3f2 -f7f7f6fafaf9fefefdfefffefffffffefffefefffefefffefffffffffffffffeff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfc -ebebea6766632e25245c4a4a473b3c171717191919454545acaba963685f494f48 -3839384657554e8c8059b0a25f9a9e6a8aa1637f985d798c5e778e6384a4599ba8 -5798ad557cc55b7ac661729d54627e1f26302b2c3433343c2d2d3169676774726f -51514f686764ededecffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffececeaa3a3a0c3c3c0cbcbc8c6c6c4c5c5c3cdcecb -cfd3cfc8c9c5a8aba6a2a4a0a2a4a03335345f63627d807f8c908f939897949997 -999e9c939796939796494b4a0f12110e100f0f1111404445483e3c482324996d72 -d4cbced1cfd1ccd3cdcfd3cfcfd1ceced0ccced0cccbcfcac9cbc8c7c8c5c3c6c2 -c0c2bfbec0bcb9bcb7b4b6b3b2b4b0939393eaeaeafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a2d2d2d474747 -4e4e4e4a4a4a4444443f3f3f3e3e3e4040404040404040403f3f3f414141404040 -3d3d3d3d3d3d3b3b3b3939393636363434343333333131312f2f2f2d2d2d2c2c2c -2a2a2a282828272727252525232323222222222222212121222222222222222222 -222222222222222222222222212121232323242424252525252525262626282828 -2a2a2a2a2a2a2d2d2d2e2e2e3030303030303333333535353737373a3a3a3a3a3a -3c3c3c3e3e3e3d3d3d3e3e3e3d3d3d3e3e3e3d3d3d3b3b3b3d3d3d414141444444 -4848484646463b3b3b292929a1a1a1ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefee1e1e1e2e2e2e4e4e4e5e5e5 -e6e6e6e7e7e7e7e7e7eaeaeaeaeaeaeaeaeaeaeaeaecececeeeeeef1f1f1f2f2f2 -f4f3f4f2f2efc5c5beb1b1a7eaecd9e2e3cdcdc9bcbab9acb0afab9f9ea29897a0 -1f1f1f1313132828283838384646464d4d4d4f4f4f4848483a3a3a555555d4d4d4 -fffffffffffffdfdfdfbfbfbf9f9f9f7f7f7f7f7f7f7f7f7f8f8f9f2f0f1aea9aa -685e57b6ab9cc1b9ab89837c76726c7b7772625e5c49464346444078777284837f -626363616167989a9fa7a7a84646461616161919191717171b1b1b202020232323 -2424242525252d2d2d393939454545555555494949565656656565676767656565 -636363606060efefefffffffffffffffffffffffffffffffffffffffffffffffff -fffffffafafae9e9e99999997f7f7fbababaf1f1f1fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f8f8f8d7d7d7bdbdbdb3b3b3c8c8c8e7e7e7ffffffffffffffffffffffffe6e6e6 -c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9d3d3d3ffffffffffffedededc9c9c9cacaca -e2e2e2ffffffffffffffffffffffffffffffffffffd8d8d8c9c9c9cacacaf6f6f6 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff6f6f6c5c5c5c9c9c9fefefeffffff -ffffffefefefc1c1c1afafafbababae3e3e3fffffff5f5f5c4c4c4c6c6c6fcfcfc -fffffffffffffffffffffffff4f4f4c4c4c4cdcdcdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefcfdfdc2c1c057545024201d231c1b3129273e2f2e483936524240 -554a46534a454d4342413a3a3d34333b34323a323139303039302f352c2b322b2a -3028262f28262d25242c25242f2927352b2c3c30324236384d4142564c4d5f5959 -7069687c77778b86849b9794a9a6a4b3b1b0c1bebbcecbc9d3d3d0d8d7d6dedddb -e1e0e0e5e4e3eceaebf1f0f0f4f3f4f8f7f7fcfbfbfefefefffffffefefefefefe -fefefefefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefce9e9e65c5a572d2523594847423738171717 -171717454545ababaa686964494d48383837485653508d7f5aafa25a9798668a9a -647c935f7488617a925c7e97528c94558b9c5174ac5174ad576d914b5c721e252c -25262d32323a2d2c317270727a79775555515d5c5ae9e8e5ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffeececeaa2a29f -c2c2c0c9c9c6c6c6c3c8c9c6cfd0cdced0cccdd0cbd4d6d3c3c5c23435324b4e4b -7478775a5d5c6c71709195949ea3a29ea3a19398979498974e5251131614161817 -2428275559593f3233452927715c58ccbfc2cec9cec4d3caced3cfcfd1ceced0cc -ced0cccbcfcac9cbc8c7c8c5c3c6c2c0c2bfbec0bcb9bcb7b4b6b3b2b4b0939393 -eaeaeafefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefe5555551b1b1b2a2a2a3030303232323030302d2d2d272727212121 -1d1d1d1a1a1a1919191616161414141313131313131212121111110f0f0f0e0e0e -0e0e0e0c0c0c0c0c0c0b0b0b0b0b0b0a0a0a0a0a0a090909090909080808080808 -080808080808080808080808080808080808080808090909090909080808090909 -0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0d0d0d0f0f0f0f0f0f -1010101010101111111212121212121313131414141717171717171919191a1a1a -1d1d1d2121212727272828282b2b2b2c2c2c2a2a2a2626262424249f9f9fffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefee0e0e0e1e1e1e4e4e4e5e5e5e6e6e6e6e6e6e7e7e7e8e8e8eaeaeaeaeaea -eaeaeaecececedededf0f0f0f1f1f1f3f3f2ebe8e4a7a69ddad9c9dedec8c8c7b0 -bcb8a8a29f98a7a5a69c9aa36c6c750e0e0e1c1c1c3131313f3f3f4c4c4c535353 -575757525252434343515151c3c3c3fffffffefefefbfbfbfbfbfbf8f8f8f7f7f7 -f7f7f7f8f8f8f9f9f9dedddc726c6a6a5d56ae9f96958981514b4644413e534f4d -4e4a484a464257544f6a68636565645a5a5d717278adafb28788882727261a1a1a -1b1b1b1b1b1b1e1e1e2323232424242727272828283232323e3e3e4c4c4c5c5c5c -5151517171718989898c8c8c8d8d8d8b8b8b848484f3f3f3ffffffffffffffffff -fffffffffffffffffffffffffffffffffffffafafae9e9e99999997f7f7fbababa -f1f1f1fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffd9d9d97e7e7e6c6c6c6c6c6c6c6c6c6c6c6c6e6e6e -aaaaaafafafaffffffffffff9393936c6c6c6c6c6c6c6c6c6c6c6c6c6c6c777777 -ffffffffffff9797976c6c6c6c6c6c6d6d6ddfdfdfffffffffffffffffffffffff -cecece6c6c6c6c6c6c6c6c6cbbbbbbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -d9d9d96c6c6c6c6c6cf7f7f7ffffffcecece7171716c6c6c6c6c6c6c6c6c6c6c6c -dbdbdbebebeb6c6c6c6c6c6cd1d1d1ffffffffffffffffffffffffb8b8b86c6c6c -8c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffdcdcdc4b49471d1915221d1a -322a27413634493c3c473c3d463f3e4844414545434444453a3a3b323232313032 -303030302d2d2e2d2c2f2e2d2f2e2e312d2e322d2e322d2e342e30363031393332 -39333039323037302e362e2d342d2a342c2b342c2a342c2a332c2a362e2b393130 -3e3635453c3b4d46435a545066605e746f6c7e7a768f8a8aa09c9eaaa7a8b7b3b5 -c3c0c2cccacad0d0d0d6d6d5dddddce3e2e2efecedf7f7f6fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefcfdfcebebea -7a7876342b295a4847423738151616161616434343aba9aa7d7777565856393a36 -434d483c5c583f6a6b3a5c623a535e3d4c5b384756374957334552264241253d40 -2432482d41592c354421292f14191922242934323e27262f7774788c8b885e5e5d -555552e3e3e2fffefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff0f0eda0a09ec6c6c3cacac8c4c4c2c8c9c7cfd0cecfd1ce -cfd3cfd6d8d45d5f5b434441696b6a515454535756454a484e5150565a59616665 -6e71706d71704044431719182d302f2529289091937051565c38387c6f68b7aaae -cdc9ccc9d7d0cfd5cfd0d1ceced0ccced0cccdd0cbcacdc9c8c9c6c3c6c2c0c2bf -bec0bcbabdb8b5b7b4b3b5b1949494eaeaeaffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff5454541c1c1c2929292a2a2a -2828282222221f1f1f1a1a1a171717151515151515141414131313121212111111 -1111111111111010100f0f0f0f0f0f0e0e0e0e0e0e0d0d0d0c0c0c0c0c0c0b0b0b -0b0b0b0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a -0a0a0a0b0b0b0b0b0b0a0a0a0b0b0b0c0c0c0c0c0c0c0c0c0c0c0c0d0d0d0e0e0e -0e0e0e0f0f0f0f0f0f101010111111101010111111111111121212121212131313 -1313131414141414141515151515151616161a1a1a1d1d1d202020232323262626 -282828292929242424a0a0a0ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefee0e0e0e1e1e1e4e4e4e5e5e5e6e6e6 -e6e6e6e7e7e7e8e8e8eaeaeaeaeaeaeaeaeaecececedededf0f0f0f2f1f1f4f2f0 -d0cdc6a59f98d1cdc49b988b807d718b877ea39f9fa29fa7a2a1a8323236101011 -2424243939394747475252525959595d5d5d5959594a4a4a545454bebebeffffff -fdfdfdfbfbfbfbfbfbf8f8f8f7f7f7f7f7f7f8f8f8f4f4f5b7b7b84d49448b8074 -a497936f676238332f211e1d13100f19171332302b6d6b637978715f5d5f5d5d61 -8c8d92b0b2b35c5c5c1818181c1c1c1a1a1a1b1b1b202020262626272727292929 -2c2c2c3737374545455454546161615858587f7f7f979797989898999999979797 -919191f4f4f4ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fafafae9e9e99898987f7f7fbbbbbbf1f1f1fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffe6e6e66e6e6e6c6c6c -888888bbbbbbc4c4c49b9b9b6c6c6c6c6c6cb5b5b5ffffffffffff9090906c6c6c -939393c0c0c0c0c0c0c0c0c0cacacaffffffffffff9090906c6c6c7676766c6c6c -a4a4a4ffffffffffffffffffffffff9191916c6c6c7676766c6c6cb7b7b7ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffd9d9d96c6c6c6c6c6cf7f7f7fcfcfc737373 -6c6c6ca3a3a3d9d9d9c8c8c88f8f8fd7d7d7ffffff8787876c6c6ca2a2a2ffffff -ffffffffffffffffff8a8a8a6c6c6cbcbcbcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -faf9f9817e7c231e1d211a172d26233e3534332c2c2620211b16181312120a0b0a -0608070708090a0b0c0f0f1112151618191b1c1e1e1f20202425252727282a292a -2c2a2c2e2c2e2c2b2d2b2a2a2b2b2a2a2a28292a272728262929272b27262c2827 -2e2a292e2a282f2a29312a2a332c2b332c2c332d2c332f2d322e2c312c2b302d2b -2e2a292e2928302a2a302b2a332f303933333c3937434140504c4a615d5c776f70 -958e8db2b1b1cfcfcde1dedef1f1f1fcfffefcfffffefffffffeffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfce8e8e47c7a77372e2c5d4b4b423838141414151515 -3f3f3fa3a1a18a86856366623b3c383a3c381e26251e292c2632361d282c15191f -151b1e1f272d2b323e171e2314191b171b23334148272e33191d1d141615222329 -35343f232329716f708686816b6a65525250dedcdcfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff0f0eda0a09ec4c4c2 -cfcfcec7c7c4c8c8c6cfd2ced0d3cfd7d9d5a3a5a14d4f4d868784707371515453 -5e6362595d5c4a4d4c616564767b7a696c6b3c3f3f343838333735222524353837 -b4b4b78149585e242b958780b1acaec8c7cacdd0cccfd3cfd0d3cfd0d1cecfd1ce -cdd0cbcacdc9c8c9c6c3c6c2c0c2bfbec0bcbabdb8b5b7b4b3b5b1949494eaeaea -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff5454541c1c1c2929292a2a2a2828282424241f1f1f1c1c1c171717161616 -1515151515151313131313131111111111111111111010100f0f0f0f0f0f0e0e0e -0e0e0e0d0d0d0c0c0c0c0c0c0b0b0b0b0b0b0a0a0a0a0a0a0a0a0a0b0a0b0a0a0b -0a0a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0c0b0b0b0b0c0b0b0b0b0b0b0c0c0c -0c0c0c0c0c0c0c0c0c0d0d0d0e0e0e0e0e0e0f0f0f0f0f0f101010111111101010 -111111111111121212121212131313131313151515151515151515161616171717 -1a1a1a1e1e1e202020242424262626282828292929242424a0a0a0ffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -e0e0e0e1e1e1e4e4e4e5e5e5e6e6e6e6e6e6e7e7e7e8e8e8eaeaeaeaeaeaeaeaea -ecececeeeeeef0f0f0f2f2f1eeeceaa19a94a39c9788847d696460514c4975716a -b4b0b59998a08d8e921010101717162e2e2e4040404d4d4d5858585f5f5f636363 -5e5e5e4f4f4f5a5a5ac6c6c6fffffffcfcfcfbfbfbfbfbfbf8f8f8f7f7f7f8f8f8 -fafafae1e1e281807f626056b7b0a19c938d615b553734301e1c192623203f3d36 -69665d86847a6c6b6658585a69696fa9abb0989a9d3131311616161b1b1b1b1b1b -1e1e1e2222222626262b2b2b2c2c2c3232323d3d3d4c4c4c5b5b5b676767646464 -9d9d9db5b5b5b4b4b4b3b3b3b2b2b2aeaeaef7f7f7ffffffffffffffffffffffff -fffffffffffffffffffffffffffffffafafae9e9e99898987f7f7fbbbbbbf1f1f1 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff9595956c6c6c888888f9f9f9ffffffffffffffffffa6a6a66c6c6c -727272f5f5f5ffffff9090906c6c6cb0b0b0ffffffffffffffffffffffffffffff -ffffff9090906c6c6ca5a5a56c6c6c757575fafafaffffffffffffececec6d6d6d -7b7b7b9898986c6c6cb7b7b7ffffffffffffe5e5e5b3b3b3a5a5a5b7b7b7ededed -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9d9d9 -6c6c6c6c6c6cf7f7f7e3e3e36c6c6c6c6c6ce8e8e8ffffffffffffffffffffffff -ffffffb9b9b96c6c6c767676fdfdfdffffffffffffefefef6c6c6c6c6c6ceeeeee -ffffffffffffe5e5e5b3b3b3a5a5a5b7b7b7edededffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffeffffffffffdddad9413b3928201e2b1f1f3e33332d2828 -1211110c0b0c040404000000000000000000000000000000000000000000000000 -0101010101010000000000000000000303030606060909090c0c0c0f0f0f141414 -1a1a1a1e1e1e2323232626262828282a2a2a2b2b2b2b2a2a2b2a2a292929272727 -242425252525252524222222232322252525262423272523282525282626292626 -2824222722202a24232925222520202521212b2a293f3b3b686264a09d9ed7dada -f6fafafdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefdfdfde7e7e4757470 -362d2b604e4e433838141414161616434343a6a6a58584826667623c3d3a383836 -1a1c1c1b202328323721292c15171a15171a22272d3137401c1e2419191a1a1d1f -323a40262c311a1e1f15171826262c3838402221266c6d6d85868171726f4c4c4c -d7d6d6fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff0f0eda1a19fc4c4c2d2d2cfc2c2c1bbbbb8d0d2ced1d4d0d8dbd7 -5c5d595a5b58898b889c9e9d858a88818483555858575c5b9fa3a2b6b9b8949897 -5e63623e41404548473236356f7372a09c9f7e30457b2636b9a5a2c0c1c0b8b9bb -d3cccdd3d5d0d1d4d0d0d3cfcfd1cecdd0cbcacdc9c8c9c6c3c6c2c0c2bfbec0bc -babdb8b5b7b4b3b5b1949494eaeaeaffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdffffff5353531c1c1c2929292a2a2a282828 -2424241f1f1f1c1c1c171717161616151515151515131313131313121212111111 -1111111010100f0f0f0f0f0f0e0e0e0e0e0e0c0c0c0c0c0c0c0c0c0b0b0b0b0b0b -0b0b0b0a0a0a0a0a0a0a0a0a090a0a0e0e0f0d0e0e0d0f0e0e0e0e0f0d0b0d0e10 -0d0f130e0c0b0d0c0b0d0d0d0c0c0c0c0c0c0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e -0f0f0f0f0f0f101010111111101010111111111111121212121212121212131313 -1313131414141515151515151717171a1a1a1e1e1e202020242424262626282828 -2929292424249e9e9effffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefee0e0e0e1e1e1e4e4e4e5e5e5e6e6e6e6e6e6 -e8e8e8e9e9e9e9e9e9e9e9e9eaeaeaedededf0f0f0f1f1f1f0efefcccac7817872 -8a817c35312d2a27234e4c4594958ea2a1a4a3a1aa403f450b0b0c1d1d1d353535 -4848485353535d5d5d6666666666666060605151516a6a6adededefffffffcfcfc -fbfbfbfbfbfbf8f8f8f7f7f7f8f8f8f2f2f2b7b7b75c5b569e9b90c8c2b7ada89e -908c8179756c7e7b719a968cada99daeaaa0817f7a5b5c5c5c5d618a8b91a9a9b2 -56565a1515161b1b1a1b1b1b1b1b1b2121212525252929292c2c2c323232393939 -4545455454546464646b6b6b6c6c6ccccccce8e8e8e5e5e5e4e4e4e3e3e3e0e0e0 -fcfcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffafafa -e9e9e99898987f7f7fbbbbbbf1f1f1fcfcfcffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffafafa6d6d6d6c6c6cc7c7c7ffffff -ffffffffffffffffffe6e6e66c6c6c6c6c6cdbdbdbffffff9090906c6c6cb0b0b0 -ffffffffffffffffffffffffffffffffffff9090906c6c6cc1c1c18484846c6c6c -cdcdcdffffffffffffb6b6b66c6c6cafafaf9999996c6c6cb7b7b7ffffffd3d3d3 -6d6d6d6c6c6c7373736c6c6c9d9d9dffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffd9d9d96c6c6c6c6c6cf7f7f7efefef6c6c6c6c6c6c -979797f0f0f0ffffffffffffffffffffffffeaeaea6c6c6c6c6c6cd8d8d8ffffff -ffffffc2c2c26c6c6c8c8c8cffffffffffffd3d3d36d6d6d6c6c6c7373736c6c6c -9d9d9dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffa49e9d -2f2928312726312827403839151212080508030304040404000000000000000000 -010101040404020202010101030303050505050505020202030303020202020202 -030303020202020202020202020202010101010101000000010101010101010101 -0606060808080c0c0c1011111515151818181e1e1e212121272727272727282a2a -292b2c2a2a2d2a2a2c28282b2627292524262223242e2d2f3231342b2c2f2a2b2d -2d282d29262a2526272b282a5d5a5cc9c8c9fdfdfdfffeffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefdfdfde8e9e5706f6b322a27635050453a3b141414171717494949 -b2b2b17a7a7a6263613d3d3b3737351e1c1d171b1e1b22291a1f2419181c18191d -1a1f262127301a1d221a1a1c1a1b1e23272f1e222b1c1d2317171a2f2f33414145 -2323256d6c6f7f7f84757477474748d0d0cefcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff1f1efa2a2a2c3c3c2d0d0d0 -b7b7b5a0a09fcfcfced1d3d0cfcfcf3c3e3c5e615f808683a3a8a7afb0b0989a99 -4b4d4b484b49939593989b988b8d8b8487864d4f4f4346446b6d6d878c8b999088 -782a398e3a4ddccdd0d4d4dab4b2b5d2d0cdd1d4d0d0d3cfd0d1ceced0cccbcfca -c9cbc8c8c9c6c4c7c3c1c3c0bec0bcbabdb8b5b7b4b3b5b1949494eaeaeaffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefafafaffffff -4f4f4f1a1a1a2929292a2a2a2828282424241f1f1f1c1c1c171717161616151515 -1515151313131313131212121111111111111010100f0f0f0f0f0f0e0e0e0e0e0e -0c0c0c0c0c0c0c0c0c0b0b0b0b0b0b0b0b0b0a0a0a0a0a09080a07090a07141312 -0f0c0e0e0c100a0c10090b0e0f121a111923080a0d0c0c0a0e0f0f0b0b0b0c0c0c -0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0f0f0f0f0f0f101010111111101010111111 -1111111212121212121212121313131313131414141515151515151717171a1a1a -1e1e1e2020202424242626262828282929292424249d9d9dffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefedfdfdf -e6e6e6e6e6e6e6e6e6e6e6e6e8e8e8e8e8e8eaeaeaeaeaeaeaeaeaecececededed -f0f0f0f1f1f1ebebeba6a3a0a299908d877e4d49415b5a5283837aafb1ac969699 -9392981312160f0f112323233b3b3b4e4e4e5959596262626868686868685f5f5f -515151818181f3f3f3fefefefcfcfcfbfbfbfbfbfbf8f8f8f8f8f8f8f8f8e5e5e5 -8c8c8d5857538a8780a19f979a978f96948c99968e9b99919e9a929d9b928e8c84 -66666357585a6a6b6ea1a3a886868d2122251010101919191a1a1a1c1c1c222222 -2727272b2b2b2f2f2f3636363e3e3e4e4e4e5c5c5c6c6c6c656565606060b9b9b9 -efefeff5f5f5f3f3f3f3f3f3f2f2f2fdfdfdffffffffffffffffffffffffffffff -fffffffffffffffffffffffffafafae9e9e99898987f7f7fbbbbbbf1f1f1fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -e7e7e76c6c6c6c6c6ce2e2e2fffffffffffffffffffffffffbfbfb6c6c6c6c6c6c -c8c8c8ffffff9090906c6c6c7b7b7b8c8c8c8c8c8c8c8c8ce3e3e3ffffffffffff -9090906c6c6cc1c1c1b6b6b66c6c6c979797ffffffffffff7f7f7f6c6c6ce3e3e3 -9999996c6c6cb7b7b7ffffff9494946c6c6cc4c4c4ffffffecececd6d6d6ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd9d9d96c6c6c -6c6c6cf7f7f7ffffff9c9c9c6c6c6c6c6c6c717171a6a6a6efefefffffffffffff -ffffff8888886c6c6caaaaaaffffffffffff9494946c6c6cbebebeffffffffffff -9494946c6c6cc4c4c4ffffffecececd6d6d6ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefffffdfdfd726c6b302927352b2a3c34323e3636100f0f030304 -0000010000000000000000000000000a0a0a2424240c0c0c050505151515080808 -0808081010101919191212121010101313131111110e0e0e1111110f0f0f0c0c0c -0c0c0c070707060606030303030303000000010101020202040404030303040404 -03030301010101010102020202050507090a0a0b0c0b0e0f0f101112121515171a -1b1c201e1f21212224282a2e2b2e30323235343639373b3b3638372c2c2b565555 -e3e3e3fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfceaebe96b6a67312827 -655252473c3d141414161616484848b1b1b277767b5f5f623c3c3b3736341f1d1e -17181d1c22291d202619181c18181d1e222a2a30391c1f241a1b1c191c22363d46 -272f381b2025151619393a3a4d4d4d2424266e6c737e7c8578787d474647cbcbca -fcfcfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff1f1f1a3a3a3c3c3c3cfcfcfb9b9b99c9b9ccecacdd2d1d3bfc1c0333333 -7074747b817fa4aaa8c6c7c7c3c6c56a6c6b4b4d4b8d8e8a9194908b8c8c949596 -6c6d6d3b3c3e9ea0a0a5a6a89a898073293092495ae3dbe1e1e2e9b5b0b4cdd1cb -d2d4d0d0d3d0d0d1ceced0cccbcfcac9cbc8c7c8c5c4c7c3c1c3c0bec0bcbabdb8 -b5b7b4b3b5b1949494eaeaeafffffffffffffffffffdfdfdfdfdfdfffffff6f6f6 -cdcdcdb1b1b1bababac0c0c0c6c6c6565656272727292929282828272727252525 -2020201c1c1c181818161616151515151515131313131313121212111111111111 -1010100f0f0f0f0f0f0e0e0e0e0e0e0c0c0c0c0c0c0c0c0c0b0b0b0b0b0b0b0b0b -0a0a0a0a0a0a090b090909081314140c10160f19250b172308121d122434102337 -0b151e0a0c0f0f0f0f0b0b0b0c0c0c0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0f0f0f -0f0f0f101010111111101010111111111111121212121212121212131313131313 -1414141515151616161717171a1a1a1e1e1e202020232323262626282828292929 -2424249d9d9dffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefe969696b7b7b7d2d2d2e5e5e5ebebebececece8e8e8 -ececececececebebebecececedededf0f0f0f0f0f1dbdbda888784b5aea4a09b90 -8e8a82a1a094b1b2a8ababae9b999e5b5b5c0605071212132a2a2a424242515151 -5d5d5d6666666a6a6a666666585858575757abababfdfdfdfcfcfcfbfbfbfbfbfb -fafafaf9f9f9f8f8f8f7f7f7d5d5d58383836b6b686f6d68706f6b6e6d6a6d6c69 -6c6b676a6a666867636665605857535352535b5b5f818287a2a3a754545709090b -0f0f101818181a1a1a1f1f1f2323232727272c2c2c3232323b3b3b474747575757 -6262626c6c6c5a5a5a5f5f5f838383d2d2d2f3f3f3f4f4f4f4f4f4f4f4f4fdfdfd -fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafae9e9e9 -9898987f7f7fbbbbbbf1f1f1fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffd9d9d96c6c6c6c6c6ce9e9e9ffffffffffff -ffffffffffffffffff6f6f6f6c6c6cc2c2c2ffffff9090906c6c6c6e6e6e6f6f6f -6f6f6f6f6f6fd9d9d9ffffffffffff9090906c6c6cc1c1c1e9e9e96c6c6c6f6f6f -f3f3f3dadada6c6c6c858585ffffff9999996c6c6cb7b7b7ffffff9898986c6c6c -919191e3e3e3ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffd9d9d96c6c6c6c6c6cf7f7f7fffffffbfbfbadadad707070 -6c6c6c6c6c6c777777e3e3e3ffffffffffffbababa6c6c6c7c7c7cfffffff7f7f7 -6f6f6f6d6d6deeeeeeffffffffffff9898986c6c6c919191e3e3e3ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefeffffffffefeeef514c4c322a29 -322a294f46443b36351a1919010104000003000000000000000000000000131313 -5d5d5d1717170e0d0d2524251818180e0e0e1f1f1f2e2e2e232323242424252525 -232323232323242424242424252525272727202020080808010101000000000000 -0303030c0c0c1a1a1a1f1f1f2020202222220f0f0f0909091f1f1f1c1c1c1e1e1d -2426251e1f1e080909000000010000010000010000010000010000010302071912 -0d1e14111c15121816121714242424989798ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefbfbfbe0e0dd6867644339386b5958493f3f171717171717484848b0b0b3 -78767f6060673c3d3c3636331d1e1d1b1f22323d432d363a18191c16171b242a31 -3e455022242919191d191d23424a553039431c202715161842423f656761282728 -7373758c8c8c7f807f464646c9c9c8fbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff1f1f1a3a3a3c5c5c5cfcfcfbababa -9b9b9bcbc9cbd5d5d5b7bab8323332787c7b79817f9b9e9bc9cdcbdedfded4d7d5 -919291888a8b868889858689b3b4b891929536363a989a9de9ebedc7ada9752b33 -a36070ede6edebecf1c7c7c9d1d2ced3d5d1d0d3d0d0d1ceced0cccbcecac9cbc8 -c7c8c5c3c6c2c0c2bfbdc0bcbabcb8b5b7b4b3b5b1949494eaeaeaffffffffffff -fffffffbfbfbfdfdfdd4d4d48b8b8b5d5d5d4444444e4e4e5555555c5c5c555555 -5353535050503f3f3f2a2a2a2323231f1f1f1c1c1c171717161616151515151515 -1313131313131212121111111111111010100f0f0f0f0f0f0e0e0e0e0e0e0c0c0c -0c0c0c0c0c0c0b0b0b0b0b0b0b0b0b0a0a0a0a0a0a0c090d0a090a0f1315061118 -1229380e2433102130112b3e0e263d10212e080d0f0f0e0e0b0b0b0c0c0c0d0d0d -0d0d0d0d0d0d0e0e0e0e0e0e0f0f0f0f0f0f101010111111101010111111111111 -1212121212121212121313131313131515151515151616161717171a1a1a1e1e1e -2020202323232525252828282929292424249c9c9cffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfd2f2f2f4d4d4d -727272999999bebebedbdbdbe8e8e8efefefefefefececececececedededf0f0f0 -f0f0f0c5c4c48b89879f9b969c98939f9e97a0a29bb4b5b29998a09b9a9e212121 -0404041515162e2e2e4444445353535e5e5e6666666464645b5b5b4c4c4c6e6e6e -dededefffffffcfcfcfbfbfbfafafaf9f9f9f9f9f9f9f9f9efefefc3c3c39c9c9c -9090908383837575756c6c6c6362625a5a595252514b4b4a444444434243565559 -67666e98999f88898c2223240505050f0f0f1717171b1b1b212121252525292929 -2e2e2e3535354040404f4f4f5d5d5d6363636060605959596e6e6e6d6d6d9d9d9d -e5e5e5f5f5f5f5f5f5f4f4f4fdfdfdffffffffffffffffffffffffffffffffffff -fffffffffffffffffffafafae9e9e99898987f7f7fbcbcbcf1f1f1fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9e9e9 -6c6c6c6c6c6cddddddfffffffffffffffffffffffff5f5f56c6c6c6c6c6cd5d5d5 -ffffff9090906c6c6cb0b0b0ffffffffffffffffffffffffffffffffffff909090 -6c6c6cc1c1c1ffffff8888886c6c6cc0c0c0a3a3a36c6c6cb9b9b9ffffff999999 -6c6c6cb7b7b7ffffffdfdfdf7575756c6c6c6c6c6c8d8d8de7e7e7ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffd9d9d96c6c6c6c6c6c -f7f7f7fffffffffffffffffff1f1f1acacac6d6d6d6c6c6c919191ffffffffffff -ebebeb6c6c6c6c6c6ce0e0e0cccccc6c6c6c8d8d8dffffffffffffffffffdfdfdf -7575756c6c6c6c6c6c8d8d8de7e7e7ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffc9c6c63f38372f2725322827574d4a474343242526020202000000 -0000000000000000000000002827294d4d4e0e0f100f0e0f1816171d1b1b100d0d -0d0f0d080a080909091414141010101515151616161212121919191d1d1d1e1e1e -1d1d1d040404050505000000000000000000151515252525353535292929383838 -1919190f0f0f4242423c3c3c4949485d5d5b4544430c0c0b000000020000030000 -030000030000030000040b07122e2012392511362312221a0206020b0c0b5e5e5e -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff6f5f5a7a7a46a6865726863715f5c -4f43431c1b1b1d1c1b484848b2b2b28585896d6c703e3e3e3838361e1f1e1b1f23 -2f393f2a3236191a1d181a1d2023292c343a1e21261d1a1f1c1c222b2e39242833 -1f21281616194344438989852d2d2c7a7a789a9b94858580464544c7c7c7fbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f1f1f1a3a3a3c4c4c4d0d0d0c7c7c7b3b3b3d0ced0d7d7d7c2c3c2333636727574 -7e83818d908fbfc1c1dcdfdee2e3e6e2e3e7d1d2d4c0c2c6cdcdd2e2e4e8b1b2b7 -3a3b40727376eeeff0c59f9e792b34b07482e8e2e8e0e2e9cbd2d2d7d5d3d2d4d0 -d0d3d0cfd0cccdd0cbcbcecac8c9c6c4c8c3c2c4c0bfc0bebcbfbbbbbdbab5b8b4 -b3b5b2929292eaeaeafefefefffffffffffffdfdfdcfcfcf626262393939464646 -4646463c3c3c3131312323232a2a2a3e3e3e5050505b5b5b5656563c3c3c222222 -1a1a1a171717161616151515151515131313131313121212111111111111101010 -0f0f0f0f0f0f0e0e0e0e0e0e0c0c0c0c0c0c0c0c0c0b0b0b0b0b0b0b0b0b0a0a0a -0a0a0a09090c0a090810100f050c100d1a250b17200f1a210b17210919250d161c -07090a0e0e0e0a0a0a0c0c0c0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0f0f0f0f0f0f -101010111111101010111111111111121212121212121212131313131313151515 -1515151616161717171a1a1a1e1e1e202020232323252525282828292929242424 -9c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfd1212121313131b1b1b3030305151517878789f9f9fc4c4c4 -e0e0e0f0f0f0f1f1f1f0f0f0f0f0f0e9e9e9adaeae9a99999e9899a09f9fa4a3a4 -b1b1b0b8b9bb928f997272750606060707061616172e2e2f4545455353535e5e5e -6363635b5b5b4c4c4c535353aaaaaafafafafdfdfdfcfcfcfbfbfbfafafafafafa -f9f9f9f9f9f9e5e5e5adadada8a8a8abacada9a9ab9697998284856d6e6f5b5b5b -4e4e4f4647484242444e4f5266666c7b7c84a0a1a864656909090a0404040e0e0e -1616161c1c1c2222222727272929292f2f2f3939394747475757576262625c5c5c -4c4c4c626262767676727272717171bababaeeeeeef5f5f5f3f3f3fdfdfdffffff -fffffffffffffffffffffffffffffffffffffffffffffffffafafae9e9e9989898 -7f7f7fbcbcbcf1f1f1fcfcfcffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfb6d6d6d6c6c6cb9b9b9ffffffffffffffffff -ffffffcbcbcb6c6c6c6c6c6cecececffffff9090906c6c6cb0b0b0ffffffffffff -ffffffffffffffffffffffff9090906c6c6cc1c1c1ffffffbbbbbb6c6c6c858585 -7272726d6d6dedededffffff9999996c6c6cb7b7b7fffffffffffff2f2f2b5b5b5 -7979796c6c6c808080ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffd9d9d96c6c6c6c6c6cf7f7f7ffffffffffffffffffffffffffffff -acacac6c6c6c767676ffffffffffffffffff8989896c6c6cb2b2b29e9e9e6c6c6c -bfbfbffffffffffffffffffffffffff2f2f2b5b5b57979796c6c6c808080ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffeffffffffffa9a4a33e3534342c28342c28 -5a504d514f5019181a0101010000000000000000000000000000002021212f2f2f -090908080507080808090808080202000600020200020000040404040404060606 -060606060606090909080808080808070707020202040404020202020202020202 -0909090a0a0a0d0d0d0909090c0c0c0f0f0f1414142121212424242c2c2c303030 -1f1f1f060606000000000000000000000000000000020000030404060907070e09 -050f0b070a08050404070707535353ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ececec716e6e706f6a8f868074635d534945232322222220494846b2b2af989894 -7678754141403a3a3b212223181c2120252c1e23281a1c1d1b1b1e1e1f25212930 -1c1f241d1b201c1e23292f38242b331e222916181b444444a6a7a5343330757372 -a3a39f898784484846c9c9c7fbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefa2a2a2c3c3c3cfcfcfcfcfcfcccbcb -d3d0d2d4d4d4d3d5d44547474d52517d8281848885b1b2b0dee0dfe8eaeeebecf0 -e6e7f0dbdbe4d4d5dcdedfe7c6c7ce45464c595a5fe1e2e9b6868a792a33af7d87 -d1cbcfc8cad1c2cdcad5d3d0d4d5d1d0d3d0cfd0cecdd0cbc9ccc8c7c8c5c2c6c1 -bfc1bebbbebab8bab6b2b5b0acaeaaa8a9a7919191eaeaeafefefeffffffffffff -ebebeb6464643838386968697877777574756d6c6c636263504f50313131161616 -1515153434345050505e5e5e5454542c2c2c151515151515151515151515131313 -1313131212121111111111111111110f0f0f0f0f0f0e0e0e0e0e0e0c0c0c0c0c0c -0c0c0c0b0b0b0b0b0b0a0a0a0a0a0a0a0a0a070a0a0a0a070e0c0a0a090a080a0f -080a0c0a0a0b080a0c070a0e09090a0908080c0c0c0b0b0b0c0c0c0d0d0d0d0d0d -0d0d0d0e0e0e0e0e0e0f0f0f0f0f0f101010111111101010111111111111121212 -1212121212121313131313131414141515151616161616161a1a1a1d1d1d202020 -2323232525252828282929292424249c9c9cffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfd171717161616131313 -1212121313131e1e1e3232325555557f7f7fa5a5a5c7c7c7e1e1e1f0f0f0dadada -9696968f8f8f908e909b9a9ba6a5aabebec2b2b1b69a989d3f3f40000000040404 -1212122727273e3e3e4c4c4c5757575b5b5b4d4d4d4a4a4a8b8b8beaeaeafdfdfd -fcfcfcfbfbfbfbfbfbfafafafafafaf9f9f9f7f7f7d7d7d79696969393939f9f9f -a7a8a9a8a9a98f91907575756262615757575252544f4f5268676c75787e8b8e94 -9a9ca14646490202020404040c0c0c1414141c1c1c222222272727292929313131 -3d3d3d5050506262626666664f4f4f5151516d6d6d7777777676766b6b6b818181 -d3d3d3f2f2f2f4f4f4fdfdfdffffffffffffffffffffffffffffffffffffffffff -fffffffffffffafafae9e9e99898987f7f7fbcbcbcf1f1f1fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9b9b9b -6c6c6c7a7a7ae6e6e6ffffffffffffebebeb7f7f7f6c6c6c9b9b9bffffffffffff -9090906c6c6cb0b0b0ffffffffffffffffffffffffffffffffffff9090906c6c6c -c1c1c1ffffffededed6c6c6c6c6c6c6c6c6c8f8f8fffffffffffff9999996c6c6c -b7b7b7fffffffbfbfbffffffffffffebebeb6c6c6c6c6c6cf5f5f5fdfdfdbababa -b9b9b9fbfbfbffffffffffffffffffffffffffffffd9d9d96c6c6c6c6c6cf7f7f7 -e0e0e0d4d4d4ffffffffffffffffffa4a4a46c6c6c8c8c8cffffffffffffffffff -bababa6c6c6c8181817474746d6d6defefeffffffffffffffffffffbfbfbffffff -ffffffebebeb6c6c6c6c6c6cf5f5f5ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -ffffff85808039302f362e2a3d332f5f5552524f500e0d0f000000000000000000 -0000000000000000000a0b0a0f0f0e080305080303060803030802040000020503 -050502060202040404040404030303040404060606060606050505050505050505 -050505050505050505050505050505050505050505020202040404090909181818 -2020202424242525252222221f1f1f121212020202000000000000000000000000 -0000000300000600020500000400000300000200000202020808085d5d5dffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffececec6b6869716f6b8d847e75655d5d534f -3f3e3d4f4d4c5b5b58a3a3a1a4a59f7f807a444443404040232526171d21293238 -293036191e1f181b1d2527303e4c562128301b1c201a1e213f49503641481e262a -17191c414244b6b6b53636356c6866a3a3a190908e4e4c4bcccccafcfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -a2a2a2c3c3c3cfcfcfcfcfcfcbcbcbd3d0d2d3d3d3dbdcdb8488874044427c827f -848885989b97c9cccceeeff3e9e9f3e2e2f0d8d8e6c8c9d1c7c8d0bebec54d4e53 -42444bc3c4cc9a606b7b2733b0868fc2bcc2bac0c3bfccc9d6d3d0d5d5d1d0d1cf -cbcfcacecfcdc9cdc8c1c4c1b9bbb6b0b2b0adb0aaacafaaafb0aeb2b6b0b6b8b5 -969696eaeaeafefefeffffffffffffa5a5a52c2c2c6d6c6c858283827f81838081 -838082848283828081716f6f514f502726270d0c0c101010363636595959616161 -3a3a3a1a1a1a141414141414141414131313121212111111111111111111101010 -0f0f0f0e0e0e0e0e0e0c0c0c0c0c0c0c0c0c0b0b0b0b0b0b0a0a0a0a0a0a0a0a0a -090a0a0a0a090a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0b0b0b -0b0b0b0b0b0b0c0c0c0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0f0f0f0f0f0f101010 -111111101010111111111111121212121212121212131313131313141414151515 -1515151616161919191d1d1d2020202424242626262828282929292424249b9b9b -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfd1b1b1b1818181616161414141313131111111010101313131e1e1e -3434345757577f7f7fa6a6a6aaaaaa7b7b7b747472656564878789939395b5b3b9 -a4a4a99595952626260000000404040a0a0a1717172727273737373b3b3b404040 -4949497e7e7edadadafdfdfdfcfcfcfbfbfbfbfbfbfafafafafafafafafaf9f9f9 -f2f2f2c3c3c38585857e7e7e7e7e7e7f7f7f8686857777776a6a6a6060605d5d5e -5b5b5c5b5b5e7e7e8380828782868a7f82852f2f300000000404040a0a0a121212 -1818181e1e1e2323232828283232324444445a5a5a6969695b5b5b4a4a4a626262 -7272727474747575757171716767679d9d9de5e5e5f5f5f5fdfdfdffffffffffff -fffffffffffffffffffffffffffffffffffffffffffafafae9e9e99898987f7f7f -bcbcbcf1f1f1fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffe8e8e87272726c6c6c6f6f6f8888888989896f6f6f -6c6c6c797979eaeaeaffffffffffff9090906c6c6c797979888888888888888888 -939393ffffffffffff9090906c6c6cc1c1c1ffffffffffff8d8d8d6c6c6c6c6c6c -c4c4c4ffffffffffff9999996c6c6cb7b7b7ffffff8787879f9f9fbebebea1a1a1 -6c6c6c7e7e7effffffe7e7e76c6c6c6c6c6ce4e4e4ffffffffffffffffffffffff -ffffffd9d9d96c6c6c6c6c6cf7f7f7c1c1c16c6c6c7f7f7f9898988a8a8a6c6c6c -6c6c6cc9c9c9ffffffffffffffffffececec6c6c6c6c6c6c6c6c6c8f8f8fffffff -ffffffffffffffffff8787879f9f9fbebebea1a1a16c6c6c7e7e7effffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcf8f9fafafafafbfbfbfcfcfdfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefffef8f9f764605d362e2c342d29483e3a625855 -484345070707000000000000000000000000000000000000030000000000070806 -122d161235150a170a1818181010140908090806060505050505050c0d0d0e0e0e -060606080808050505050505050505050505050505050505050505050505050505 -0505050505050505050707071010101515151c1c1c1f1f1f1f1f1f1c1c1c0d0d0d -000000000000000000000000000000000000000000020200030000030000040000 -0200000000000d0d0d7d7d7dffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2 -8f8c8d73716d837a7476665f6e646051514f797875767673939390adada884857f -4a4a49434342242727171e212a343a283135181d1f191c1f23272e38454f202730 -1d1b201c1c212b3039282c362123291b1c1e3c3c3ebabbba3d3c3a6e6c6ab0adab -9a9897535251d1d0ccfcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefa2a2a2c4c4c4d0d0d0d0d0d0cdcdcdd3d0d2 -d3d3d3d4d5d4d0d3d18285848086858d908b858884757777c5c5cbd7d7e1d0d0e0 -c1c1d1acabb7aaabb4afafb74f4e57393a41adacb68a4e58822c39b28d92b8b3b9 -afb0b6bccbc7d8d2d0d2d2d0cfd0ccc8cac8bfc1bdb6b8b5b0b1b0b2b4b0b8bbb7 -bebfbdbfc1bebec0bdbfc1bec1c4c09e9e9ee7e7e7fefefefffffffafafa545454 -454645838282817f81817e80817e80817e80817e80807e80848283827f81696768 -413f401111110707071a1a1a4d4d4d676767464646242424141414111111121212 -1212121111111111111111111010100f0f0f0e0e0e0e0e0e0c0c0c0c0c0c0c0c0c -0b0b0b0b0b0b0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a -0a0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0c0c0c0d0d0d0d0d0d0d0d0d -0e0e0e0e0e0e0f0f0f0f0f0f101010101010101010101010111111121212121212 -1212121313131313131414141515151515151616161919191d1d1d202020242424 -2626262828282929292424249a9a9affffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfd1c1c1c1b1b1b181818171717 -1616161515151212121111110f0f0f1010101111111d1d1d363636606060636363 -6464636060607b7b7d858587b0afb49090967e7e7f1a1a1a000000050505040404 -1818183131312626262c2c2c535353929292d6d6d6fcfcfcfbfbfbfbfbfbfafafa -fafafaf8f8f8f8f8f8f8f8f8f9f9f9ecececadadad7c7c7c7979797272726b6b6b -6666666060605e5e5d5a5a5a595958555557605f638a8a91808288717579616366 -1e1e1f0100000201010606060e0e0e1313131818181e1e1e262626303030464646 -5d5d5d5b5b5b4848485252526969697070706f6f6f7070707272726a6a6a6e6e6e -bbbbbbefefeffefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffafafae9e9e99898987f7f7fbcbcbcf1f1f1fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebebeb -9595957171716c6c6c6c6c6c7575759e9e9ef3f3f3ffffffffffffffffffa3a3a3 -6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c777777ffffffffffff9595956c6c6cc6c6c6 -ffffffffffffc4c4c46c6c6c737373f5f5f5ffffffffffff9f9f9f6c6c6cbcbcbc -ffffffadadad6e6e6e6c6c6c6c6c6c858585e2e2e2ffffffe3e3e36c6c6c6f6f6f -f5f5f5ffffffffffffffffffffffffffffffdedede6d6d6d707070f9f9f9eeeeee -9393936e6e6e6c6c6c6c6c6c7c7c7cc6c6c6ffffffffffffffffffffffffffffff -8f8f8f6c6c6c6c6c6cc4c4c4ffffffffffffffffffffffffadadad6e6e6e6c6c6c -6c6c6c858585e2e2e2ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffefffffefffffffffefffffefffefefffcfcfcfcf6f8f8f1f2f2ededee -e8e9eae0e2e2d9dadbd7d8d8d5d6d7d4d5d5d4d4d4d3d5d5dadadadddededddedd -dddddddcdddcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdadcdcdadada -dadadad9dad9d9d9d9d9d9d9d9d9d9d9d9d9d9dad9d9d9d9d8d8d8d8d8d8d8d8d8 -d7d8d8d6d7d7d6d7d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6 -d5d6d6d5d6d6d5d6d6d5d6d6d5d6d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5 -d5d5d5d5d5d5d5d5d5d5d5d5d4d5d5d4d5d4d4d5d4d4d5d5d4d4d4c0c2c3b2b4b5 -b3b4b6babababec0c0c4c5c6d1d1d3d8d9d9dbdbdbdedfdfe5e7e6f2f2f2fdfdfc -fffffefffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdcdcda -45423f342b2a322b28524844625957373334030303000000000000000000000000 -0000000000000600020000000f180f498655428a4c22362279777939353e282627 -1211110202021617166c66673c36372020200e0e0e040404050505050505050505 -050505050505050505050505050505050505050505050505050505040404060606 -090909101010181818181818090909000000000000000000000000000000000000 -000000000200000000000000000000000000000000161616abababffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff5f5f5a09e9f595753635a5574645d6b615e3d3c3a -6b6a68575554908f8cbabbb48d8d884d4d4b44444528282a1a1e221e232a1e2227 -1e20221f1f2220212620282e1c20271e1f211d1f23232a32242b3320252a1a1c1f -353537b9b9b8403f3d6e6b68a8a8a4989795595857d8d7d4fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefa4a4a4 -c3c3c3d2d2d2d0d0d0cececed3d3d3d4d5d5d5d6d5d6d8d7c9ccca8d91908c908f -6a6e6b484c4a838586c3c3cac2c2cdb9b7c1a7a2b2989fa69e9fa7555659393f3f -9d999b853f4c8b3040a7929aafacb3a5a9acb6c6bfcdc9c9bfc0beb4b6b3babcb7 -bdbfbcc1c4c0c7c9c6c9cbc7c7c9c5c6c8c4c4c7c3c2c4c1c2c4c1c2c4c2a0a0a0 -e7e7e7fefefeffffffe1e1e12929293f3f3f6f6e6e7976787b797a7d7b7d817e80 -838183838183828081817e80827f807e7d7e6464642121210707070b0b0b272727 -6868685b5b5b5454542626260e0e0e0f0f0f1111111111111010101010100f0f0f -0e0e0e0e0e0e0c0c0c0c0c0c0c0c0c0b0b0b0b0b0b0b0b0b0a0a0a0a0a0a0a0a0a -0a0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0a0a0a0b0b0b0b0b0b0b0b0b -0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0d0d0d0e0e0e0f0f0f101010101010101010 -101010111111111111121212131313131313131313131313131313151515161616 -1717171a1a1a1d1d1d202020242424262626272727272727272727a6a6a6ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfd1d1d1d1b1b1b1a1a1a1919191717171717171515151313131010100f0f0f -0f0f0f0d0d0d1010104040405858586161616b6b697070707e7e80b3b2b87f7e85 -6767680e0e0e000000020202030303202020525252454545636363bbbbbbeaeaea -fbfbfbfbfbfbfafafafafafafafafaf7f7f7f7f7f7f7f7f7f8f8f8f8f8f8e5e5e5 -9797977171717171716e6e6e6b6b6b6666666363636060605e5e5c5a5a5a545455 -69686c9392987b7d826e727655575a1111120200000402020404040808080d0d0d -1212121a1a1a1e1e1e2626263737374a4a4a5858587c7c7c6a6a6a6363636a6a6a -6d6d6d6e6e6e6f6f6f6f6f6f646464818181d7d7d7fdfdfdffffffffffffffffff -fffffffffffffffffffffffffffffffffffffafafae9e9e99797977f7f7fbdbdbd -f1f1f1fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefeecececefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffafafafffffffffffffffffffffffffbfbfbfdfdfdffffff -fffffffffffffffffffafafafffffffffffffffffff8f8f8e6e6e6f1f1f1ffffff -ffffffffffffb5b5b56c6c6cabababffffffffffffffffffffffffffffffffffff -fffffffbfbfbfdfdfdfffffffffffffffffff7f7f7e6e6e6f1f1f1ffffffffffff -fffffffffffffffffffffffffffffffffffff9f9f9fbfbfbffffffffffffffffff -fffffffffffffffffff8f8f8e6e6e6f1f1f1ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffefffffefffdfffef9fafae8eaea -d8d9d9c5c6c5aeb1b19a9d9f8a8f917d8283666a6d4f5356464a4d4246483e4246 -3c40413f40404f5252595b5a595c5b585b5a575858555858545757545757545757 -5457575456565455555254535052514e51504d50504c4f4e4c4e4e4c4e4e4c4e4e -4d4e4e4c4d4c484b4a494b4b484a4a464847454646444546444544424444424443 -424443424443424443424443424443424443414444424343424443414443404343 -4043434043434043434043434043434043434043434043424043424041403e4040 -3e40403f41403c3e3f23252615161815171818191b1b1c1f1f2122393b3c4b4c4d -5256555d605f757676999b9bc2c2c3dededef6f6f7ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefdfdfdffffffa4a3a12f29282d2624352a275b524f625a59242223 -020101000000000000000000000000000000000000050002000200132816529f5c -4c9754283a2b9392943f3940363235131312050000323531bd969d52363a323231 -0e0e0e050505050505050505050505050505050505050505050505050505050505 -050505040404050505050505050505030303090909191919131313050505000000 -000000000000000000000000000000000000000000000000000000000000030303 -010101272727d5d5d5ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff5f5f59e9d9c -4f4a4757504c72625e6c5c5c3d3b3a6c6d6b4243418a8985b6b3ac807e7952514e -4646462b2c2d1a1f232129302229301f21241e1e202125293a464b252b301e2021 -1a1f26455263485a6b232d381a1c1f303131b7b6b642414072706fb0b0ad979593 -61605ee1e0ddfefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefa6a6a6c2c2c2cecececfcfcfcfcfcfd3d5d4d5d7d6 -d6d8d7d5d8d6d3d5d49d9f9f848985515654494e4d818285bab9bebdbcc1b8b1bd -a4a0ad8f959c96959c5b5c5f39423d89817f7a343b8f3648a0939da7a0aca0a4a4 -aebdb6c6c5c6cccdcbd0d3cfd0d2d0cfd1ceced0cbcacec9cacdc9c9cbc8c8cac6 -c8cac6c7c9c5c4c7c3c6c7c4a1a1a1e8e8e8fcfcfcffffffd4d4d4202020181818 -282728302e2f3332333735363c3a3b4744456360617c797b848283848283827f81 -7f7f7f6767672525250505050909092626265b5b5b5c5c5c7c7c7c454545343434 -1818180d0d0d0f0f0f0f0f0f0f0f0f0e0e0e0d0d0d0c0c0c0c0c0c0b0b0b0b0b0b -0b0b0b090909080808080808080808080808080808080808080808080808080808 -0808080808080808080a0a0a0a0a0a0b0b0b0b0b0b0e0e0e0b0b0b0b0b0b0c0c0c -0b0b0b0c0c0c0c0c0c0c0c0c0e0e0e0f0f0f111111101010101010101010111111 -1313131313131313131515151616161616161a1a1a1c1c1c202020222222262626 -2727272e2e2e636363d7d7d7ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfd1e1e1e1c1c1c1b1b1b1a1a1a191919 -1717171515151313131010100f0f0f0f0f0f0f0f0f1212124040404e4e4e595957 -6060616969697a7a7ebab9bf716f744848490909090808080b0b0b0b0b0b101010 -1e1e1e2c2c2c5c5c5cc1c1c1edededfdfdfdfdfdfdfbfbfbf9f9f9f7f7f7f7f7f7 -f7f7f7f7f7f7f8f8f8f6f6f6d4d4d47b7b7b696969676767656565636363616161 -5e5e5e5c5c5c59595956565750505277767b99989f72747b64686d404244050506 -0200000301010202020606060707070f0f0f1717170e0e0e1111112e2e2e737373 -c2c2c2ecececaaaaaa6464646161616767676868686969696b6b6b6a6a6a626262 -808080f3f3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fafafae9e9e99797977f7f7fbdbdbdf1f1f1fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfb797979828282fafafaffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefcfefcfefeeaeaeabfc4c38286864d52522e32321c202114181a1014160c1114 -0c10110b0f110a0d10070c0d060c0d070c0c05090b03090a02090a02080a020708 -020607020707020707020707020707020607020707020707020607020607020707 -020707020607020406020306020306020304020303020303020305020306020304 -020303020305020304020303020303020303020303020303020303020303020305 -020507020707020707020607020607020607020606020606020606020606020607 -020607020707020708020707020707020707020707020707050909070b0b070b0b -060b0b060a0b03090c02070a0207090207080207070509090c0f0f2324265b5d5f -aaabaddfe0e0fbfbfbfefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefdfdfde7e6e6625d5c231d1c -2f2624382f2a6258565a5758141414010001000000000000000000000000000000 -0000000200000302000f2113275c3223502d1119113738381813151813140b0b0b -0b0506202621684347291011171a180d0c0d060606060606050505050505050505 -0505050505050505050505050404040505050a0a0a040404050505050505070707 -1414141818180d0d0d020202000000000000000000000000000000000000000000 -000000000000000000000000020202050505444444f3f3f3fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff6f6f59f9f9d342f2d4c464470605f655355443f3e6b6d6a -353634817d7ab4b0a87977715353504848472d2d2f1d212639454c3e4a5024282b -1f202325292c4551552732361f20211d1f253b47573e4b5b232a321b1d1e302e30 -b7b5b5464345797876c5c2c0989795686865e6e6e3fffffeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefa6a6a6c2c2c2 -c5c5c5cfcfcfcfd0d0d3d5d4d5d7d6d5d7d6d6d8d7d9dcdab7b9b77f85815e6463 -5f6361858689adadb0b3b0b8b1aeb7a29ea9888d938a888f6163634048437c6b6d -742d369243519e949ca39faa9fa3a2bbcac3d5d4d5d4d5d2d4d6d2cfd0cdcfd3cf -d0d1d0ced0cbcdd0cbcdd0cbcbd0cacacdc9c9cbc8c7c9c5c8cac6a1a1a1eaeaea -fefefeffffffdddddd1f1f1f0c0c0c0e0e0e121011131213141313161516181818 -2322223635365553547876788382838383838080806c6c6c2b2b2b070707080808 -2b2b2b4949498888887474744c4c4c2424240a0a0a0909090b0b0b0b0b0b0b0b0b -0a0a0a090909080808080808080808080808060606060606060606060606060606 -060606040404040404050505050505050505050505060606080808080808080808 -0a0a0a0b0b0b060606080808080808060606060606090909070707070707090909 -0c0c0c0a0a0a0a0a0a0c0c0c0e0e0e101010101010111111121212131313131313 -1616161c1c1c202020232323232323202020444444c7c7c7f6f6f6ffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -1d1d1d1c1c1c1b1b1b1b1b1b1a1a1a1818181717171313131212120f0f0f0e0e0e -0d0d0d1717174343434c4c4c5554545d5d5c6464657e7e81b9bac064666a313131 -0707071616162424242323231c1c1c1313131212121b1b1b3838385e5e5e909090 -c7c7c7f0f0f0fdfdfdfafafaf7f7f7f7f7f7f7f7f7f8f8f8f3f3f3c0c0c06c6c6c -6363636262625f5f5f5d5d5d5a5a5a595959575858575555545453525253848689 -9a9da16b6e73595a602c2d2f0000030200010402020707070c0c0c1111112a2a2a -717171848484969696bfbfbfe0e0e0f6f6f6fbfbfbe8e8e88989895d5d5d616161 -6464646767676868686a6a6a676767606060efefefffffffffffffffffffffffff -fffffffffffffffffffffffffffffffafafae9e9e99797977f7f7fbcbcbcf1f1f1 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -eeeeeeafafafe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefbfcfcd9dddc848a88343a381318180c1011 -0d11130e11140e13140e14150e14150e14150d14140c13140c11120c11110c1013 -0c10120c10100b10100b10100b10100a0f100a0f100b0f100b0f100b0f100b0f10 -0b0f100b0f100a0e100a0e100a0e100a0e100a0e100b0f100b0f100a0f100a0f10 -0a0f100a0f100a0f100a0e10090d10090d0f090d0f090d0f0b0f0f0b0f100b0f10 -0b0f100a0f100a0f100a0f100a0f100a0f100a0f100a0f100a0f100b0f100b0f10 -0a0f100a0f100b0f100b0f100b0f100b0f100a0f100b0f100b0f100a0e100b0f10 -0b0f100a0e100a0e0f0a0e0f0a0e0f0a0e0f0a0d100a0d100a0d100a0d10090c10 -080c0e080c0e070b0c01080b01060913161a66696bd0d0d0f8f8f8ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefdfdfda7a7a5403b39231c1b332a27433733645c5a514f4e090808000000 -00000000000000000000000000000000000003000004000214191b38474b21292d -191d1a1d1e1d1f1c1d1b17171712161d1c1e1f2323201a1b1e201b1f22201e1d1e -1818180f0f0f040404050505050505050505050505050505050505050505070707 -1a1a1a0a0a0a0505050202020e0e0e1b1b1b0f0f0f0a0a0a000000000000000000 -0000000000000000000000000404040303030202020202020202020000000b0b0b -737373fffffffdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff5f5f59e9b9a484241 -514c48675b586252544b4746686a662c2c2b7a7875ccc7c19d9994585853484844 -2f2f2f2123262d373930393a262b2b2525262327272a313320282b1f20211e1f23 -21262b23272b242323201d1d343234afadae4544457f7f7ecac8c78a8a876e6c6b -ebeae7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefeefefefa6a6a6bdbdbdc3c3c3cecececfceced0d3d1d5d7d6d5d7d6 -d7d9d8d5d9d8d6d9d7a5aba69da3a07f8583828485a4a3a8adaab0aca8b19e9da4 -84858b827d836e71704c574f73595d752932904f599f949da09ba59da2a1bbc8c2 -d8d8d8d6d7d5d6d8d5d4d7d2d3d5d1d1d4d0d0d1cecfd1cecfd0ceced0cccdcfcb -cbcecacacdc9cacec9a2a2a2ebebebfefefefffffff0f0f02d2d2d030303090909 -0b0b0b0c0c0c0d0d0d0f0f0f100f101212121515151d1d1d2f2f2f525151767676 -8383838383836f6f6f2e2e2e0707070d0d0d2d2d2d777777808080767576717171 -4c4d4c181919101211080a090a0a0a0f0f0f0b0b0b070707070707010101010101 -010101010101010101010101010101010101010101010101010101010101010101 -0101010101010b0b0b1212120d0d0d0e0e0e1111111616161b1b1b1c1c1c1e1e1e -1e1e1e1f1f1f1e1e1e1414140d0d0d0d0d0d1010101212121010100c0c0c0e0e0e -0f0f0f1010101010101212121111111414141c1c1c2323232626262323231c1c1c -535353f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfd1b1b1b1c1c1c1b1b1b1a1a1a1a1a1a191919 -1717171414141111110f0f0f0e0e0e0d0d0d1c1c1c454545494949515151595858 -626263838587afb4b8595e611e1e1f1010102f2f2f3b3b3b363636272727191919 -0f0f0f0e0e0e101010161616252525414141707070b4b4b4eeeeeefcfcfcf7f7f7 -f7f7f7f9f9f9eeeeeeaaaaaa5f5f5f5f5f5f5c5c5c5b5b5b585858565656545455 -535353535251505050565658929497979a9f66676d4e4e531d1c1e000002050507 -100f0f1919191b1b1b1c1c1c1f1f1f3535354646466161618c8c8cb9b9b9dedede -f7f7f7fcfcfccacaca6b6b6b5959595f5f5f636363646464676767676767646464 -f0f0f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafa -e9e9e99797977f7f7fbcbcbcf2f2f2fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfefefcfefdd5d7d8 -64686a1c21200c11100c12130b11130d12130d13130e15150e15150e14150e1415 -0e14150f14140d13140d13140e12140e12140d11140c11140c11140c12140c1214 -0c12140c11140c10140c10140c10140c10140c10140c10140c10130c10130c1013 -0c10130c10130c10140c10140c10130c10130c10130c11130c11140c11130c1113 -0c11130c11130c12130c12140c12140c12140c10140c10130c10130c10130c1012 -0b10120b10130c10130c12130c12140c10140c10140c11140c11140c11140c1114 -0c10140c12130d10140c10130c11130c11140c10130c10120c10120c10120c1012 -0b10130b10130b10120b10110b1010091010080e10080c0e080b0d080a0c01080b -0508094d5151cfd1d1f8fbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff6f7f7727070393332302928362c28 -504440645d593f403f030303000000020000000000000000000000000000000000 -0200000500041619204c546720202d2e2e2f2526262b2c2b2826271d191b212224 -2b2a2e2724272c2c2c3534342929293131311c1c1c050505040404040404050505 -0505050505050505050404040b0b0b282828171717060606070707191919121212 -0808080808080000000202020202020000000000000404040d0d0d1212120f0f0f -0f0f0f0b0b0b050505000000181818abababffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffefff5f5f5a5a2a0706a695758526058546d5f5f5a54536667642b2b2a -767372ddd9d7b2aeab56555045463f43423e4546444c4f515458585e635f666964 -686866676769696c6e7172727676777f807e8c8b8994908c979595b0adafd3d2d2 -4948485755546d6c6a5a5a57797875efefedffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef1f1f18e8e8ea3a3a3c7c7c7 -cdcdcdcbcdcbd3d5d4d4d7d6d8dad9d8dad9d5d8d6d2d6d4b3b7b49aa19f8f9292 -7d7f82a1a1a4a8a7aea7a4ab98999f828288837a80707470525b526e4b50772831 -915f64a598a1a0a0aaa0a5a5a8b0add3d5d4d6d8d6d5d7d4d5d7d4d3d5d1d0d3d0 -d0d1ceced0cccdd0cbcbcfcacdcfcbcdcfcbcbcecacecfcca3a4a3e8e8e8fefefe -fffffffdfdfd4c4c4c0404040505050606060808080909090b0b0b0b0b0b0d0d0d -0f0f0f1010101212121c1c1c2e2e2e5454547a7a7a838383707070313131070707 -1111115353537a7a7a7d7c7c8786878788874d4f4f282c2b0c0e0e090909212121 -1b1b1b0707070d0d0d1c1c1c2525252727272727272727272b2b2b2b2b2b2d2d2d -2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2c2c2c2c2f2f2f3333332f2f2f2f2f2f -3a3a3a4949494c4c4c4d4d4d4e4e4e5050504f4f4f4f4f4f4646463131311d1d1d -1717171414141515151010100f0f0f0c0c0c0c0c0c0f0f0f0f0f0f101010101010 -191919212121242424212121222222767676ffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd121212 -1414141919191919191818181818181616161414141111110f0f0f0e0e0e0c0c0c -2121214141414747474f4e4d5857555f6060909395a5a9ad4f5456141515212121 -4848484747473d3d3d2d2d2d1e1e1e141414121212121212141414171717181818 -2222224040407a7a7acdcdcdfbfbfbf8f8f8f9f9f9e9e9e99191915959595b5b5b -5858585757575454545252524f4f504f4f4f504f4f4c4c4d5f60619c9fa38f9499 -6063674342460f0f110505051212122121212c2c2b2f2f2f2e2e2e2626261f1f1f -1b1b1b1c1c1c2424243434344d4d4d737373a5a5a5d4d4d49e9e9e5e5e5e585858 -5c5c5c5f5f5f636363646464666666f0f0f0ffffffffffffffffffffffffffffff -fffffffffffffffffffffffffafafae9e9e99696967f7f7fbdbdbdf2f2f2fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefffffcfefdcccfce53575815191a0c0f110c0f110c10120c12130d1313 -0e13150e15150d14150e15150e15150f14160f14170f14160f14160f1516101517 -1015161015151015160f15170f15160f15150f15160f1417101517101517111517 -111518111517111518111518111518111518111618111618101618101618101618 -101618101718101718111618111618101518111717111618111618111618111618 -101618101618101618101618101618101618101618101617101717101718101618 -1016181016181016181015170f15160f1516101617111518101518101417101417 -1014171014171014171014171015160f15160f15150e14150d14150d14150d1314 -0c11120a10100a0d10090b0d080a0c050a0a040808454848d4d5d5fafbfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -e1e1e154535336312f352d2c392f2d5f534d5f5855272b29020202000000050000 -0000000000000000000000000000000303000500010f101122282c0c080b0f0a0a -060b0b080e0c0c0b0c090a090b08050b0607080b0b100b0c1413131d1d1d212121 -2020201515150e0e0e0808080404040404040505050505050404040f0f0f2b2b2b -1717170606061212120f0f0f0202020a0a0a0505051b1b1b0f0f0f010101000000 -0101012222227c7c7c9494949090908e8e8e565656080808030303333333e9e9e9 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefffffafaf8d6d3d1938e8d565952 -58544d6a60606863635a5b592527244342418f8a8c9894934a4b45707168b7b8b0 -d2cfccd6d3d3d8d8d6dcddd8dddfd8dcdbd6d2cecdcccbcbc5c5c3bebfbab8b7b4 -abaca9a3a4a29f9d9fa6a5a5928f923a383a2f2f2e3736334c4b4a858583f1f1f1 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff1f1f1808080939393c9c9c9c9c9c9c8c8c8d1d3d1d0d0d0cacecbc4c7c5 -c0c2c1c0c3c2b8bcb99399969da19f7e80839e9ca2a7a5aba2a0a9989c9f888589 -80777a6f726f525b51643a417a2532936d6fa69ba3a1a1ac9fa3a29fa5a0d1d3d3 -d5d8d5d5d7d4d5d7d4d3d5d1d0d3d0d0d1ceced0ccced0cccdd0cbcdd0cbcdcfcb -cbcecacecfcca3a4a3e8e8e8fefefeffffffffffff858585070707050505050505 -0505050606060606060808080909090b0b0b0d0d0d0d0d0d0f0f0f1212121c1c1c -3434345e5e5e8383837575752c2c2c0606061b1b1b5a5a5a757475787878888988 -7d807e686d6b3f42420d0d0d0d0d0d1313130b0b0b0b0b0b1717172d2d2d484848 -585858595959565656555555565656575757575757575757575757565656565656 -5656565656565555555656565656565858585a5a5a5b5b5b5b5b5b5b5b5b5c5c5c -5c5c5c5c5c5c5a5a5a5454544f4f4f4b4b4b494949474747454545373737212121 -2d2d2d3939393434342f2f2f3030303131313838383c3c3c4747475f5f5fb3b3b3 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfd181818131313111111131313141414171717151515 -1414141010100f0f0f0e0e0e0d0d0d2424244141414747474d4d4d585858626264 -a0a0a2989da044474a1111113535355757574f4f4f4040403030301e1e1e151515 -1313131515151b1b1b2020202020202323232424242d2d2d585858b3b3b3f8f8f8 -f9f9f9dddddd7c7c7c5858585757575353535353535353534f4f4f4d4d4d4e4d4d -4d4d4d4a4b4a6c6d6ea6a8ab868a8e57595f37363c09090b0b0b0c1f1f1f323231 -3b3b3a3d3d3d3a3a3a3030302323231b1b1b151515121212101010121212191919 -2b2b2b4949496161614c4c4c4f4f4f5858585c5c5c5f5f5f616161646464f0f0f0 -fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafae9e9e9 -9696967f7f7fbdbdbdf2f2f2fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefffff0f1f0767a791c21210d0f11 -0c0f110c0f110c12130e13130e14140e15160f1717141b1b171d1f1a2222192022 -161d20171f211c2226151a1c131a1a12191a12191a131a1b141a1b141a1a131a1a -13191b13191b141b1c141b1d141b1d141b1d151b1d151b1d151b1d151b1d151b1d -151b1d141b1d141b1e141b1e141b1e141b1d151c1e151c1e141c1d161e1f1d2628 -192123141c1f141c1e141c1e141c1e141c1e141b1e141b1e141b1e141b1e141c1e -141d1d141d1d151d1d151d1d151c1e151c1e141c1d141b1d141b1e141b1e141b1d -141b1d131a1c141a1c141a1c141a1c141a1c141a1c141a1c141a1c141a1c141a1a -131a1a1218191118181118181015180d14140c10120c0f100a0d10090c0e070b0b -040909090b0b7f8081f1f2f2ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffeffffffffffffffffcbc8c93a37371d1c19342f2b3c322d655957 -5a51521b1c1c010101000000010000030303000000000000000000000000040503 -0504040907070906060a0707050404070908040705070707070807090706080606 -0708070707070806061515151b1a1a1e1c1d1e1e1e1e1e1e1a1a1a1515150c0c0c -0705050705050501041514152725260e0d0e1010101714150f0f0f0e0d0d0a0a0a -0707083332341110120403040003000a0b0a4a4c4a7072704f4f4f4f504f757775 -9192910d0e0d0808085d5d5dfcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefbfbfbefeceb9f9e9b4e504c4a48455b55546c6a684e504d282b282c2d2b -41403f4948462e2e2a5c5c57a9a9a3c2c1beb6b5b3a9a9a79e9f9c93938f84837e -6f6c6b6565635d5d5a58575551514e4849484444444342424443433e3e3b302f2d -2c2b2a3c3b394d4d4b93928ef3f3f3fffffeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff4f4f4787878888888c2c2c2bebebe -bbbcbcc4c6c5c5c8c6cacecbcfcfcfd4d7d6dadcdbd1d7d3979c9a9fa3a387888a -9b9ca0a1a0a8a0a0a7989ea08c888a7f7276666d6551574e5d2f377d29349a7d79 -a79da5a7a8b0a0a5a6aeb1aed2d5d5d4d7d3d4d6d2d4d6d2d3d5d1d0d3d0d0d1cf -d0d1ced0d1cecfd0cccdd0cbcdd0cbcbcfcacfcfcca3a4a3e8e8e8fefefeffffff -ffffffd6d6d6262626020202010101010101050505050505040404060606060606 -0909090a0a0a0b0b0b0d0d0d0d0d0d1111111e1e1e4040407474745f5f5f222222 -0909091f1f1f5b5a5a6f6f6f767878787a79747a78989c996060601b1b1b0f0f0f -2121212323231919191212121c1c1c3737376565658585858080807f7f7f808080 -808080808080808080808080818181818181808080808080808080808080808080 -8080808080807f7f7f8080808080807f7f7f8080808080808080808080807f7f7f -7f7f7f7e7e7e8080807f7f7f7878787c7c7c818181828282848484838383828282 -8585858d8d8d969696a4a4a4d1d1d1fffffffefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfd1e1e1e181818 -1111110f0f0f0f0f0f1010101414141313131010100f0f0f0e0e0e0e0e0e2a2a2a -4343434949485151505a5a58686869adb1b3858b8d37393d1313134545445f5f5f -5858584141412d2d2d1e1e1e1717171414141818181f1f1f2323232727272d2d2d -3030302f2f2f313131535353b3b3b3fbfbfbd2d2d26d6d6d595959575757535353 -5151514f4f4f4d4d4d4c4c4c4c4c4c4b4b4b4949487c7d7eacb0b2797e824d4e54 -28282e0606081919193333324343424747474848484242423838382a2a2a1e1e1e -1717171414141010100e0e0e0c0c0c0b0b0b0e0e0e1818181b1b1b2525253d3d3d -5151515c5c5c5e5e5e606060f0f0f0ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffafafae9e9e99696967f7f7fbdbdbdf2f2f2fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff -ffffffbabdbd383c3c0f12130d10120d10120e11130e13130f15160f1717111718 -191f21272e2f2e3637333b3e31393c262e332c363a3e474c222b2d1921221a2222 -1b22231b23241c24241c24241c23241c23251d25271d25271e25271e25271e2627 -1e27271e27281e27281e27281f27281f27271f272a1d272b1c262c1d272b1d272a -1e27281d28281e2829202b2c3843482d373b202a2e1e272b1e282c1e282c1e282c -1e282c1d282d1d272c1f272d1f292c1f28291f28281f28281f28281e29291e2929 -1d28281d27271d27281c272b1c262a1c25291c24281c24261d25261d25261c2426 -1c24261c24251b24251b24241c22241b2122192121181f20171d1f141b1c111818 -1013160d11130d10110b0d10090c0d070c0b0206062b2b2dd2d2d3fdfdfdffffff -fffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffb2aeaf -2b292a0f0e0f332e2b403530675a5b50494b100f0f030303030303000000070707 -0c0c0c040404000000000000010101100f102d2c2d0e0d0d191919282728201f1f -1919192526261e1d1e2c292a2b282a2120210705050501040e0c0c1a191a1c1b1c -1f1c1d2020202020202121211d1d1d0908090401010100011b1a1a1b191a0c0b0c -201e1f2220212120201e1d1e0606081111124646470a0a0c010104090a091e211e -5a5b5b181b1b0b0b0b0c0c0c2b2c2b7174730a0b0a111111979798ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcf6f5f49b9a9931312e363535 -5f5f5b7675724545442e2f2c2c2e2c30312e3535342b2b293939364e4f4c555555 -595a576a6b6861615e4c4b494544423a39373837363b3a373c3b383e3c3b434340 -3b3b392e2d2b2c2b2b2d2c2b2d2c2b2e2d2b3f3e3d535150a4a4a3f6f5f5fefefc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -eeeeee8a8a8aa6a6a6c5c5c5c4c3c3c8c8c8cfd2d0d6d8d7d5d8d6d7d9d8d7dad9 -d7dad9d3d8d3989d988f93919498989ea0a2a2a4a8a0a0a69c9ea08e8a90797477 -5e6760534e485e262c7b2e3da6878da4a4a6a2abada1a1a1b2b1b2cdd4d2d3d7d2 -d4d6d2d4d6d2d1d4d0d1d4d0d0d3d0d0d3d0d0d3d0d0d1d0d0d1cfcfd0cccdd0cb -cfd1cfa4a4a4e9e9e9fefefefffffffffffffafafa8585850b0b0b000000000000 -0101010101010101010101010505050505050606060808080909090909090b0b0b -0b0b0b1212122b2b2b4242425e5e5e3d3d3d0b0b0b2020205655556c6e6c6d706f -5b5f5f797b7a6a6a6a6f6f6f3030301f1f1f1f1f1f2525251f1f1f0e0e0e0d0d0d -2121214f4f4f969696b1b1b1ababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9a9a9abababaeaeaeb0b0b0afafafafafaf -b1b1b1b2b2b2b4b4b4b6b6b6b7b7b7babababbbbbbbdbdbdbebebed6d6d6ffffff -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfd2020201818181616161818181111110d0d0d0c0c0c0e0e0e -0f0f0f0e0e0e0e0e0e0f0f0f3030304444444b4b4b5252515a5a596e6e70bcbebf -72767a2c2e311a1a1a5454546262625959593f3f3f2a2a2a1f1f1f181818181818 -1b1b1b2020202424242828283030303838383c3c3c3d3d3d3c3c3c5f5f5fb2b2b2 -afafaf6464645858585757575353534f4f4f4e4e4e4b4b4b4a4a4a4a4a49494949 -4b4c4b8e8e90aeb1b46b6f734143481d1d220d0d102d2d2e4a4a4a555555595959 -5656564f4f4f4141413030302323231a1a1a1515151111111010100c0c0c0b0b0b -0808080808080b0b0b0d0d0d1616162626263f3f3f5555555b5b5befefefffffff -fffffffffffffffffffffffffffffffffffffffffffffffffafafae9e9e9969696 -7f7f7fbdbdbdf2f2f2fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefff9fafb797e7f1d21220e121411171813181a -131819121819121819121719121618191d1f212929272c2f293031272e3022292d -282e32333a3f2027281a1f211a21221a21221b21221b22231c22231c22231c2323 -1c23251c23241c23261c24251c24251d24251d24261d24261d24251d24251d2426 -1d24261f2827222c2a1d27281d25261d25271d25271d27271e27272d3539262f32 -1e26291d26291d26291c26291c25281d2628222d2b222d291d27291c26271c2525 -1c24251c24241c23241c23241c23241c22241a22241a22231a22241a21241a2124 -192023192021192021192021182020181f20181e20181e20181e20181d1f181c1e -171c1e151b1c14181a1216181014140e10130d0f100c0d100b0c0f090c0d080b0c -080b0c080b0d949496f4f4f5fefefeffffffffffffffffffffffffffffffffffff -fffffffeffffffffffffffff9d999b2f2d2d161313332d2a453a35675c5c423d3f -0808080505050404040000000c0c0c0c0c0c0101010000000000000000001e1e1e -3330311412131d1c1c2321221c1a1b2321222121211818182928281e1d1d181717 -0807070706070908081615161e1b1c201f1f222222252525282828292929141414 -100f0f1210112b2a2a201f202321222625252625262928292624252222254f5053 -6a6b6f2020231415182d2e2f3636384546470001010000000a0a0a292b2c535454 -030303242424d1d1d1ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fcfcfcf8f8f69999982525242f2f2d716f6e807b7b3b3b382f302d2f2f2e333330 -3a3a3a2c2c2b2e2e2e30302e31312e4d4d4b7575736e6d6a68676573716f6d6c6b -71706e72716f73737172706f6f6d6c5a59563332322a29272b2a2932313030302f -373533585755bab9b7f8f8f8ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffeeeeeea8a8a8ccccccd4d4d4cccbcccdcdcd -cfd2d0d6d9d8d6d9d8d6d9d7d6d9d7d6d9d7d5dad5989e98878b899398969fa5a5 -a3a7a7a0a4a8a1a0a3928e93747a7b5e69635847435f252b7c3948ac8b97979e9d -9ca8a4a5a0a1bbb7b9cedbd6d3d7d3d4d6d2d4d6d2d1d4d0d1d4d0d1d4d0d1d4d0 -d1d4d0d1d4d0d1d4d0d0d1cfced0ccd0d3cfa4a4a4e9e9e9fefefeffffffffffff -fcfcfce8e8e8565656000000000000030303030303000000000000010101010101 -0101010404040404040606060606060808080909090d0d0d131313353535676767 -4b4c4b1312121b1b1b4d4d4d686a6a6467665e605f7070708a8a8a7d7d7d5d5d5d -2e2e2e1a1a1a1d1d1d1919190b0b0b0909090e0e0e323232818181bfbfbfb9b9b9 -bababababababababababababababababababbbbbbbbbbbbbababababababababa -bababababababbbbbbbbbbbbbbbbbbbababababababbbbbbbcbcbcbcbcbcbbbbbb -bbbbbbbcbcbcbebebebfbfbfc0c0c0c1c1c1c2c2c2c2c2c2c2c2c2c6c6c6c8c8c8 -c8c8c8c7c7c7c6c6c6d5d5d5fefefefcfcfcffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfd1a1a1a1f1f1f1d1d1d -1818181616161212120e0e0e0c0c0c0a0a0a0b0b0b0c0c0c121212353535454545 -4949495151515a5d5b737575c4c4c8686a6d2122262020225f5f5f666666585858 -3d3d3d2828281e1e1e1a1a1a1b1b1b1f1f1f2020202323232828282e2e2e363636 -3d3d3d4343434646464040404f4f4f6666666161615858585656565353534f4f4f -4b4b4b4a4a4a4949494949494949485050519c9d9faaaeb05e626637393c161618 -1b1b1b4141415858586464646969696666665b5b5b4d4d4d3838382727271e1e1e -1717171414141010100e0e0e0d0d0d0c0c0c0909090b0b0b0b0b0b0c0c0c0f0f0f -1616162b2b2b474747eeeeeeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffafafae8e8e89696967f7f7fbebebef2f2f2fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfe2e4 -515758181f22161b1c141a1c14181a1118181014150f12140c10120c10110a0e11 -0b0e11090e110a0e110a0f110b0f120a0f110a0e110b0f110b0f120b10130b1013 -0b10130b10130b10130b10120b10120b10120a10120b10120a10130a10130a1012 -0b10120a10120a10130a10130a10120b10101b24172f3d211821170d11130b1114 -0a12130b12130b11130b10120d11130c10130b10130a12130a12120a10130c1312 -29351e27331a1018150911130b10110b1012091011090f11090f110910110b1011 -090f11080e11080e11080e10080e10080e10080f0f080f10070f0f070d0f080d0f -080d0f080d10090e10090e10080e10070e0f080d0f090c0e080a0d08090d08090c -07090c08080c08090c08080c070a0c090c0e0c0f11636566ecececfefefeffffff -fffffffffffffffffffffffffffffffffffffeffffffffffffffffa4a0a23f3b3c -2c2828372f2c4f443e645a5a312e2e0505050505050404040000000f0f0f080808 -040404000000030303060406151314171416101010161313161414151414191818 -1916171816171e1c1d1a1a1a1c1b1c1c1a1c1f1e1e1f1d1f272627333232363435 -3938383c3c3c4040404141412f2e2f2b28292f2e2f3e3c3d393838353435302f30 -2f2f2f2f2e2e2c2b2c4344488f92987c7e843b3d4136363c3a3a3c484b4d2e2e32 -1a1a1c3031342a2b2e48494c3d3e42171717515253f4f4f4fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefcfcfcf8f8f5a6a6a32525242b2b2a716c6c -8079793634342f2e2c2e2e2d31312f3c3c392e2e2d2d2d2b2d2d2b2e2e2b474746 -7171706465624a4a484c4a484a49473f3f3c41403e40403d3c3a39393837343331 -31302e38373441403d4241402e2d2a3a3937636261d3d2cefcfcfafefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffededed -adadadcdcdcdd4d4d4cececececfceced0cfd5d8d6d5d8d6d5d7d6d5d7d6d7d9d8 -c3c9c48c918d888f8a989e9ca2a6a6a5a8aaa3a7aaa2a3a7928d927375765c6461 -52444062232a834350a98e979399978a97919a9797c7c4c6cfd7d3d1d6d1d3d5d1 -d3d5d1d1d4d0d1d4d0d1d4d0d1d4d0d1d4d0d1d4d0d1d4d0d0d1cfced0ccd0d3cf -a4a4a4e9e9e9fefefefffffffffffffcfcfcfcfcfce6e6e6515151000000000000 -040404040404000000000000000000000000000000040404040404040404050505 -0606060808080707070909091d1d1d4c4c4c5e5e5e2222220d0d0d373737646464 -6b6a6a7070707c7c7c8484848c8c8c8d8d8d7777775454542d2d2d1212124c4c4c -3232320202021414148b8b8bc9c9c9c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c4c4c4 -c4c4c4c4c4c4c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c4c4c4c4c4c4c6c6c6c8c8c8 -c8c8c8c6c6c6c6c6c6c6c6c6c9c9c9c9c9c9cbcbcbcccccccdcdcdc9c9c9c9c9c9 -c9c9c9cacacacacacacececed0d0d0d0d0d0cfcfcfcfcfcfd6d6d6f0f0f0fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfd2a2a2a2121211a1a1a1717171717171515151111110e0e0e0b0b0b -0808080606061212123636364040404848485051505c5f5d7b7c7cc4c6c95a5b5f -1718192828286767666767675656563b3b3b2626261c1c1c1919191c1c1c202020 -2121212323232525252b2b2b3333333b3b3b4141414646464444443f3f3f575757 -6060605959595555555252524d4d4d4b4b4b4949494949494949494847475b5b5a -a8a9aaa0a2a65255592b2e301112122a2a2a4f4f4f646464707070747474727272 -6868685454543c3c3c2a2a2a1e1e1e1818181414141010100f0f0f0f0f0f0e0e0e -0a0a0a0909090a0a0a0b0b0b0e0e0e0c0c0c0d0d0d151515e9e9e9ffffffffffff -fffffffffffffffffffffffffffffffffffffffffffafafae8e8e89696967f7f7f -bfbfbff2f2f2fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffc4c9c942474a151a1e1015170c11130a0e10080c0d -070b0c06090c05090a05080a03070a02080a02070a02070a02070a02070a000709 -02070900070a02070a02080a02080a02080a02080a02080a02080a03090a03090a -03090b03090b04090b04090b04090b04090b03090b04090b04090b04090b05080b -131812212e1610180f060a0d040a0c040b0b050b0c050a0c070a0c070a0c04090c -04090b040a0b040a0c04090c060b0a1b23131a2211080e0c030a0c05090b06090b -04090b04090b04090b03080a05090b04090b04090b03090b03090b04090a03090b -03090b03090b03090b03090b03080a03090b03090b05090b05090b04090b03090a -05080a06080a07080a06080a06070a07070a07070a07070a05070a05080a070b0d -0d11134a4d4fe5e5e5ffffffffffffffffffffffffffffffffffffffffffffffff -fefffffffffffffeffccc8c94541432c2728372e2c594c495c5553232121030303 -0f0f0f0f0f0f0f0f101111110b0b0b1515151515151616161d1c1d393738413f40 -302f302e2d2e2f2d2e3630333631343531333736363c3c3c3432343a3839393839 -3e3c3d4140403b3a3b4d4b4c55535460605f4e4e4f4848484a4a4a373737333233 -383737403e3f3f3c3d3635353432333232322f2e2f33333453575c9a9da5666c71 -3f4349494d533031365b5c613d3e425354596363693232376b6c714c4d5047484c -8d8d8efffffffefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfb -fdfdf9c9c9c63e3e3b31302d7b77767f76763e3a39302c2c2e2e2c2a2a28262626 -3333313636363737363333313333323f3f3d3c3c392f2f2d2e2e2c302e2c2d2c2b -2e2d2b2f2f2d31302e3534313a3a373c3b383a393835353431302f2b2b28434240 -7a7978e8e7e5fdfdfaffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffeeeeeeacacaccacacad6d6d6cfcfcfcfcfcfcdcfcf -d4d6d5d4d6d5d4d6d5d4d6d5d6d8d7bbbfbb868b868c8f8c9da2a0a3a7a7a6aaac -a1a6a89ea0a28b878d6c6f71535a564935345d1f25864b58a6969a7d83816b7672 -9d9fa0d2d2d2d1d5d1d2d5d1d3d5d1d1d4d0d1d4d0d1d4d0d1d4d0d3d5d1d3d5d1 -d3d5d1d1d4d0d0d1d0cfd0ccd0d3cfa4a4a3e9e9e9fefefefffffffffffffefefe -fbfbfbfefefeebebeb767676101010000000000000000000000000000000000000 -0000000000000000000000000000000505050000000808080909090b0b0b141414 -2f2f2f5757573939390e0e0e2121215353536c6c6c6f6f6f7878788080808a8a8a -9494949a9a9a9999998181816363633434340707070505053a3a3acfcfcfcecece -cecececececececececececececececececececececfcfcfcfcfcfcfcfcfcfcfcf -cfcfcfcecececececececececfcfcfcfcfcfcfcfcfd0d0d0d0d0d0d0d0d0d0d0d0 -d0d0d0d0d0d0d0d0d0d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d3d3d3d6d6d6d7d7d7 -d8d8d8d8d8d8d8d8d8dbdbdbf3f3f3ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfd1e1e1e191919171717171717 -1717171616161414140f0f0f0d0d0d0c0c0c0909090a0a0a1919192e2e2e414141 -4e4f4e5d5f5d878988c6c8ca65666c1d1d212828296a6a69676767565656383838 -2626261b1b1b1919191d1d1d202020212121212121232323282828313131393939 -4040404545454646464747476060605f5f5f5a5a5a5656565252524d4d4d4b4b4b -494949484848484848444444676767b1b2b392959644494b232627121212343434 -5757576a6a6a7575757777777474746a6a6a5656563b3b3b2b2b2b1e1e1e181818 -1414141010100f0f0f0f0f0f0f0f0f0b0b0b0808080808080a0a0a0a0a0a0b0b0b -0c0c0c0e0e0ee8e8e8ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffafafae8e8e89696967f7f7fbfbfbff2f2f2fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffeffffffffffb2b7b8303538 -060c0f04080b05090a06090b070a0b06090b06090a05090a06090b070b0b070d0f -0c0f120e11130e12130e11140d12130f13150d13150f1316131717121618111518 -11151612151712161714171816171916171a17171b18191b1a1a1d191a1d191a1d -191a1d191a1d191a1d191a1d1a1a1f191b1f181c1d1a1d201b1e1f1c1e1f1c1f22 -1f22231e21241f23241e21241c20221c20211b1e201c1e201b1e20191b1d17181b -16181a16181b17171c17191c17191b18181c17191b18191b18191c17181b17181b -17181b17181b151719141518141618131618131618111417121416121314111215 -1112151112151112151113151112151112141010130c0d100a0a0c08080a07070a -07070a07070a05070a05080a05080a030508404243e6e6e6ffffffffffffffffff -fffffffffffffffffffffffffffffffefffffffffffffefee5e2e14c4545352d2d -372d2a6257524e4a491715160405081e1e20222225242426111112111414262829 -272a2b25292b3e3c3fb4a3a9b0aaa7575b59585559474445545150605f5e595656 -5857575b5c594948475756555855545754535453514645445355535d615f5c5f5d -494a4a4544434845453734353031323534363b393b393436313131303032342f32 -2b282c3b3f4263676c999ca4565a6041424752555a2c2d326a6c704a4b4f64666b -595c6144474c7c7d84595c60595b5ebfbfc0ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefcfcfcfcfbf9dadad8555553373635898683877876 -514340302d292f2f2e2c2c2a2828252d2d2a2f2f2d32323031312f31312f323231 -32323031312f2f2f2e2f2f2f2e2e2c2c2c2b2f2f2e302f2e2f2f2f2d2d2c2f2f2e -302f2c2f2f2c30302e302e2e515050aaaaa9f6f5f5fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefaeaeae -cbcbcbd0d0d0d0d0d0cbcdcbc9cbcacfd3d1d2d5d4d0d4d2d0d4d2d4d6d4c3c8c2 -8a8f8b888d899da2a1a2a7a7a4a8a9999fa1969a9c848386636366484b49422d2c -611e2589565f968f91959c9896a09c7c817fa3a4a4d2d3d2d0d5d1d3d5d0d1d4d0 -d1d4d0d3d5d1d4d6d2d1d4d0d1d4d0d3d5d1d3d5d1d1d4d0d0d1cfcfd3cfa6a6a5 -e8e8e8fefefefffffffffffffffffffefefefcfcfcfffffff0f0f0aeaeae444444 -111111000000000000000000000000000000000000000000000000000000000000 -0000000000000606060101010606060d0d0d1a1a1a3737374646461f1f1f141414 -3434345b5b5b7070707777777c7c7c8585858e8e8e999999a3a3a3a5a5a5959595 -626262444444434343d4d4d4d4d4d4d3d3d3d3d3d3d3d3d3d3d3d3d4d4d4d5d5d5 -d5d5d5d3d3d3d3d3d3d4d4d4d5d5d5d5d5d5d4d4d4d4d4d4d6d6d6d7d7d7d7d7d7 -d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d7d7d7d7d7d7d7d7d7 -d8d8d8d8d8d8d9d9d9dadadadadadadddddddddddddcdcdcdcdcdcf2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfd1818181717171717171717171616161515151313131010100f0f0f0c0c0c -0a0a0a0a0a0a0a0a0a1919192626262a2a2a424442767879abadaf6364684b4c51 -3434346868686969695454543535352424241a1a1a1818181c1c1c202020212121 -2020202020202222222c2c2c3535353c3c3c4242424747474f4f4f6363635f5f5f -5c5c5c5656565252524d4d4d4b4b4b464646454545454545434242747475b7b8ba -8384883b3e421a1d1e1111113a3a3a5a5a5a6c6c6c777777777777747474676767 -5454543939392929291e1e1e1818181414141010101010100e0e0e0d0d0d0b0b0b -0808080707070909090b0b0b0b0b0b0d0d0d0f0f0fe8e8e8ffffffffffffffffff -fffffffffffffffffffffffffffffffffffffafafae8e8e89696967f7f7fbfbfbf -f2f2f2fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffb9bcbd2e32350d151816191b16191c1215170d0f11080b0c -070a0c050a0b070a0b090c0f0d0f110f1314111316101415101415111416131517 -121517131717131717141818131618111517121618131619141719151619161719 -16171a17191b18191c18181c18191d18191d19191d19191d19191d19191d18191d -181b1e171a201b1b1e191b1f1b1d201c1f221c1e221c1f221c1e221b1d211a1d20 -191c20191c1f191c1f18191c18181c16161c17171a17171b17171b18191b18181a -18181b18191b17181b17171a17171b16171a16171a141418131418121417121417 -1214171013151011151010141011141011141011141011141111151011140f1014 -1010130c0c1008090c07080a06080a06070a06080a06080a06070a05070a000508 -404345e3e2e2fffffffffffffffffffffffffffffffffffffffffffffffffeffff -ffffffffffffe2e0dc423e3a322828372e2b665b563f3d3c0a090e09090d292a2d -2e2f312c2e310d0e111e20223034373032362b32324c5251c2b7b6a29e974e4e4b -4a42453b3a3a40403f48464541403f423e41423d453d373d413b42453d44453a43 -41353e40363e4238414e424b54404e543e4c553c4d573b4d50334651314855334a -5c37505b344e5b36506235516537524a3141454a4f81878b91959a4e505543464b -55585d35393e85888d46494f50515654595e6e717a6b6f7263676a686c6de8e8e8 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfcfcfbf9 -e6e6e47e7d7c464543918d888d7d7963514d2f2d292f302f2c2c2b2828252b2b2a -2b2b2a2b2b2a2b2b292c2c2a2b2b292a2a282929282a2a28292927292927282828 -2929292929292a2a2a2929292d2c2b2c2c292f2d2c302f2d393736797979e0e0e0 -fafafafefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffeeeeeeadadadcacacacfcfcfcececec8c8c8c8c9c8cecfcf -cfd0cfcfd0cfcfd1cfcfd3cfc8cdc88e958f878d87969b9a979999898e907f8487 -8c8f907e7c82626364434643402a29661e278b5e668e8e8e89908f848f8a39403e -2629288d8b8bc6c7c4cfd0ccd1d5cfd0d4d0d1d4cfd3d5d0d1d4d0d1d4d0d3d5d1 -d3d5d1d1d4d0d0d1cfcfd3cfa6a6a5e8e8e8fefefefffffffffffffffffffefefe -fffffff8f8f8e3e3e3cececeb2b2b28989895f5f5f4040402a2a2a1d1d1d131313 -0f0f0f0d0d0d0c0c0c0b0b0b0d0d0d1111111717172323233131312525250c0c0c -0202020b0b0b1a1a1a3434343737372020201c1c1c3434345757576e6e6e797979 -8585858d8d8d999999a4a4a4aeaeaeaeaeae4a4a4a6f6f6fdfdfdfdadadad9d9d9 -d9d9d9d9d9d9d9d9d9dadadadbdbdbdbdbdbdadadadadadadadadadbdbdbdbdbdb -dbdbdbdbdbdbdbdbdbdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdddddd -dddddddddddddcdcdcdcdcdcdcdcdcdfdfdfdfdfdfdfdfdfdfdfdfe0e0e0e0e0e0 -e0e0e0e0e0e0e1e1e1f2f2f2ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfd171717171717161616171717161616 -1515151313131111110f0f0f0f0f0f0d0d0d0a0a0a0707070c0c0c272727252525 -1c1c1c2023233d3d3f2d2e323535392626264a4a4a5757574d4d4d353535222222 -1919191818181a1a1a1f1f1f1f1f1f1f1f1f1e1e1e212121292929323232393939 -3e3e3e4646465555556262625f5f5f5c5c5c5757575252524d4d4d4a4a4a464646 -454545454545464644868685b7b8b87173753034381517181515153f3f3f5d5d5d -6c6c6c7474747474747070706262624f4f4f3636362727271d1d1d161616131313 -1010100f0f0f0e0e0e0c0c0c0b0b0b0808080707070808080a0a0a0a0a0a0b0b0b -0f0f0fe8e8e8ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fafafae8e8e89696967f7f7fbfbfbff2f2f2fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffb9bbbc4e53532a2f32 -202427191c1d1115160a0e10080b0c070a0c060a0c070a0c070b0c070b0c070b0e -080c0d080b0c060b0c070b0b070b0c070c0c070b0a060b09060a0806090a06090b -06090b070a0b06090b06090a06090b06090b06080a07070a07070a07070a07070a -07070a07070a07070a07070b07070b06070a06070b07070c06070a06070a06070a -06070a05060a06070a06070a06070a06070a06070a06070a07070a07070b07070c -07070c08090b08080b07070b07080b07080b07080a07070a07070a07070a07070a -07070a07070a06070a06070a06070a06070a06070a05070a05060a07070a07070a -07070a07070a06070a05070a07070a07070a07080a07080a06080a05080a05080a -05080a06080a07070a05070a02090a383c3dd6d6d6fdfdfdffffffffffffffffff -fffffffffffffffffffffffffeffffffffffffffffcac7c3403b383229273e332f -635a55322e2e0505051011143233373334372e2f3216171a2d2f3334393c37383d -3c373e4f3b4a724f656343565435475c334d61304f6734536935566834556f375c -7737617936627f3965833b678b3e6b8f3e6d933f70963d70a145789b497a9e4d7c -a55083a55082a54a80aa4181ad4384ae4384af4687b4478bbd458ab74a856b3858 -4c4c567a808473767c484a504b4e526063683b3d42686a70686b6f62656b5c6065 -60626866686d636869858888fdfefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefcfcfcfefdf9eeeceaabaaa864646095928d8a7c77695751 -312f292f302f2b2b29262625292927282827282827272726262624252523242422 -2424222323222323222424222424232323232323232727272727272a2a282a2a28 -2c2b2a2e2d2b5e5d5cc2c2c2f9f9f9fefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeacacabc9c9c9 -cececdccccccc8c6c6c4c7c7cacecacdcfcecdcfcfcecfcfcfd1cfaeb3ae7d827e -7177736b706f7074757e82848e92949397978783896b6b6f3d3f3d3e24256a2028 -845c617c827f7f86836d76731f26240b0f0d2e2c2da0a19fd3d5d2d1d2cfd0d1ce -d0d3cfd1d4d0d1d4d0d1d4cfd3d5d0d3d5d1d0d4d0d0d1cecfd3cfa6a6a6e8e8e8 -fefefefffffffffffffefefefefefeedededd0d0d0c8c8c8c8c8c8c8c8c8c4c4c4 -bdbdbdbababab0b0b0a5a5a59b9b9b9494948e8e8e8c8c8c8d8d8d8e8e8e929292 -9a9a9aa7a7a7b4b4b4b6b6b69a9a9a545454171717020202060606171717242424 -2727271919191313132222223535354b4b4b5d5d5d696969767676747474494949 -222222b6b6b6e5e5e5e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0dfdfdf -dfdfdfdfdfdfe0e0e0e0e0e0e0e0e0e1e1e1e1e1e1e1e1e1e3e3e3e3e3e3e3e3e3 -e3e3e3e3e3e3e3e3e3e3e3e3e1e1e1e1e1e1e1e1e1e3e3e3e3e3e3e3e3e3e4e4e4 -e4e4e4e5e5e5e6e6e6e6e6e6e6e6e6e6e6e6e7e7e7e7e7e7f4f4f4ffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -1414141414141515151515151515151414141313131212121010100f0f0f0f0f0f -0e0e0e0707070b0b0b2a2a2a3d3d3d3e403e3233342727282020221313140e0e0f -1e1e1e3737374848483535352222221717171616161a1a1a1d1d1d1e1e1e1b1b1b -1d1d1d2121212525252d2d2d3535353c3c3c4545455757576060605f5f5f5e5e5e -5858585252524c4c4c4a4a4a444444444444444444494949959597b4b4b65f6164 -292b2e1011131b1b1b4343435d5d5d6e6e6e7474747373736b6b6b5d5d5d4a4a4a -3434342626261c1c1c1616161313131010100e0e0e0c0c0c0c0c0c090909080808 -0707070808080909090a0a0a0c0c0c0f0f0fe8e8e8ffffffffffffffffffffffff -fffffffffffffffffffffffffffffffafafae8e8e89595957f7f7fbfbfbff2f2f2 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff9fa1a14448492025261013150a0c0f070c0c060a0c070a0b070a0c -070a0c070a0c060a0c060a0b070a0b070a0c050a0b050a0a050a0a050a0a050a0a -050a09040a0904090805090905090a06090b070a0b05090a05080a05080a05080a -05080a07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a -07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a -07070a07070a07070a07070a07070a07070a08080a08080a07070a07070a07070a -07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a -07070a06070a06070a07070a07070a07070a07070a06070a06070a07070a07070a -07080a07080a07090a06090b05090a05090a06080b05080a05070a0208092e3133 -d6d7d7fcfcfcfffffffffffffffffffffffffffffffffffffffffffeffffffffff -ffffffbab7b26a62613c3230463b375d545128242303030318191b35353a36373a -36363b35343a37393c353d3e3a3b3f4b3a45a34b819b44809e4380af4f8eb35791 -b65293b85395b34f90bd5499bc5d99c2669dc0639ac867a0c06098c971a7ca74a9 -c970a5d376adcb6da6d277add87db3da81b7d982b7d274add16ba9d470add671b0 -d675b1d778b6d878b4c070a25a40564b585c545b5f5b5e6246494e57595f64676d -595b61494c5150535752565b585b6067696f6f73795d6164abafafffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcf9f2f0ed -cdcbc98f8e8b928e898575716a575233302c2f302e2a2a29262624252523242421 -23232122222021212020202020202020201e20201e1f1f1e20201e20201f202020 -2121212121212625242625242827262a2a27424140adadabf3f3f3fefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffeeeeefa9a9a9c4c4c3c8c8c6c7c7c0c7c7c2c7c8c5c7cac6c9cdc9 -cdcfccc9ccc8c8cbc8939791737873686d687074729a9e9e9fa5a5999fa1878a8f -797479575b59343733431b206a202d765e5f777c7a7377777c8180454a48090f0e -131414494b49bec0bbd0d3d0d0d3d0d1d4cfd3d5d1d0d3d0d0d3d0d4d6d2d3d5d1 -d0d1d0d0d1cfd1d5cfa7a7a7e9e9e9fefefeffffffffffffffffffebebebd1d1d1 -cbcbcbcacacacdcdcdcdcdcdcdcdcdcdcdcdcecececdcdcdcdcdcdcbcbcbc9c9c9 -c9c9c9c9c9c9cececed3d3d3d6d6d6d3d3d3d0d0d0cececed3d3d3d6d6d6d4d4d4 -b2b2b26666662222220707070404040c0c0c0d0d0d0a0a0a0707070a0a0a0d0d0d -111111151515161616121212151515676767cdcdcde7e7e7e7e7e7e7e7e7e7e7e7 -e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7 -e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7 -e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7eaeaeaeaeaeaeaeaeaeaeaeaeaeaea -ececececececf6f6f6ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfd111111111111121212121212131313131313 -1313131313131212121111110f0f0f0f0f0f0a0a0a0a0a0a1d1d1d3232323a3a3a -4949495454545a5a5a4a4a493030301717171414142323232b2b2b232323171717 -1616161818181c1c1c1b1b1b1a1a1a1a1a1a1d1d1d2424242d2d2d333333383838 -3e3e3e4646464a4a4a5454545b5b5b5858585252524b4b4b484848454545444444 -4242424f4f50a2a4a5aaabaf4e4e532121270c0c101f1f204545455e5e5e6c6c6c -7070706e6e6e6666665858584545453232322424241c1c1c151515121212101010 -0d0d0d0c0c0c0a0a0a0808080606060707070707070909090a0a0a0c0c0c0f0f0f -e8e8e8fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafa -e8e8e89595957f7f7fbfbfbff2f2f2fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefffeffffffaaacac2c3030060b0e070b0d -070a0c080a0c080a0c070a0c070a0c070a0c070a0c070a0c070a0c070a0c070a0c -050a0b050a0a040a0a040a0a04090a04090a04080904080905090b06090b070a0b -070a0b05090a05080a05080a05080a05080a07070a07070a07070a07070a07070a -07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a -07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a -07080a07080a07070a07070a07070a07070a07070a07070a07070a07070a07070a -07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a07070a -07070a07070a07070a07070a07070a07080a07080a06080a070a0b06090b05090a -0309090e13160d101107080c646668e9e9e9fefefeffffffffffffffffffffffff -fffffffffffffffffffeffffffffffffffffa9a6a3756f6b37302e4f423e584e49 -1e1a1a02020622222538393d37383d39393e3b393e383d3f353f3f3d3b3f5a4551 -ba84aac596c3c077b1da77b4db80b4d886b7d887b8d080aeda86b6de8bbadc89b5 -e08cbae18ab8dd84b4de86b4de87b7d683b0d885b1cc7ea8c37da2c17da2b6799a -b17595a66e8d9f688397637f8b5c7582556d7d5169784f665e41534c414c55585c -565a6057595e454a4e5f6266676a6f65696e5f6266585c616d70756f727870747c -71747a5c6061d9ddddffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefdfcf9f1f0eddedcdab4b3b088857f786a646e5b5736352f -2d2e2d28282823232223232121212020201f20201e1f1f1d1e1e1c1c1c1a1c1c1a -1a1a1a1b1b1a1b1b1a1b1b1b1c1c1c1f1f1f1f1f1f2021212120202524232d2d2a -979693eeededfefdfefefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffeeeeefa7a7a7c0c0bec7c8c5 -c6c8c0c5c6bfc0c2bdc4c5c1cccec9cacdc9cecfccb5b7b36c6f6a6b6f68747974 -7f86828d8f8f8b8f908087887177796e6a6f454b4730322b4b17216c232e6a5858 -6b6e6d696f6caeb3b2b3b7b73235340c100e222321818280cfd2ced1d4d0d1d4cf -d4d6d2d1d4d0d1d4d0d4d6d1d2d5d0d1d4d0d3d5d1d6d9d5a7a7a7e9e9e9fefefe -fffffffffffff7f7f7d9d9d9d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4d4d4d4d4d4d4d4d4d7d7d7dfdfdf -e8e8e8eaeaeaeaeaeae9e9e9e4e4e4ddddddcdcdcdaeaeae717171323232131313 -0606060606060909090909090909090808080505050808082222226b6b6b989898 -cdcdcdefefefeeeeeeecececececececececececececececececececececececec -ececececececececececececececececececececececececefefefecececececec -ecececefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefeff0f0f0f9f9f9ffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0f0f0f -1010101010101010101111111212121212121212121313131212121010100f0f0f -0a0a0a0808080e0e0e1919192424242e2e2e3d3d3d4d4d4d6262627070706a6a6a -3c3c3c1616161010101515151616161313131818181919191a1a1a181818181818 -1b1b1b2222222a2a2a3131313737373e3e3e3f3f3f2e2e2e2a2a2a3737373d3d3d -4141414242424242424242424242424040405a5a5baeb0b2a1a3a64c4c5127272d -0d0d0f2222224747475c5c5c6a6a6a6b6b6b6767676060605151514141412f2f2f -2222221a1a1a1515151111110f0f0f0c0c0c0b0b0b080808060606040404050505 -0707070a0a0a0b0b0b0d0d0d0e0e0ee8e8e8ffffffffffffffffffffffffffffff -fffffffffffffffffffffffffafafae8e8e89595957f7f7fbfbfbff2f2f2fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe -fefffedfe1e15d60610f1517070b0c080a0c070a0c070a0c070a0c070a0c070a0c -070a0c070a0c070a0c070a0c070a0c060a0c050a0a05090905090904080a04080a -04080a04080a05090a060a0a060a0a060a0a05090a05080a05080a05090a05080a -07080a06070a06070a06070a06070a06070a06070a06070a07070a07070a07070a -07070a06070a06070a07070a06070a07070a07070a06070a06070a06070a06070a -06070a06070a06070a06070a06070a07070a07070a07070a07070a07070a07070a -07070a07070a07070a06070a06070a06070a06070a06070a06070a07070a07070a -07070a07070a07070a07070a07070a07070a06070a07070a07070a07070a07070a -06070a05070a05090a03080a05080b181e2023282a111314404043c6c7c8f9f9f9 -fefefefffffffffffffffffffffffffffffffffffffffffffeffffffffffffffff -9f9c986b6561352c285448464e4844171614060506282a2c383b3e393c3f3a3d3f -3e3c3f3a3e41373f413c3a40705b69bb97b7c3aecec48bb4cb77a4bd7da0b4789c -ad7398a56f899f637d9c66828b5f79875d74775167704c606d4d5b674b565c4451 -57414e51404a4c3c464d3d444a3d464644573d41573b353939343c4f423b71816e -5a676d342e322f2e324c4e52555960595e614f54594c4f5365686d656a6e61656a -5f626682858c6b6e7273777d71757c6b6d70727476f8fafbfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefcfcfcf9f9f7f2f1eee2e0de -b9b5b5817c7a655a586c615e3c363430302e28282822222220202020201f1e1e1e -1c1c1c1b1b1b1a1a1a1a1a1a191919191918181818181818181a1a191b1b181a1a -1b1c1d1d1f1f1f1f20232121696768e8e7e6fdfbfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffeeeeeea7a7a7bfbfbdc5c6c2c2c4bd9e9f9a848582989a95bfc2bdcacdc8 -c9ccc88485825557547076717b7f7c8487858186867c80827078796a6f74656367 -383d3b393732541c2769242e5e4f4d535655545757abadacd6dbd9898c8b171a19 -16171641423fbcbfbad0d3cfd1d4d0d3d5cfd4d6d2d3d5d1d0d3d0cfd0cecfd3cf -d2d4cfd6d8d6a7a7a7e9e9e9fefefeffffffffffffeaeaeadadadadcdcdcdadada -dadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadada -dbdbdbdadadadbdbdbdadadadddddde1e1e1e7e7e7eaeaeaedededeaeaeae5e5e5 -d5d5d5c1c1c1b1b1b1a1a1a18686865757571e1e1e0808080a0a0a080808191919 -3838386464648c8c8c9a9a9aadadade3e3e3f4f4f4f3f3f3f3f3f3f3f3f3f3f3f3 -f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3 -f3f3f3f1f1f1f3f3f3f3f3f3f3f3f3f3f3f3f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5 -f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5 -f4f4f4fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfd161616141414161616121212101010101010101010 -1010101111111111111313131111110a0a0a0a0a0a0808080909090f0f0f131313 -1b1b1b2a2a2a3939394a4a4a5d5d5d6363634646461d1d1d0b0b0b0c0c0c101010 -1515151717171717171717171717171919191e1e1e2727272f2f2f3535353a3a3a -4242423b3b3b2121212525252e2e2e2a2a2a2c2c2c2c2c2c313131333333323333 -575758a4a5a79092954d4e5338383e1c1d1f222222404040575757646464656565 -6565655c5c5c4d4d4d3c3c3c2c2c2c2222221919191515151010100f0f0f0c0c0c -0b0b0b0808080808080404040505050707070707070a0a0a0c0c0c0f0f0fe8e8e8 -fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafae8e8e8 -9595957f7f7fbfbfbff2f2f2fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefffffefefeb9babb383b3d0c0f10080b0d -080b0d070b0d070b0d070a0c070a0c070a0c070a0c070a0c070a0c070a0c070a0c -050a0b05090b05090b05090a04080a04080a04080a04080a04080a04080a04080a -04080a04080a05090a05090b05090b06090b05090a04080a04080a05070a05070a -05070a05070a07090b07090b07090b06090b05090a05090a06090b05090b06090a -06090a04080a05070a04070a04070a04070a05070a05070a05070a05070a06070a -07070a07070a07070a07070a07070a07070a07070a07070a05070a05070a05070a -05070a05070a05070a07080a07090a07090b07090b06080a06070a04070a030809 -02060903070903040803040803070904070a06090c080e0f11161a30353b3a4044 -1a1e1e2c3030adaeb0f5f6f6fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffefffffffffffbfaf99995915e5956332b265e5050413e3c0e0e0d -0a090a2d3233383b3e393d3f3a3e403e3d423b3f423940423f404453434e5d4b55 -4e49544f40505b3f504c3a4249353e44303c463840594f6a61607837373c343037 -4f494c786e6f726b6d33312e30323032393f373e4d35383a31313333363f5c6f8f -586b8c2f2f33323230b3ac6f9fc09c526b7f2d2b2d31323454565c555a60595e62 -4b4f5255595e656a6e666b6f5c5f6385888e9fa2a96f707674777e757a7e646567 -a5a5a8fffffffffffeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefcfcfbf7f8f6f3f2efe3e1dfb3aeae968f8d898180695f5e47413f343430 -2828272121211d1d1d1d1d1d1c1c1c1b1b1b191919181818181818171717171717 -171717171717171817181a191a1b1b1b1c1b1b1c1b1b1b1b514f50cfcfcffbfafb -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffedededa6a6a6bfbfbcc7c7c2898a84 -292a25181b182d2e2d727370bec1bebcbebb5e605d4a4e4b5457546d726f777b7a -7377786c6f7361676b6165695152562c342f514a465b1e2a6d2934504342393b3a -1b201e373a399a9e9d9ca1a13134331112112425238f918cd0d3d0d1d4d0d0d3cf -d5d7d4d3d5d1d0d0ceccd0cacdcfcbcdd0cbd0d4cfa7a7a6e9e9e9fefefeffffff -ffffffebebebe1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1 -e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e3e3e3e3e3e3e0e0e0e3e3e3e4e4e4 -e2e2e2e2e2e2e4e4e4e2e2e2e4e4e4e1e1e1d6d6d6c4c4c4b2b2b2a5a5a59f9f9f -8f8f8f2727270000003232329191919f9f9fa1a1a1a3a3a3b2b2b2e1e1e1f5f5f5 -fafafaf7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fafafa -fafafafafafafafafafafafafafafafafafafbfbfbffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0f0f0f101010 -1c1c1c1919190f0f0f0f0f0f1010101010101010101111111111110f0f0f0a0a0a -0909090707070707070c0c0c0b0b0b0d0d0d111111191919242424303030373737 -3737372d2d2d1a1a1a0b0b0b0808080e0e0e131313151515141414141414171717 -1d1d1d2424242c2c2c3232323737374040404343433a3a3a3636363939392c2c2c -1f1f1f2525252b2b2b2d2d2d2b2b2b3c3d3e646568595a5e36363b32333926262a -2424253b3b3b5151515a5a5a5e5e5e5e5e5e5454544747473939392a2a2a1f1f1f -1717171212121010100d0d0d0c0c0c0b0b0b080808060606040404050505070707 -0707070a0a0a0b0b0b0e0e0ee8e8e8ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffafafae8e8e89595957f7f7fbfbfbff2f2f2fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef6f6f68d8f8f222526080c0e080c0d080b0d080b0d080a0c070a0c070a0c -070a0c070a0c070a0c070a0c070a0c050a0c050a0b050a0b05090a04080a04080a -04080a04080a04080a04080a04080a04080a04080a05090a050a0b050a0a050a0a -04080a04080a05080a05090a05090a05090a05090a070a0b070a0b070a0b060a0b -06090b06090b060b0b070b0c060a0c070a0c070a0d060a0c07090c070a0c06090c -05080a05080a05080a05080a05080a07080a07070a07070a07070a06070a06070a -06070a06070a04070a04080a03080a02080a020808020408030507030508030709 -03070903090b070b0c070c0f0b1113111618181d202025282b3033373e40444c4f -4f585a5c6767677576586266262a2d1b1e1e939596f2f4f4fdfefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefffffffffff6f5f2938e8c -4f4c47322b286052513735330606050e0e0e33373a393d3f3a3e40393d403d3f42 -3c3f433b41443f40443b353b3331303f454c4e66715a6f76353b3d303030483e3e -a39b8db5c1bd7787912d30353d3538aa8e8ec5979685757d2f2f2b343b344c596e -45527c4249492f3033363a4e8d9ecc58648c312e31363230a09f696f8f733e4f5f -2c2b2c3c3d41575a605a60665b5f64484c515d6165656b70676d70595d62adafb5 -85898e717478767a7f73787e6b6e6fe3e3e4fcfcfcfffffeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefffbfcfbf6f7f5f0efeedcdad7a9a5a3 -b5adacd0c6c4948987514b4a3837342828281f1f1f1c1c1c1c1c1c1b1b1b191919 -181818171717171717161616161616171717171717171716171716181817191918 -1e1e1d4b4a49c1c0bdf3f2f0f7f5f2fafaf9ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -edededa6a6a5bcbcbbbdbdb841413d1d1e1a1414121717162529257a7c78aaaca8 -5e605b4b4d4b444848656a696f73746a6e7061646a575b60585e5f3d42442e3531 -685b5a601f2a74303c3e36311a1d1b1c1f1f171a191c1f1e262a282728280f120f -1c1d1b5b5d5acecfcbd1d4d1d1d4cfd5d7d4d3d5d1d1d4d0d0d3d0d0d1ceced0cc -cfd3cfa6a7a6e9e9e9fefefefffffffefefeedededebebebececececececececec -ececececececececececececececececececececececececececececececececec -ececececececebebebececececececececececececededededededecececededed -eeeeeeededede3e3e3d0d0d0bebebeadadad8989894e4e4e909090aaaaaaafafaf -c3c3c3d8d8d8f0f0f0fefefefefefefcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfefefefefefefefefefefefefefefefcfcfcfcfcfc -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfd0f0f0f0f0f0f0e0e0e0d0d0d0b0b0b0909090909090a0a0a -0909090b0b0b0c0c0c0c0c0c0909090707070505050101010f0f0f0f0f0f0f0f0f -0e0e0e0d0d0d0d0d0d1010101515151e1e1e2020201b1b1b1414140c0c0c0a0a0a -0d0d0d1212121313131414141616161c1c1c2222222a2a2a3030303434343b3b3b -4242424444444444444141413535352222221b1b1b1e1e1e2323232828282d2e2e -4b4c4e5e5f633f404425252a19191c1d1d1d3333334545454f4f4f545454535353 -4b4b4b4141413535352626261e1e1e1717171212120f0f0f0c0c0c0c0c0c090909 -0808080505050404040505050707070707070a0a0a0b0b0b0d0d0de8e8e8ffffff -fffffffffffffffffffffffffffffffffffffffffffffffffafafae8e8e8949494 -7f7f7fc0c0c0f2f2f2fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffefee1e2e2606364101417080b0c -080a0c080a0c080a0c070a0c070a0c070a0c070a0c070a0c070a0c070a0c060a0c -050a0b050a0a04080a04080a04080a04080a04080a04080a04080a04080a04080a -04080a04080a04090a04080a04080a04080a04080a05090a06090b06090b06090b -06090b070a0b070a0b070b0c0a0c0f0a0d0f0d10120c10110f11140d10140f1317 -11161913161a1013150d10120d0f11080a0d05080a05080a05080a05080a07080a -07080a07070a05070a03070a02070a02060902040802070902070a040b0c080e10 -0e1316161a1d1f2225292d3032383c3c4448485054555d5f5f686c697478758083 -7f8b8e89979991a1a59cacaea2b3b6a4b6b89db0b27584862c3639121414787b7b -eaeaeafefefffffeffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefffffffffff8f8f68a8783413e39362e296152512c2a28040404161516 -3b3d413a3f413b3f423a3e413c3f433e40443f43463f41443a383b332f3256647a -678fac637c90343543302e317b6e3ae7d566d6c67a7d7a6b292a30514548dab9b9 -e4b8b87161682e2e2a3a413a64728547537a36393a2f3135373c4c737da03e4360 -322f3137303846414b303f382f33342a2a2c47474d595d605b5f66575c604b5052 -62676b656a6f686c70575a60878a8f73767b74777d767b7f6e73769d9ea2fdfdfd -fffffefffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefeff -fbfcfbf6f7f4efeeecd4d1cfa5a0a0c1b9b9dcd2d0baaeac706a67434340272727 -1e1e1e1a1a1a191919191919181818171717171717171717171717161616151515 -1616161717151817151d1c19302f2b83827ecccac5e6e5e0ecebe6efefeaf6f4f3 -fdfdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffeeeeeea7a7a6bfbfbd9d9d9a2e2f294c4f49 -3638351414131b1d1a2f312e80827f5e5f5e585c5a4f5253666b6c6f7476707178 -5f62694a4e53474b502a30302e3732716160651f2c793640322a271315141e201f -272b291417162022222f3130151614151714363835b4b6b2cfd2ced4d6d2d3d5d1 -d3d5d1d1d4d0d0d3cfcfd0cecdd0cbcfd0cfa6a7a6e8e8e8fefefefffffffefefe -f0f0f0f1f1f1f3f3f3f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1 -f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f0f0f0f1f1f1f1f1f1f1f1f1 -f1f1f1f4f4f4f5f5f5f5f5f5f6f6f6f9f9f9f4f4f4f4f4f4f4f4f4f1f1f1e6e6e6 -e5e5e5e6e6e6e5e5e5e6e6e6e9e9e9f2f2f2fdfdfdfffffffffffffcfcfcfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfd1e1e1e1212120c0c0c -0a0a0a070707070707040404000000050505050505070707080808070707070707 -0505050404042424241515151212120f0f0f0f0f0f0e0e0e0c0c0c0b0b0b101010 -1515151717171717170f0f0f0c0c0c090909111111131313131313141414191919 -2121212828282f2f2f3333333838383d3d3d3c3c3c2d2d2d3232323d3d3d404040 -3939392929292020201919191616161a1a1a3030303d3d3d2c2c2c161616161616 -2323232d2d2d3636363f3f3f4343433f3f3f3939393030302424241c1c1c161616 -1111110f0f0f0c0c0c0b0b0b080808060606050505040404050505070707070707 -0909090b0b0b0c0c0ce8e8e8ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffafafae8e8e89494947f7f7fc0c0c0f2f2f2fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffbcbec0383c3f0a0d0f070b0c070a0c070a0c070a0c070a0c070a0c -070a0c070a0c070a0c070a0c070a0c050a0c05090a04080a04080a04080a04080a -04080a04080a04080a04080a04080a04080a04080a04080a04080a04080a04080a -04080a05090a070a0b070a0b070a0b070a0b070a0b060a0b070a0b0a0b0e0b0f10 -11151614171a181c1e1a1f231b22271a20251d22271c1f220f11140b0e0f070a0b -05090a05080a03080902060903070903070903080a060b0d0b0f12121619191e20 -24282a323739434b4d565d60666e70747c80808b8f8b9499949ea39ca9ad9fadb4 -a5b3baaab9bfacbec3afc1c5b0c2c7b0c1c5acc0c3a5bdbf9eb4b794aaac82959a -5e6d70202a2d0a0e0f5f6163dcdddefbfbfcfffefffffeffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefffffffffffffffd726f6c2a2724 -382f2d5c504d2624220303032121213f43443c40423a3e413f43474042463f4346 -4045473f4346393b3d3635375a88968abfdf7c8699343031322f2a797748a4a352 -8a81535047452d2d2f4945478b8783746d68403c3b32302e313431383f45343a46 -36303433303433333a3739403132372e3333372e32322f3236393c453e42343537 -5050555a5e625f636850565a53575c666b6f676c70686e72676b706a6c7275777f -767880767b80767b7fe1e3e4fffffffffffefffffeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefcfcfbf7f8f6f0efeccdcbc8a19c9bd0c8c6 -dfd4d2cec2c28b85823b3a372223221c1c1c181818171717171717161616161616 -1717171616161616151515151414141515141e1d1c2f2e2a43403b6b6a669e9b95 -b8b6afcccbc4dad9d3e5e3ddeeeee9f8f8f8ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeef -a8a7a7c2c2c08e8f893e3e3a4f4f4a62635e2e302e1213121c1e1b2c2e2c4c504b -5658584c51516a6c72767a7f787b81696d744a4f552c31341a201f1e2725635152 -681e2c6f30391d17151e2120232625313535191b1b3d4240929494353835111311 -2427249c9e9ad2d4d1d2d6d1d2d5d1d0d4d0d0d3d0cfd1d0ced0cbccd0cacfd0cf -a5a6a5e8e8e8fefefefffffffefefef9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9fafafafafafafafafafbfbfbfbfbfbfbfbfbfbfbfbfbfbfbf9f9f9f7f7f7 -f9f9f9fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbf9f9f9f8f8f8f9f9f9 -fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefe9292927b7b7b5b5b5b3e3e3e2323231313130b0b0b070707080808 -070707070707070707070707070707050505050505282828171717131313141414 -1111110f0f0f0f0f0f0e0e0e0b0b0b0f0f0f1414141717171212120d0d0d0a0a0a -0d0d0d1111111111111313131616161d1d1d2424242d2d2d3232323535353a3a3a -3535352020202121212929293131313a3a3a4242424141413a3a3a303030222222 -1616161515151313130c0c0c0d0d0d1313131818182121212c2c2c343434383838 -3434342c2c2c2121211a1a1a1515151010100f0f0f0c0c0c0b0b0b080808050505 -0505050404040404040505050707070909090b0b0b0a0a0ae7e7e7ffffffffffff -fffffffffffffffffffffffffffffffffffffffffffafafae8e8e89595957f7f7f -c0c0c0f2f2f2fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff6f8f98e8f91202324070a0c -070b0b070a0c070a0c070a0c070a0c070a0c070a0c060a0c060a0c060a0c050a0c -05090b05090a04080a04080a04080a04080a04080a04080a04080a05090a06090b -05090a05080a05090a06090b05090a05080a05080a07090a07090a07090a06090a -06090a05080a05080a060a0a070b0b0c1112131818131818161a1e191d22151a1e -161b1e121519060b0d02080902040802070a050a0b080d101015171a20232b3334 -3b4647515a5d686d717c8083898d91969a9fa2a9afb0bac0bcc6cdc2ced3c5d0d8 -c3d0d8bdcdd5b5c7cdabc0c6a0b5bb96aaaf8aa0a682969a788e92708488687d7f -607578586e71516568485b5f364448192124050a0c46484acbccccfbfbfbfefeff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff8d8b892423223e3532564d4c1f1c1a02020229292a404245 -4043456b6d6e686a6e4244484044474346484041423a3c3b3c3e3c637f7f7d96a0 -686b703d393333302d393533373630373432353032332f2f353233393837353533 -34323033312f32313030302f313130322f313230313334324345403435302f3331 -312f2d35362b6d6f6e746f7746484c55585e5a60655c61674e51555d626766676f -675e5f6c5250744c506c5153776f71797e81697274b9bbbdfdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefcfbfc -f8f6f8ece8e7c4bcbca8a09eddd3d2e3d7d9dbd0d0b5abab5e595a34323726252c -1f1f251f1f231f1f211d1d1e1c1c1c1a1a1a19191a1b1b1c1e1e1e2424262b2a2d -3430353e39414c464c5e595e757073888383a49f9ec2bbbbdcd5d3e8e5e4f1f0f0 -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffebf0eea6a8a9c8c3c58287824d463f331d1c6a6058 -707d71181b191b1c1c14201d2f322f3734353a3c3d5b5e5f7e838592959b81838b -60666d34373a1e221d131f193f2d34691527763a463232332428283539392e3131 -1c201e3b3d3bc5ccc7696d691012101a1d1b787e78cbd0cbd0d5d0cfd3cfcfd1d0 -cfd1cfd0d4d0cfd0d0cdd0cccfd3cfa6a6a6e8e8e8fefefefffffffffffffefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffff -fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffff -fffffffffffffefefefefefefefefefefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfd6666666e6e6e6e6e6e6e6e6e -6565654b4b4b2c2c2c1e1e1e1c1c1c111111090909070707050505050505040404 -0909091f1f1f1414141616161717171414141414141212121010100f0f0f0f0f0f -1111111717171414140f0f0f0a0a0a0909091010101111111010101515151b1b1b -2222222a2a2a3030303434343838383636361e1e1e1818181c1c1c1f1f1f242424 -2c2c2c3434343b3b3b4343434848484747473d3d3d303030212121171717101010 -0f0f0f1212121818182323232c2c2c2f2f2f2929291e1e1e181818121212101010 -0d0d0d0c0c0c090909080808050505050505010101000000040404070707090909 -0a0a0a080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffafafae8e8e89595957f7f7fc0c0c0f2f2f2fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfee1e1e25f6263111415060a0b080a0c070a0c070a0c070a0c070a0c -070a0c050a0c050a0b050a0b050a0b050a0b05090a04080a04080a04080a04080a -04080a04080a04080a05090a070a0b05090a05080a05090a070a0b05090a05080a -05080a07080a07070a07070a05070a05070a05080a04080a05090a060a0b070b0b -080f0f050b0b04090b070b0d070b0e080b0e070c0e0b101214191a222629333a3e -4751535e676b737b7f8690969aa6acacb6bdb8c4cbc3ced5c8d3dbc6d2d8c1cdd4 -b9c7ceaebec6a3b3bb98a7af8e9ea582929975898e697e825f757a566b6f4e6266 -475a5f4153563a4c4f3545492f41432b3b3d2636392431341f2b2e11191a050709 -303333b5b7b8f9f9f9ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffc6c6c62e2d2c423a38 -4a43411715150606063031314142454a4b4c7475775b5e60414448404549444547 -4546464241404748475051514f504f5454545858585453505958566867643e3d3b -303030313031313131303030303030313130313130313131303130313130303231 -3030303d3f3e696b6a3637372f31322f302f3233333d3f402f32363f41475a5f63 -5c60665d61664d515260666e6566716252557455507d5c5779605e766d6b6c6f70 -abafaffbfcfcfefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefcfbfcf8f7f8ebe7e7bcb6b5afa8a4dfd7d5ddd4d5 -dbd2d4d2c9caa49da16d6a7652505f4a485647445244424f413f4b403e4b3e3d4a -3e3d48403e4942404a44434d4846504e4a52575159605c606f6a6c817c7c918d8c -a6a2a1beb9b9d9d3d3edeae9f5f6f6fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffe9f0eda3a8a9 -c5c0c37f827d4e473f421e1e7c645da9b1a332343113141614231e171a18201e1e -1b1d1f393d3e7c808481868b71737b3b3e4628282c35352d24302d33292e60111c -915d65939b9b3a3e3e292c2d1e201f1b1e1c2d312dbcc3bc7d827e0e1512121612 -616462c8cec9cfd5d0cfd3cfced0cfced0cfd0d4d3d0d1d0ced0d0d0d4d1a7a7a7 -e9e9e9fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff -fffffffffffffefefefefefefefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfd2f2f2f3333333d3d3d4040404444444040402c2c2c1e1e1e1d1d1d1a1a1a -0a0a0a0707070707070505050101010b0b0b1c1c1c1010101414141a1a1a151515 -1515151515151414141313131212121111111818181717171111110b0b0b080808 -0d0d0d1010101010101212121a1a1a2121212828282d2d2d303030343434363636 -2828281212121515151717171919191c1c1c2020202727272e2e2e3636363f3f3f -4949495252525555554e4e4e3f3f3f2b2b2b1717170f0f0f1010101818181f1f1f -2020201919191616161212121010100d0d0d0c0c0c090909080808050505050505 -0404040101010404040707070808080a0a0a060606e7e7e7ffffffffffffffffff -fffffffffffffffffffffffffffffffffffffafafae8e8e89393937f7f7fc1c1c1 -f2f2f2fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffdffffffffd9dadc5c5f600f1315 -01060904080b070a0b070a0c070a0c070a0c050a0c05090a05090a05090a05090a -050a0b050a0b050a0b050a0b05090a04080a04080a04080a05090a070a0b05090a -05080a05080a05080a05080a05080a07090b07080a07070a07070a05070a02070a -01080a01080901070801060801060805090c0c1114191f232e363a484d52616a6f -7985888f9a9fa2aeb2b0bec3b9c7cdbacad0bccbd0bac8ceb2c2cca8bac29daeb8 -90a1aa83969d748a90687d835c707651646846595b3d50513648493040412c3b3d -273539243134202d2f1f2a2d1c282b1b2528182324172022161f20141d20131c1c -10191a0f1517060e100d11124e5152c7c7c8faf9fbfffeffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef4f4f44f4d4d3e3736403b39110e0e0a0a0a373839434447444548 -46484b4243474145494246494a4b4d6e6e6e727270707070969595878787929292 -9b9b9b8b8b898f8f8e9d9d9b444443313030303132303132303132303032303031 -3030313030312f30302f30302f30302f303030323335363633343735363b37393e -3a3b3f3e3f424042474f51575b5d615d5f6357595d55545762686f61667165626c -6863676a6f6e777b79979898d4d4d4fafafafafafafcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfcf9fafc -e6e6e5b1acabb8b3afe6dfdddfdadadbd6d5d5cfcecac7c7b2b0b78e8d9673737a -68676f63626d63616d62616d64626e69666f6d6d727272777e7d8189898d969496 -a4a3a0adaca8b8b7b1c8c7c1d8d7d3e0dfddeae8e5f4f3f1faf9f7fbfbfbfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffefee9eeeda2a8a8c2c2c2898f884d463e42232278585494867f -3e3937101010171e1d1719181b1d1d1618181b1e1f4c505373757b676a70363741 -120d132c292446504c42383d55141b986d6bc6cecb93999a444748111413161716 -2a2d2ab7bdb69198911518160e110e515652c2c8c3cdd1cdcdd0ceced0cfcecfcf -d0d3d1d0d1d0ced0d0d0d4d1a7a7a7e9e9e9fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfd0707070a0a0a0d0d0d101010141414 -1717171616160f0f0f1010100f0f0f0909090808080808080505050101010c0c0c -1616160d0d0d1515151a1a1a181818171717171717171717161616151515131313 -1717171d1d1d1616160e0e0e0909090909090d0d0d0f0f0f1111111717171d1d1d -2525252a2a2a2d2d2d3131313636362f2f2f1313130f0f0f101010111111141414 -1717171b1b1b1f1f1f2323232929293232323c3c3c4444444f4f4f5a5a5a5d5d5d -5050503333331a1a1a0e0e0e0c0c0c1111111414141313131111111010100d0d0d -0c0c0c0909090808080505050505050404040101010404040707070808080a0a0a -060606e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fafafae8e8e89393937f7f7fc1c1c1f2f2f2fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffafcfcd2d7d782868736393d13161704090c010408010207010207 -010407010307010407010608010608010608010608010608010608010508010307 -010206010206010206010407010307010205010205010205010205010206010207 -01040804050907070a07090b070d0d0b10111117181c23242e3839495457657072 -7d8a8d949fa6a4b0b7abb7bcaab8bfa5b8bc9eb0b595a8ac8c9ea382939a77878e -6c7b82616f775566694a5b5e41525338484b3240432c393c253135212c301c2829 -182323152020131c1e101a1b1018180e16180e13150d11140c10140b10130b1012 -080f100a0f100b0f100c1012101316191d1f2c2f325556599c9d9fd6d7d8f9f7fa -fffcfffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcffffff9390903c36343a3231 -0f0d0d0a0a0a39393b43444943444941424743444943474b42464a5455576e6f6f -6161606867678383837c7c7c6f6f6f6262625d5d5e545455494a4b3a3a3b333335 -30313330323330323432333632353836373b37393c383b3e3e3f413f4044434548 -47484b49494c4d4e514f505454555956575c5d5d626364696e6f7076777b838489 -9090929c9c9cacadb1b8bcc1bfc2c9cfced3e0dce4f0edf1f9f9f9fdfdfdfffffe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefcfcfcf9fdfddddedca8a6a3cbc8c2f3f0eceeebe8eae7e5 -e4e2dfdedddad8d8d4d0d0ccc5c5c0bdbdb8b9b9b5b8b8b7babab9c0c0bfc9c9c7 -d1d2cddadbd4e2e2dbe8e8e2ebebe8f1f1eef6f6f1f9f9f2fbfbf3fdfcf7fcfbf9 -fefdfafefefbfcfcfbfcfcfcfcfcfcfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffcfeeaeeeca1a7a8bdbcbd -8f989049443c4c2c2b613d3d5336363b2a291713111b1a191a1e1d181a1a1c1f1f -16191a36393d76787f7b80866d6e78333038110f0d31333458474d5e1c21a26d6e -b7b7b7969a9c5153550f13110e110f2b302bb3b8b3969d971719170e110f515652 -c1c8c1cbd0cccdcfcecdcececdcfcecfd2cfcfd1d0ced0cfd0d4d2a7a7a7e9e9e9 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -070707070707050505050505010101010101050505000000000000000000050505 -0808080707070505050101010f0f0f1313130b0b0b1515151919191a1a1a181818 -1818181818181717171717171717171616161e1e1e1b1b1b0f0f0f0a0a0a050505 -0b0b0b0e0e0e1010101515151b1b1b2121212727272b2b2b2f2f2f353535343434 -1c1c1c0b0b0b0c0c0c0d0d0d1010101010101212121414141919191d1d1d202020 -2424242a2a2a3434343e3e3e4949495858585e5e5e4d4d4d2d2d2d1515150a0a0a -0d0d0d0f0f0f1010101010100e0e0e0c0c0c090909080808050505050505040404 -0404040404040707070808080a0a0a060606e7e7e7ffffffffffffffffffffffff -fffffffffffffffffffffffffffffffafafae8e8e89393937f7f7fc1c1c1f2f2f2 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfefefcfdfde9eaeacfd2d2 -acaeae86888967696b5354564041433336362c2d2e2526282124241f22221e2021 -1e21211f222221232321232321232423232626282a2a2c2d2f30302f3132333334 -3435373838393c3d3e3f3f424042434646474d4e4f5354565b5d5e626566676f6e -7279797d8485848d908c9899919b9f939da0919aa08f989c899196818a8e798387 -747f816f797d697375676f72626a6d5d6569596164575f5f545b5c525859525859 -5357585156585155565055555054545052544e52544f52534e52534e51524f5253 -53535653565754565755565857595c5d5e6267686a7476788586879a9c9db4b4b7 -cacaccdcdcdcf3f2f4fdfdfdfefefffffdffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefefefee0dede4c44432f28280e0c0b08090936373a43434b43434b43434a -44454c43474c42464a5354564b4b4b31302f3534343a3a3a39393939393939393a -37393b393a3c3b3c3f3b3d3f3f3f4340464a44494d484c4f4c50544e52564e5357 -53585c555a5d595e6261626767686d6f7075797a7f838387929393a1a3a2b4b6b6 -c7c9c9d5d5d6e5e3e8f1f0f1f8f7f8f9f9f9faf9fafbfbfbfbfcfcfcfcfcfdfdfd -fefafafffefcfffeffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefcfcfef8fdfcd5d8d5 -a9a9a7dbdbd7fffffbfdfdfafcfbf8f9f8f5f5f4f2f1eff0eff0f0f1f1f1f3f3f3 -f6f6f6f7f7f6f8f8f7fafafafcfcfcfdfdfdfdfdfdfefefefefdfefcfcfffcfcff -fcfcfcfbfdfafafcf8fbfcf9fbfdfafbfefafbfefafcfcfbfcfcfcfcfcfcfcfcfc -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffeffebf0ee9fa4a5b3b4b696a39a44443c422723522f304123233d2725 -281a191612111f25231d21201d202027292b4e51549da1a79b9ea69597a1707279 -3638361414154a3441591b24743d484e46492b2e2f1517170709090508063c3f3d -bec3be8a8f8b141714101210545856c4cac5c9d1cacacfcbcbcecccdcfcececfcf -ced0cfcfd0cfd2d5d3a4a4a4e9e9e9fefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfd070707050505000000050505000000040404 -0505050505050505050505050707070707070707070505050202021313130f0f0f -0909091515151717171c1c1c1818181818181a1a1a191919181818181818181818 -1d1d1d1e1e1e1414140a0a0a0606060808080c0c0c0e0e0e1111111717171d1d1d -2424242929292c2c2c3131313535352929290d0d0d0c0c0c0c0c0c0c0c0c0c0c0c -0d0d0d0f0f0f1010101313131616161a1a1a1d1d1d2121212626262e2e2e363636 -4242424a4a4a4646463434341c1c1c0a0a0a0707070b0b0b0e0e0e0d0d0d0c0c0c -090909080808050505050505040404040404040404070707070707080808060606 -e7e7e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafa -e8e8e89494947f7f7fc1c1c1f2f2f2fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff6f7f7ececede2e2e2dcdcdcd5d5d5d0d1d2 -cecfcfc9cacac8c8c8c8c7c7c5c6c6c7c6c6c7c7c7c7c7c8c7c8c8c8c8c8c8c9c9 -cbcbcbcececfcfcfcfcfcfd0d0d1d1d1d2d2d2d2d3d3d3d3d5d5d5d5d5d6d7d7d7 -d8d8d9dbdbdbdedfdfdee0dfdfe3e2e2e3e3e0e5e4e0e6e6e1e6e7e0e7e8e0e5e5 -dde3e3dce0dfdbdfdfdadddedadcdcdadcdcdadcdcd9dcdcd9dadbd8dadad8d9da -d8d9d9d7d9d9d8d9d9d8d9d8d8d9d9d9d9dad9d9d9d9d9dad9d9d9d9d9dad9d9da -d9d9d9d9d9dad9dadad9d9dadadadadbdbdbdbdbdbdbdbdcdbdbdcdcdddddedfdf -e1e1e2e6e6e6eaebebf2f2f2fafafafefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcfefdfd9d9998312d2d161414 -020202282a2b3f434941444a43454b42454b42474b464a4e404145393b3d3b3d3e -3f3f413f40423f424446494b4c4e4f4f505550525655575a57595d5b5e5f5e6062 -6164666a6c6f7073767c7f8187898c97999ca8aaadb7babbc9cacdd8d9dae5e6e8 -efeff3f7f7f8f9f9f9fafafafbfbfbfcfdfcfdfdfdfefefefffefffffefffffeff -fffffffefefefefbfafffefbfefefafdfffafdfffbfffffeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefcfcfcf8f9f9afafaf6a6a6ad2d2d2fbfbfafbfbfbfbfbfafbfbfa -fbfbfcfcfcfdfcfcfefdfdfefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfd -fcfcfefcfcfefcfcfcfcfbfcfcfcfefcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffeffebf0ee9ea4a5b3b6b4a6b5ab -484b413b23202b13112a1714391f1c38201f14120f1f2524343638141819292c2d -4a4c51a3a6abbcc0c8b4b8c2a7acb3818c8428272d1d131f3e17203513210f0b12 -080b0b090a0a080908040806272b28aab1aa646b650b100b111411686b68c8cdc9 -cdd2cdc9cfcbcbcecccdcfcececfcfcdcfcececfcfd2d3d1a4a4a4e9e9e9fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0a0a0a -0a0a0a080808070707050505050505050505050505070707070707080808070707 -0707070505050303031d1d1d0e0e0e0707071515151414141f1f1f191919191919 -1a1a1a1a1a1a1a1a1a1919191a1a1a1d1d1d2121211818180b0b0b070707080808 -0b0b0b0c0c0c1010101414141a1a1a2121212626262a2a2a2e2e2e343434303030 -1414140c0c0c0c0c0c0d0d0d0d0d0d0e0e0e0d0d0d0c0c0c0d0d0d0f0f0f101010 -1313131616161919191d1d1d2121212626262b2b2b2f2f2f303030282828151515 -0a0a0a0707070909090b0b0b0c0c0c090909080808050505050505040404040404 -040404050505070707070707050505e7e7e7ffffffffffffffffffffffffffffff -fffffffffffffffffffffffffafafae8e8e89494947f7f7fc1c1c1f2f2f2fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefffffffefefefdfdfdfefefefefefefefefe -fefefefffffffefefefffefeffffffffffffffffffffffffffffffffffffffffff -fffffffefefefefefefffffffffffffffffffffffffffffffffffffffffffefffe -fefefefdfffefdfffefdfffffdfffcfcfffafcfef9fefffbfefffbfffffffefefe -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffff -fffffffefefefefefefffffffffffffffffffffffffffffffffffffffffffefefe -fffffffffffffffffffffffffefefefefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff6f6f6898a8a2e2e2e0f0f0f0f10123c414441464a41454842474b -43484c454a4e484d4f4c4f544e535851585c555b5e5a5e615f636864696d6e6d6f -7676788181838f8f90a19fa2b1b2b1c1c1c1d3d3d4dfdfdfeaeaeaf5f5f5f9f8f9 -fafafbfbfbfcfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefcfcfcfbfbfbe6e6e6c4c4c4 -ededeef8f8f9fbfbfbfbfbfbfafafafcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffeffebf0ee9ea3a3b3b5b4afbfb250564b3f2724240f0d1e160e2c100e472725 -13130e1b211e2626271012130f101153575bb7bbc0bdc0c884859054575c262e29 -0f11170a0b1722161e1b18230b10160f10120b0f0f080a09080b09101310626562 -2b2f2b080b0a171b17858a87c7cec8cbd0cbc8cbc8cbcfcccdcfcecdd0cecbcfcc -cdcfced0d3d2a4a4a4e9e9e9fefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfd0f0f0f0e0e0e0c0c0c0a0a0a0a0a0a080808080808 -0808080707070707070707070808080707070404040808082020200b0b0b070707 -1414141616161b1b1b1717171818181a1a1a1b1b1b1a1a1a1a1a1a1b1b1b1d1d1d -2222221d1d1d0d0d0d0808080505050808080b0b0b0c0c0c1111111616161c1c1c -2323232828282b2b2b3030303131311e1e1e0d0d0d0d0d0d0e0e0e0e0e0e0f0f0f -0f0f0f0f0f0f0d0d0d0d0d0d0c0c0c0c0c0c0e0e0e101010131313151515171717 -1919191b1b1b1b1b1b1e1e1e1c1c1c1313130a0a0a0606060909090b0b0b0c0c0c -080808050505050505040404040404040404050505070707070707050505e7e7e7 -fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafae8e8e8 -9393937f7f7fc2c2c2f2f2f2fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffefffffefffffefffffefefffffcfffffcfffffcfffffefffffd -fffffdfffffdfffffdfffefffffefffffefffffeffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefbfcfcf8f8f89f9f9f424241 -1b1c1d414244545658545658595b5e5e5f61626468696b6e7275778284868c8d8f -9fa1a5afb2b4bdc1c2cecfd2dbdcdee7e7e7f3f3f5f9f9f9fafafafbfbfbfcfcfc -fdfdfdfefefefefefefefefefefefefefefefcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffedf1ef9ea2a2afb1afb2bab3686d65 -4a38363114131d160f20121047252a1b1213161c182126241516160202023c3f3f -86888c4e505325252b0e1011010701000007090e102525281b1f220b0f120a0c0c -0d0e0d1516161f23204143425053510f110f080a09323332a9adaac4c7c5c6cac7 -cccfcdcecfcfced0d0ced0d0cdd0cfced0cfd0d4d0a6a6a6e9e9e9fefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfd0f0f0f0e0e0e -0c0c0c0b0b0b0a0a0a090909090909090909070707070707070707070707070707 -0000000b0b0b222222090909060606151515202020232323181818131313171717 -1c1c1c1c1c1c1b1b1b1c1c1c1d1d1d222222202020101010080808050505060606 -0808080b0b0b0f0f0f1313131919192121212626262a2a2a2d2d2d313131262626 -0f0f0f0d0d0d0e0e0e0f0f0f0f0f0f0f0f0f0f0f0f0e0e0e0e0e0e0d0d0d0d0d0d -0d0d0d0e0e0e0e0e0e0f0f0f101010131313151515151515171717181818161616 -101010070707010101060606090909080808060606050505040404040404040404 -050505070707070707050505e7e7e7ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffafafae8e8e89393937f7f7fc2c2c2f2f2f2fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffefffffefffffefffffefffffefe -fffffcfffffbfffffbfffffbfffefffffefffffefffffefffffefffffefffffeff -fffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff9f9f9e0e0dfafafb0939495969798a5a6a7b0b0b1bdbebf -d2d2d3dedfdfebececf7f7f7f8f9f9fafafafbfbfbfcfcfcfdfdfdfefefefefeff -fffffffffffefffffeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -eef1ef9fa19fadafacb1b3af7f847c4e433f3b1818261711281b173b2125201314 -0f14102127220d0f0c0206020e0f0e1719190b0c0d070709070708080808050808 -0b0d0b202221242525181918191b1a2526252627272020203d403d2b2b2b080909 -1b1d1c797b79c1c6c2c8cac9c8c9c8cacecccfd0cfcfd1d0cfd1d0ced0d0ced0d0 -d0d4d2a7a7a7e9e9e9fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfd0f0f0f0e0e0e0c0c0c0b0b0b0a0a0a090909090909090909 -0707070707070707070707070505050101010d0d0d1f1f1f070707060606131313 -2424242929292e2e2e2626261717171212121818181c1c1c1c1c1c1c1c1c212121 -2323231313130707070505050404040707070808080c0c0c1111111717171d1d1d -2323232727272b2b2b2f2f2f2828281515150e0e0e0f0f0f0f0f0f0f0f0f0f0f0f -0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0e0e0d0d0d0c0c0c0d0d0d0e0e0e0f0f0f -0f0f0f0f0f0f1111111212121212121212120d0d0d0606060404040808080a0a0a -060606050505040404040404040404050505050505050505010101e7e7e7ffffff -fffffffffffffffffffffffffffffffffffffffffffffffffafafae8e8e8939393 -7f7f7fc2c2c2f2f2f2fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffefffffefffffefffffefffffefefffffefffffefffffefffffefffefffffeff -fffefffffefffffefffffefffffefffffeffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffefffffcfffffcfffffcfffffcfffffeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffedefee9ea09facaeacaaada790938b45423d -402423351415381f1e291a19251d1c0d110e1f252010120f0a0b09020602080909 -0e0f0f0e0f100c0c0d0809080404041111113032313737372c2f2d242524212321 -1719191f22204446462c2d2d2f32316f6f6fb9bdbbc7c7c7c8cccac8c9c8cacdcb -cfd0cfcfd1cfcfd1d0cfd1d0d0d1d0d3d5d4a7a7a7e9e9e9fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfd0c0c0c0b0b0b0a0a0a -0a0a0a090909080808080808070707070707070707070707070707050505010101 -1010101a1a1a0505050505051111111d1d1d2323232e2e2e323232333333242424 -1414141616161f1f1f1d1d1d212121252525161616070707050505040404050505 -0606060b0b0b0f0f0f1515151c1c1c2121212525252727272d2d2d2b2b2b181818 -0f0f0f1010101010101010101010101010100f0f0f0f0f0f0f0f0f0f0f0f0f0f0f -0e0e0e0e0e0e0e0e0e0c0c0c0d0d0d0f0f0f0f0f0f0f0f0f101010111111111111 -1010100a0a0a050505050505090909080808050505010101030303040404050505 -050505040404040404e7e7e7ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffafafae8e8e89393937f7f7fc2c2c2f2f2f2fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefefefefefefcfffffefffffefffefcfffffefffefcfffefc -fefefcfffffefffffefffffefffffefffffefffffefffffefffffcfffffcfffffc -fffffcfffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfd7e7efd5252fd -f9f9fdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecefed -9d9f9ea9aca8a0a29e9b9f984a4c45473733370d134522233f352d2f2a2510130f -1e241f1919181719170b0c0a0c0e0e0e0e0f0d0d0f0b0d0d1112111b1d1c262727 -292a29282b29212121131313272727383938595a5a6465647f8180a3a5a3b4b6b6 -bcbfbdc6c8c7c5c8c6c7c9c8cccfcdcecfcfcfcfcfcfd0cfcfd2cfcfd2d0d3d5d5 -a7a7a7e9e9e9fefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef2f2f2f6f6f6e7e7e79393937f7f7f -c2c2c2f1f1f1f2f2f2fcfcfcfefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfc7b7bfa0000ff0000ff5050fbf8f8fcfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff0f1f19d9f9da6a8a5a2a49fa2a59d61645d463d3b -3b151b421b1c503d3549423a1114101e221e1c1d1a1f211f181918171919131417 -1b1c1d2123232728272427262325242728282c2e2d3637364f5351737474868887 -8d8f8e8e918f9a9d9bacaeadb7bab8c2c3c3c3c5c4c4c7c5c7c9c7c7c9c8cbcecc -cccecdc9cccacbcdcccccfcdd2d4d3a7a7a7e9e9e9fefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefee9e9e9 -818181a1a1a1e4e4e49292927f7f7fc1c1c1d6d6d6828282acacacfcfcfcfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfc7a7af90000ff0000ff0000ff0000ff -4f4ffaf7f7fbfefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f1f19ca09d -a7aaa6a4a7a29b9e977b7d793431314127293916154c2c274e433b12130f1d1f1d -1b1d191d1e1b202020494a4b2a2d2e27282c262828262727282928323332454745 -5d5e5e6d6f6f7f8180878a88919492989b99a1a3a2a9adaab3b5b4bbbebcc2c6c3 -c4c6c4c5c7c6c7c9c7c9cccbcdcfcfc8cbc9c7c8c8cccecdcecfced2d3d2a7a7a7 -e9e9e9fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbe9e9e98686867f7f7fbfbfbf9191917f7f7fbebebe -9494947f7f7fb2b2b2f6f6f6fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefeffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc7a7af9 -0000ff0000ff0000ff0000ff0000ff0000ff4f4ffaf7f7fbfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff0f1f19d9e9da5a7a4a1a49e9b9d968d8e893e3c3c3e3431 -4222224b2521493a3513110e1d1d1c1c1e1b171817242725555656292a2c262628 -2728293637364d504f6668667174747c7d7c8083828182818e908f9a9c9ba3a5a5 -aeaeaeb1b3b3b7b9b7bbbfbcc0c2c1c5c7c7c6c8c7c7cbcac8cac9cbcecccacdcb -c9cbcac9cbcacbcdccd0d3d1a8a8a8e9e9e9fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e8e8e8aeaeae -7f7f7f8a8a8a8f8f8f7f7f7fa1a1a17f7f7f878787d6d6d6f1f1f1fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefebcbcfc3131fee5e5fd -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefeddddfc2e2efec6c6fcfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfc7b7bf90000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff4f4ffaf7f7fbfefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff0f1ef9b9b9ba5a6a5 -a7a8a5a0a19f96999560635f2927244d38364831304a3e3b12110e1c1d1a272b29 -2a2a2a3535354548463333334344445757576d6d6d787879808180858585878787 -8e8f8f989999a4a5a5aaaaaaacadadafb0b0b1b4b4b7b9b8bcbdbdbec0bfc4c7c6 -c5c7c5c5c6c5c5c7c6cccfcccacdcbcdcfcecdd0cecfd3d0d2d6d5a6a6a6e9e9e9 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfd6b6bfd6c6cfdfdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefeececfd3838feaeaefcfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffafafaeaeaeacdcdcd8a8a8a7f7f7f8787877f7f7f8383837f7f7f -abababdcdcdcf3f3f3fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdbabafa0909fe0000ff2626fde2e2fafefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefedbdbfa1e1efd0000ff -0e0efec4c4fafdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfc7b7bf90000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff4f4ffaf7f7fbfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefef9b9b9badadadaeaeaea8a7a89c9f9c878c8534342f362d2c -544a4a3733300d110c1b1e1b3d3f3e5052525053525c5d5d6667667072717a7a7a -8584858a8a8a8c8c8c9191919d9d9da7a7a7acacacacacaca8a8a8adadadafafaf -bbbbbbbebfbfc1c4c2c5c6c5cccecccccecdc9cccacacccbcdcfcfcbcecccecfcf -ced0cfcecfced0d3d1a6a6a6e9e9e9fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefcfcfc6969fb0000ff -0000ff6a6afbfcfcfcfefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefeeaeafb3030fc0000ff -0404feacacfafdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcf2f2f2dadadaafafaf -7f7f7f8080807f7f7f7f7f7f8d8d8dcccccce7e7e7f8f8f8fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdb9b9f90909fe0000ff0000ff0000ff2525fc -e1e1f9fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefedadaf91d1dfc0000ff0000ff0000ff0d0dfdc3c3f9fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -7b7bf90000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff4f4ffaf7f7fbfefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff1f1f19f9f9fb0b0b0b0b0b0 -a8a8a89da09f949d9766696427242225211f1213100c100c2529255557566d6f6d -7172717577777f82808285838989898e8e8e969696a1a1a1aaaaaaadadada9a9a9 -a9a9a9afafafa5a5a5aeaeaebdbdbdbfbfbfc1c3c2c5c7c6c7cbc8cfd2cfcfd2d0 -cdd0cfcdcfcecbcecbcfd0cfced0d0cdd0cec9cccbcbcdcba3a3a3e7e7e7fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefcfcfc6868fa0000ff0000ff0000ff0000ff6969fafcfcfcfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefee9e9fa3030fc0000ff0000ff0000ff0404feababf9fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e8e8e8cdcdcd9090907f7f7f7f7f7f808080b3b3b3dbdbdb -f2f2f2fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdb9b9f90909fe -0000ff0000ff0000ff0000ff0000ff2525fce1e1f9fefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefedadaf91d1dfc0000ff0000ff0000ff0000ff -0000ff0d0dfdc3c3f9fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfd7c7cfa0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff5151fbf8f8fcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff0f0f0a2a2a2b3b3b3b1b1b1b0b0b0a8a9a89ca7a18b928f5a5d58282928 -1417161a201d4a514d7375748083818d8e8d888b888a8d8b8e8e8e9696969e9e9e -a3a3a3abababa9a9a9a9a9a9adadadb3b3b3b7b7b7babababebebec2c2c2c2c2c2 -c6c9c7c9cdcbcccfcecfd1d0d0d1d0ccd0cfcecfcfcccfcdd0d3d1d0d1d1cfd1d0 -cacdcccbcdcca2a2a2e7e7e7fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefcfcfc6868fa0000ff0000ff0000ff0000ff -0000ff0000ff6969fafcfcfcfefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefee9e9fa3030fc0000ff0000ff0000ff0000ff -0000ff0404feababf9fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3ddddddb7b7b7 -7f7f7f7f7f7f8f8f8fcececeeaeaeaf9f9f9fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdb9b9f90909fe0000ff0000ff0000ff0000ff0000ff0000ff0000ff -2525fce1e1f9fefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefedadaf91d1dfc -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0d0dfdc3c3f9fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefafafaedededd8d8d8 -c3c3c3b4b4b40808fa0000ff0000ff0000ff0000ff0000ff0000ff0000ff9898bc -c0c0c0d4d4d4e9e9e9f8f8f8fefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffeeeeee9a9a9aa4a4a4a5a5a5a3a2a2 -a0a1a0949b988b928e8389865b5f5d383d39454d477073727e807f7e807f838684 -878a898c8d8d8f92909797979999999999999b9b9b9c9c9c9f9f9fa3a3a3ababab -acacaca8a8a8adadadb0b0b0b4b5b5b7b8b7b8bbbabbbdbbbebfbfbcc0bdbbbcbb -b8bcb9b8bbb9b6b9b7babbbabdbfbebbbdbcbdbfbe989898e6e6e6fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfc6868fa -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff6969fafcfcfcfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefee9e9fa3030fc -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0505feababf9fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefafafaecececd1d1d1999999828282bcbcbcdfdfdff5f5f5fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdb9b9f90909fe0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff2525fce2e2fafefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefedbdbfa1d1dfc0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0d0dfdc4c4fafefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef8f8f8ebebebdbdbdbcdcdcdc0c0c00909fb0000ff0000ff0000ff -0000ff0000ff0000ff0000ffa2a2c6cacacad8d8d8e8e8e8f7f7f7fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f9f9f9cacacac3c3c3c2c2c2c2c2c2c1c1c1bec0bfbcbfbebbbdbcb9bcbbb4b6b5 -b5b7b6b7b8b7b8b8b8b7b8b7bbbbbbbebfbebfc0c0c0c0c0bfbfbfbfbfbfbfbfbf -bfbfbfc0c0c0c1c1c1c2c2c2c5c5c5c5c5c5c3c3c3c3c3c3c5c5c5c5c5c5c5c6c5 -c5c7c6c6c7c7c7c8c7c6c7c7c5c6c6c6c7c7c5c6c6c2c3c2c4c5c4c7c7c7c7c7c7 -c5c6c6c5c5c5f5f5f5fefefefefefeffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfc6868fa0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff6969fafcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefeeaeafb3030fc0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0505feacacfafdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf6f6f6e2e2e2c5c5c5 -abababd4d4d4edededfbfbfbfefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -dcdcf1c3c3dfafafcb2a2aec0000ff0000ff0000ff0000ff0000ff5858dcb4b4d0 -c9c9e5e6e6f4fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfce4e4f3c8c8e4b3b3cf4e4edf -0000ff0000ff0000ff0000ff0000ff3434e8b0b0ccc5c5e1dedef2fbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefbfbfbf4f4f4ededede5e5e5 -d5d5d50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffb2b2d6e2e2e2 -ecececf3f3f3fafafafefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef5f5f8cfcfebbbbbd79898ca -0000ff0000ff0000ff0000ff0000ff0000ff9a9acabcbcd8d0d0ecf5f5f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfde9e9f5cacae6b6b6d26565d8 -0000ff0000ff0000ff0000ff0000ff1f1ff1adadc9c2c2ded9d9f0fafafafefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcf1f1f1e0e0e0dbdbdbe8e8e8f7f7f7fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9edededdadadac6c6c63030ea0000ff0000ff -0000ff0000ff0000ff6464d9cbcbcbdfdfdff1f1f1fbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbf1f1f1dfdfdfcbcbcb5959dd0000ff0000ff0000ff0000ff0000ff3b3be6 -c8c8c8dcdcdcefefeffafafafefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefdfdfdfafafaf5f5f5e2e2e20909fb0000ff0000ff0000ff0000ff -0000ff0000ff0000ffbcbce0f2f2f2fafafafcfcfcfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf6f6f6e7e7e7d3d3d3adadc50000ff0000ff0000ff0000ff0000ff0000ff -aeaec5d4d4d4e7e7e7f6f6f6fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcf2f2f2e1e1e1cdcdcd7373d50000ff0000ff0000ff0000ff0000ff2323f0 -c5c5c5d9d9d9ecececf9f9f9fefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefafafaf3f3f3f1f1f1 -f6f6f6fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcf5f5f5 -e9e9e9d8d8d83434ee0000ff0000ff0000ff0000ff0000ff6b6be0ddddddededed -f7f7f7fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf7f7f7edededdcdcdc5f5fe30000ff -0000ff0000ff0000ff0000ff3f3feadadadaebebebf6f6f6fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e5 -0909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefafafaf1f1f1e5e5e5bdbdd50000ff -0000ff0000ff0000ff0000ff0000ffbebed5e5e5e5f2f2f2fafafafefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf8f8f8edededdfdfdf7b7bdd0000ff -0000ff0000ff0000ff0000ff2525f2d7d7d7e9e9e9f5f5f5fbfbfbfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefcfcfcfcfcfcfdfdfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefdfdfdf6f6f6e5e5e53636f00000ff0000ff0000ff -0000ff0000ff7171e6ebebebf8f8f8fdfdfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fdfdfdf8f8f8eaeaea6363e70000ff0000ff0000ff0000ff0000ff4242ede7e7e7 -f7f7f7fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff -0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefbfbfbf3f3f3c8c8e00000ff0000ff0000ff0000ff0000ff0000ffc9c9e0 -f3f3f3fbfbfbfefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf9f9f9ededed8181e30000ff0000ff0000ff0000ff0000ff2626f3e4e4e4 -f6f6f6fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffafafa -e9e9e93636f00000ff0000ff0000ff0000ff0000ff7272e7efefeffcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfceeeeee6565e90000ff0000ff -0000ff0000ff0000ff4343eeebebebfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb -0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef7f7f7cacae20000ff0000ff -0000ff0000ff0000ff0000ffcbcbe2f7f7f7fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcf1f1f18383e50000ff0000ff -0000ff0000ff0000ff2727f4e8e8e8fafafaffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffafafae9e9e93636f00000ff0000ff0000ff0000ff -0000ff7272e7efefeffcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfceeeeee6565e90000ff0000ff0000ff0000ff0000ff4343eeebebebfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff -0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef7f7f7cacae20000ff0000ff0000ff0000ff0000ff0000ffcbcbe2f7f7f7 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcf1f1f18383e50000ff0000ff0000ff0000ff0000ff2727f4e8e8e8fafafa -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafae9e9e9 -3636f00000ff0000ff0000ff0000ff0000ff7272e7efefeffcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfceeeeee6565e90000ff0000ff0000ff -0000ff0000ff4343eeebebebfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff -0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef7f7f7cacae20000ff0000ff0000ff -0000ff0000ff0000ffcbcbe2f7f7f7fefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcf1f1f18383e50000ff0000ff0000ff -0000ff0000ff2727f4e8e8e8fafafaffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffafafae9e9e93636f00000ff0000ff0000ff0000ff0000ff -7272e7efefeffcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee6666e90000ff0000ff0000ff0000ff0000ff4343eeebebebfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ff -bfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f7f7f7cacae20000ff0000ff0000ff0000ff0000ff0000ffcbcbe2f7f7f7fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -f1f1f18383e50000ff0000ff0000ff0000ff0000ff2727f4e8e8e8fafafaffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffafafae9e9e93e3eef -0000ff0000ff0000ff0000ff0000ff6363eaefefeffcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee6c6ce70000ff0000ff0000ff0000ff -0000ff3535f2ebebebfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff -0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef7f7f7bbbbe50000ff0000ff0000ff0000ff -0000ff0000ffd3d3e1f7f7f7fefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcf1f1f17474e80000ff0000ff0000ff0000ff -0000ff2e2ef2e8e8e8fafafaffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffafafaeaeaea5454ea0000ff0000ff0000ff0000ff0000ff2b2bf5 -eeeeeefbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef -8383e30000ff0000ff0000ff0000ff0000ff0808fcdedeeafafafaffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3 -f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef6f6f6 -7f7fec0000ff0000ff0000ff0000ff0000ff0909fbe1e1e1f7f7f7fefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcf0f0f0 -3b3bf20000ff0000ff0000ff0000ff0000ff4343ece8e8e8fafafaffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbebebeb7e7ee00000ff -0000ff0000ff0000ff0000ff0000ff9c9cf0fafafafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcf0f0f0b0b0dc0000ff0000ff0000ff0000ff0000ff -0000ff6969f3f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff -0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcdfdff21616fa0000ff0000ff0000ff0000ff0000ff -3030efe3e3e3f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbaeaef00000ff0000ff0000ff0000ff0000ff0000ff -6d6de2eaeaeafafafaffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeeebfbfd70202fe0000ff0000ff0000ff0000ff0000ff0808fd -9e9ef7fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3d9d9d9 -1919f60000ff0000ff0000ff0000ff0000ff0000ff7979f8f7f7fcfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefefefed4d4f82d2dfa0000ff -0000ff0000ff0000ff0000ff0000ff6e6edfe6e6e6f9f9f9fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefdfdfdababf70e0efd0000ff -0000ff0000ff0000ff0000ff0000ffb0b0d7ecececfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf2f2f2dadada4343e60000ff -0000ff0000ff0000ff0000ff0000ff0000ff2929fc6868fc7878fc7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7878fc7474f46a6ade3434da0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0c0cfd2c2cfb3838fb3838fb3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3838fb3737fa3333f60101fa0000fd0000fb0000fa0000fb -0000fc0000fc0000fc2a2af53636f93838fb3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc -3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3939fc3838fb -3535fb2121fb0202fe0000ff0000ff0000ff0000ff0000ff0000ff0505f95a5acf -6f6fe97777f97979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd -7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7979fd7878fc -6a6afc2f2ffc0000ff0000ff0000ff0000ff0000ff0000ff0000ff3636ebd7d7d7 -f1f1f1fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef7f7f7e3e3e3adadcc0404fc0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000fa0000e80000cc -0000f40000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000f80000fb0000f70000f40000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000db0000d90000f10000fc0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0101fea0a0cde1e1e1f6f6f6fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbedededd3d3d37272d30000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000fc0000f10000d90000cb0000fc0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ee0000f70000ec0000e70000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ea0000c90000e50000f7 -0000fe0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff6464d8d1d1d1ecececfafafa -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf6f6f6e2e2e2c8c8c85858d90000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000fe0000f80000e70000cd -0000cd0000fc0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000e6 -0000f30000e20000dd0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ef0000c30000d90000f00000fc0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -4a4adec6c6c6e0e0e0f5f5f5fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbf0f0f0dbdbdbc3c3c36f6fcd -0606fb0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000fc0000f30000e00000c70000c50000f60000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000e30000f20000df0000d90000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000e30000bd0000d20000e90000f90000fe0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0303fc6464d2c1c1c1d9d9d9efefeffbfbfbfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefafafaedededd9d9d9c3c3c3a1a1bb4343de0303fc0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000fe0000fb0000f00000dd -0000c70000ba0000d50000f90000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000e30000f2 -0000df0000d80000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ed0000c40000bd0000d1 -0000e70000f60000fd0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff -0000ff0000ff0000ff0000ff0000ff0000ff0202fd3c3ce19b9bbcc2c2c2d7d7d7 -ecececf9f9f9fefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9edededdcdcdccacaca -bbbbbba6a6b77171c84f4fd83d3de03838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23737e13636dd3434d43131c62d2db62929a82525a11b1bb61212cb -0d0dd70c0cdc0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdc0c0cdd0c0ce20000c90000d60000cb0000c80000e10000dd0000db0000db -0909da0b0bdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb -0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdb0c0cdc0c0cda0f0fd31515c3 -1f1fab2828a32b2bad2e2ebd3232cd3636da3737e03838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23838e23838e23838e2 -3838e23838e23838e23838e23838e23838e23838e23838e23c3ce04d4dd96f6fca -a2a2b7bbbbbbc9c9c9dbdbdbecececf8f8f8fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdfafafaf2f2f2e5e5e5d6d6d6cacacac1c1c1bbbbbbb9b9b9b8b8b8 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6b6b6b4b4b4afafaf -a6a6a69b9b9b9292928b8b8b878787848484848484838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -8383838383838383838383838383838383838383838383830505a30000b10000af -0000a20000910000860000830000836262747e7e7e828282838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -838383838383838383838383838383838383838383838383838383838383838383 -8383838484848484848585858989898e8e8e969696a0a0a0aaaaaab1b1b1b5b5b5 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7 -b7b7b7b8b8b8b9b9b9bbbbbbc0c0c0c9c9c9d6d6d6e4e4e4f1f1f1f9f9f9fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefcfcfcf7f7f7f0f0f0 -e7e7e7dfdfdfd9d9d9d6d6d6d4d4d4d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d2d2d2d1d1d1cdcdcdc7c7c7c0c0c0bababab5b5b5b1b1b1 -afafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -acacaca6a6a60606c30000d00000cd0000c30000b70000b00000ae0000ae82829a -a7a7a7adadadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae -aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafb0b0b0b2b2b2b6b6b6bcbcbc -c4c4c4cacacacececed1d1d1d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4d4d4d5d5d5d9d9d9dfdfdfe7e7e7 -efefeff7f7f7fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefcfcfcf9f9f9f6f6f6f2f2f2f0f0f0efefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefeeeeee -ecececeaeaeae7e7e7e3e3e3e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0dfdfdfdbdbdbcccccc0707e60000ee0000ec0000e7 -0000e20000e00000e00000e0a7a7c6d7d7d7dfdfdfe0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 -e0e0e0e0e0e0e1e1e1e5e5e5e8e8e8ebebebedededeeeeeeefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefeff0f0f0f2f2f2f5f5f5f9f9f9fcfcfcfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfbfafafaf9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f3f3f3 -e0e0e00707f70000fc0000fa0000f90000f80000f90000f90000f9b9b9ddf0f0f0 -f8f8f8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff -0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e5 -0909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefecbdaebb2c8e1b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0 -b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b1c7e0b2c8e1 -fbfcfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff -0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefedde5ef4a7ebb72a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b472a0b4 -72a0b472a0b472a0b472a0b44b7fbb99b6d5fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb -0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -d4dde75c8cb999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09999c09999c099 -99c09999c09999c09999c09999c09999c09999c09999c09999c09978a4aa90aecf -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff -0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef8f8f8cdd6e05b8ab892b99294bb9495bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc9595bc95 -95bc9594bb9493ba9373a0a58caacbf3f3f3fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff -0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef7f7f7cad3dd -5a8ab794bb9498bf989ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a -9ac19a9ac19a9ac19a9ac19a9ac19a9ac19a99c09996bd9673a0a58aa8c9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ff -bfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef7f7f7cad3dd5a8ab797be979cc39c9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e9ec59e -9dc49d99c09974a0a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff -0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef7f7f7cad3dd5b8ab8 -98bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3 -f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e -9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff -0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef7f7f7cad3dd5b8ab898bf98 -9dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a -74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff -0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef7f7f7cad3dd5b8ab898bf989dc49d -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e5 -0909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefe -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a6 -8aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff -0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f96bb967c9b7c9bc29b9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f637c635a705a9fc69f96bb967c9b7c9bc29b9fc69f637c63 -5a705a9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f96bb967c9b7c9bc29b9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb -0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef7f7f7 -cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f708b701318136781679fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9dc39d809f8093b7939fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e4a5d4a -0000006d886d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9dc49d1d251d0c0f0c9bc29b -4a5c4a0000006d886d9cc39c1d241d0c0f0c9dc49d9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e4a5d4a0000006d886d9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff -0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9dc49d607960000000566c569dc49d9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f81a181000000485a489ec59e9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9cc39c7e9e7e5065508db18d9dc49d9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9ec59e98bf981b231b0b0f0b94bb947c9d7c5065508cb08c96bd961b231b0b0f0b -98bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9cc39c -7e9e7e5065508db18d9dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff -0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef7f7f7cad3dd -5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a -5b745b00000051675199c0999ec59e9fc69f96bb96566c56334033344134576d57 -9bc19b9fc69f7693764454448bae8b4455443845387693769fc69f9fc69f7d9c7d -3f4f3f34423444554444554485a6857390734151418fb28f9fc69f7d9c7d405040 -86a6869fc69f83a383465746303b303a493a7390739fc69f9fc69f93b7934c604c -3441344050404455446781679fc69f82a3824253423441345368539ac09a9fc69f -9fc69f9fc69f9fc69f9fc69f97bc97506350333f3344554488a9889fc69f698369 -40504084a5849fc69f647d644152418fb38f3644360000001d251d43544396bb96 -9fc69f6781673846383b493b6d886d9fc69f9fc69f566c56637c63718e71384638 -43534390b4909fc69f9fc69f6b866b37453733403368816899c0996d8b6d3a4a3a -81a4819ac19a99be99566b563542353c4b3c6b856b9fc69f9fc69f566c56637c63 -718e7138463843534390b4909fc69f9fc69f6b866b3745373340336882689fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9dc49d93ba931921190b0e0b8db48d6b886b -3a4a3a7fa27f90b7901921190b0e0b668166323e324455448db08d9fc69f769376 -4454447c9b7c323f3275927595ba95566b56334033344134576d579bc19b9fc69f -7693764454447c9b7c323f32718e716d8b6d3a4a3a81a4819ac19a96bb96506350 -333f3344554488a9889fc69f9fc69f6b866b3745373340336882689fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ff -bfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9dc49d98bf985770570000004d634d97be979dc49d9ec59e -506550101410364436252f250000005166519cc39c5166510000000d100d141914 -0202020405048db18d87a987050605263026323f32000000151a157896784b5e4b -0000007998799cc39c5d745d0000006a856a9bc29b1c241c1f281f384738121612 -02030284a5849dc49d242d240f140f3f4f3f090b09080a085267527f9f7f040604 -212a21374637040504313e319ec59e9fc69f9fc69f9fc69f9bc29b1e261e0c0f0c -4050401014100a0c0a8eb28e7795770000002b362b8aae8a06070637453786a986 -1319130000000a0d0a191f198db18d506550000000384738232d23000000667f66 -9bc29b1d241d0b0e0b0405041419140000002934299dc49d7592750000002e3a2e -415241313e3196bd964c604c0000006e8b6e97be97212a210101012a352a151b15 -000000586f589bc29b1d241d0b0e0b0405041419140000002934299dc49d759275 -0000002e3a2e415241313e319dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9cc39c -92b9921920190a0d0a8ab18a4a5f4a0000006b886b8db48d182018010101050705 -1920190000001b211b9ac19a5165510000000a0d0a080a08586e584f644f101410 -364436252f250000005166519cc39c5166510000000a0d0a080a08546b544b5f4b -0000006e8b6e97be971e261e0c0f0c4050401014100a0c0a90b490749274000000 -2e3a2e415241313e319dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff -0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef7f7f7cad3dd5b8ab8 -98bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9dc49d97be97566f56 -0000004c624c96bd969dc49d9bc29b8cb18c8bb18b89b08985ab850102012d392d -96bd964c614c00000043564388af884356430000006783675e775e000000749574 -87ae870a0d0a3544358fb68f46594600000074937498bf98587058000000658065 -96bd9685a9858cb38c88af885a735a00000060796093b993000000465a4687ae87 -3747370608068fb68f37453701020181a68188af88313e3100000091b6919fc69f -9fc69f9ec59e6d896d000000566e5688af885e795e00000059715991b8912f3c2f -0000002029200405047d9f7d8db48d6b8c6b000000394b3988af8891b891070907 -28332889b08986ac8605070528332894bb941b221b0304036c8c6c86ad86171d17 -04050497be97576e570000004d644d8ab18a91b89193ba934a5f4a0000006b896b -69846900000043554388af8882a782080b0813181393ba931b221b0304036c8c6c -86ad86171d1704050497be97576e570000004d644d8ab18a92b99299c0999ec59e -9fc69f9fc69f9fc69f9fc69f9cc39c91b8911820180a0d0a8ab18a495e49000000 -6a876a8db48d181f1803040369896986ad862834280000007696764c604c000000 -3443348ab18a8fb68f87ac878ab08a89b08985ab850102012d392d96bd964c614c -00000034433489b0898cb38c495d490000006b896b698569000000566e5688af88 -5e795e0000005b735b566d560000004d644d8ab18a92b99299c0999ec59e9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3 -f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9dc49d97be97556e550000004c624c96bd969dc49d9ac19a86aa86 -384838171e170d110d0000002530258fb68f485c480000005f7c5f80a7804f684f -000000597359739373010201232e233849380000004c634c88af88425542000000 -6f8e6f93ba93546c54000000617c6192b9926b886b283328131913080b08000000 -566e568fb68f161d160f140f4053400b0f0b202a2086ad861d261d000000060706 -06070603030300000082a4829dc49d9fc69f9bc29b516651000000040504060706 -0506050000004b604b8cb38c6c8c6c000000000000303f3088af888bb28b6a8a6a -000000384a3886ad867da07d0000000203020607060607060000001c241c8db48d -1920190a0d0a80a7807fa67f2531250000008cb38c80a480131913000000101510 -5f7a5f90b790485d480000006784674c614c0000005b765b82a98281a8811d261d -0102018ab18a1920190a0d0a80a7807fa67f2531250000008cb38c80a480131913 -000000101510617b6199c0999ec59e9fc69f9fc69f9fc69f9fc69f9cc39c91b891 -1820180a0d0a88af88475c470000006885688bb28b181f18090d097ca37c7fa67f -425742000000607b60465b460000005f7c5f86ad868db48d81a581374737171e17 -0d110d0000002530258fb68f485c480000005f7c5f85ac8589b089465b46000000 -6784674d634d0000000405040607060506050000004b604b7ea17e131913000000 -101510617b6199c0999ec59e9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e -9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff -0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef7f7f7cad3dd5b8ab898bf98 -9dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9dc49d97be97556e55000000 -4c624c96bd969dc49d9ac19a2f3c2f040504597359688868030403232e238ab18a -455a450000005f7d5f85ac85516a51000000566f566380630001002a372a243024 -465c4681a88189b08942564200000067856790b7904c624c0000005e795e8ab08a -0506051c251c638163475d4700000051695185aa850e130e1f291f212c21354635 -73967385ac85222c220203026989696b8b6b68896870927091b8919bc29b9dc49d -98bf98546c54000000475d476b8b6b6a8b6a6b8c6b84aa848bb28b3e513e000000 -080a08090d0981a6818fb68f6e8e6e000000394a398ab18a82a682000000242f24 -6b8b6b6b8b6b688968789c7886ad86181f180a0d0a83aa8384ab84263126000000 -87ae8789b0897ca37c526b520e120e03040387ac87465b460000006380634e654e -000000526b5289b08986ad861218120c0f0c85ac85181f180a0d0a83aa8384ab84 -26312600000087ae8789b0897ca37c526b520e120e03040390b5909ec59e9fc69f -9fc69f9fc69f9fc69f9cc39c91b8911820180a0d0a86ad86455a45000000658365 -8ab18a181f18070a0781a88186ad86374837000000658365445844000000607d60 -8db48d93ba932f3b2f040504597359688868030403232e238ab18a455a45000000 -607d608bb28b8db48d465b46000000638063506750000000475d476b8b6b698a69 -6a8b6a81a78186ad867ca27c526b520e120e03040390b5909ec59e9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9dc49d97be97556e550000002632264c604c4f634f7998791f271f060806 -6d8e6d4f684f000100232d2388af88455a450000006481648db48d546d54000000 -546d54455a450000003343334054404c634c799c798db48d546d54000000253025 -4d624d0608060000005d785d7fa27f0000002733276e906e2c3a2c000000506850 -7597750000001f291f3d513d465b4665846587ae874256420000003a4c3a698a69 -5f7c5f4e654e92b9929bc29b9dc49d97be977293720101011c251c648264678667 -4b624b7da07d7da07d040604253125445b4400000042544293ba937a9d7a000000 -171e1758705885aa85171e170608065570556a8a6a567156617e6187ae87182018 -0a0d0a8ab18a8cb38c26322600000087ae876480645a755a6e906e263226000000 -84a884465b46000000627f626d8d6d010101171d17668266475b47000000344434 -83aa83181f180a0d0a8ab18a8cb38c26322600000087ae876480645a755a6e906e -2632260000008cb18c799879060806566c569fc69f9fc69f9cc39c91b891182018 -0a0d0a86ad86455a450000006583658ab18a182018000000293529546c54070907 -080b087ba17b43584300000064816493ba9396bd961f271f0608066d8e6d4f684f -000100232d2388af88455a4500000064816493ba9393ba93465b46000000627f62 -6c8d6c0101011c251c6482646786674b624b7a9d7a627e625974596e906e263226 -0000008cb18c9dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a -74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff -0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef7f7f7cad3dd5b8ab898bf989dc49d -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9dc49d97be97607b60000000000000 -0000000000004f654f5b765b060706000000141a14161e1625302588af88485d48 -0000006886688fb68f5871580000005670566381630000001820181d261d040504 -090c0984a88480a6801b241b000000080a084357430000005e7a5e8ab18a334333 -0000000000002a372a000000516a5181a6811117110d120d1f291f0c100c000000 -5a735a7ca27c2b392b0001000000000000002c382c96bd969dc49d9dc49d98bf98 -89b0894a624a0709070000000000000e120e7fa17f374637020202638363729872 -11161104060487ab878cb38c2835280000000202027ea17e678767151c15000000 -000000040604576f578ab18a1b231b0d110d8db48d8eb58e2936290101018ab08a -607960030403000000030503465b4688af88485d4800000064826483aa834c634c -0709070000000102012a372a789d7883aa831a231a0d110d8db48d8eb58e293629 -0101018ab08a607960030403000000030503475c4790b790668166000000536853 -9cc39c9fc69f9cc39c91b8911b231b0c100c86ad86475d470000006886688ab18a -1a221a202a201b231b000000060706556f5583aa83465c460000006a886a96bd96 -94bb945c775c060706000000141a14161e1625302588af88485d480000006a886a -96bd9694bb94495e4900000064826483aa834a614a0709070000000000000e120e -7ea07e607960030403000000030503475c4792b9929cc39c9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e5 -0909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefe -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9dc49d98bf9889b0897ca37c7ca37c83aa8389b0898ab18a82a982789e78719471 -7fa67f7aa17a7fa67f8ab18a86ad867ea47e8bb28b91b89189b0897da37d82a982 -212b21080a08779e777ea57e3b4d3b00000072907289b0897fa67f7295727da47d -7da47d7aa07a86ad868ab18a81a881739773779b777da47d799f7984ab844f674f -0000005773577ca37c6584650000003f513f86ad867fa67f7ca27c73957380a580 -8fb68f98bf989dc49d9ec59e99c0998eb58e81a8817ea57e7497747a9d7a8cb38c -90b7908ab08a7fa57f7fa67f7ea57e7ea47e83a98391b8918db48d80a780749774 -7fa37f8ab18a82a9827da47d779c7775977587ad878fb68f8db48d81a88180a780 -8fb68f90b79082a9827ea47e8cb38c90b79084aa84719371799e7981a88188af88 -86ad867da37d86ad8688af8881a8817fa67f7497747ea47e80a78085ac8588af88 -80a78080a7808fb68f90b79082a9827ea47e8cb38c90b79084aa84719371799e79 -82a9828db48d3746370c0f0c84a88499c0999ec59e9cc39c93ba9381a8817ea57e -88af8886ad867ea47e8ab18a8cb38c7ea57e7aa07a7fa67f7194717ba17b81a881 -87ae8785ac857da37d8cb38c96bd9693ba9386ad86799f797194717fa67f7aa17a -7fa67f8ab18a86ad867ea47e8cb38c97be9795bc9588af887da37d87ae8788af88 -80a7807ea57e7497747a9d7a8cb38c91b89191b89184aa84719371799e7983aa83 -92b9929cc39c9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a6 -8aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff -0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e99c0998fb68f84ab8480a78083aa83 -87ae878bb28b88af8883aa8383aa8383aa8383aa8389b0898fb68f8db48d8ab18a -90b79094bb948fb68f88af8886ad86374837000000161d16212c21020302212a21 -8ab08a8eb58e86ad8682a98283aa8383aa8386ad868db48d90b79088af8883aa83 -83aa8383aa8385ac8589b0896482640101010b0f0b232e230b0f0b080b08719171 -8cb38c86ad8684ab8485ac8588af888fb68f98bf989ec59e9fc69f9dc49d96bd96 -8bb28b84ab8484ab8486ad868cb38c90b7908db48d89b0898ab18a8bb28b87ae87 -8ab18a93ba9392b99288af8883aa8388af888fb68f8cb38c86ad8684ab8486ad86 -8ab18a91b89191b8918ab18a8ab18a93ba9393ba938cb38c89b08990b79091b891 -8ab18a85ac8583aa838ab18a8fb68f8db48d89b0898fb68f91b8918ab18a84ab84 -83aa8384ab8488af888fb68f91b8918ab18a8ab18a93ba9393ba938cb38c89b089 -90b79091b8918ab18a85ac8583aa838ab18a86ab86080a085d795d8db48d98bf98 -9ec59e9dc49d96bd968bb28b89b0898eb58e8db48d8ab18a8fb68f91b89189b089 -83aa8382a98282a98283aa838ab18a90b7908db48d8ab18a91b89199c09997be97 -8db48d85ac8583aa8383aa8383aa8389b0898fb68f8db48d8ab18a91b89199c099 -98bf988eb58e89b0898fb68f91b8918ab18a84ab8484ab8486ad868cb38c91b891 -91b8918ab18a85ac8584ab848bb28b96bd969dc49d9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb -0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef7f7f7 -cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9dc49d98bf9893ba9390b79090b79093ba9395bc9594bb9492b99290b79091b891 -92b99295bc9598bf9897be9795bc9598bf989ac19a98bf9893ba938eb58e82a982 -5b785b475d47475c475a765a7fa67f8eb58e95bc9593ba9391b89191b89192b992 -93ba9397be9798bf9894bb9491b89191b89191b89192b99291b89189b0896c8d6c -4a614a445944516a51779c7789b08993ba9393ba9391b8918fb68f92b99296bd96 -9bc29b9fc69f9fc69f9fc69f9cc39c97be9792b99290b79091b89193ba9397be97 -96bd9695bc9597be9798bf9894bb9495bc9599c09999c09994bb9491b89193ba93 -97be9797be9793ba9390b79090b79093ba9398bf9898bf9896bd9696bd9699c099 -9ac19a96bd9695bc9598bf9898bf9893ba9390b79091b89196bd9699c09997be97 -95bc9598bf9899c09996bd9692b99290b79091b89194bb9499c09999c09996bd96 -96bd9699c0999ac19a96bd9695bc9598bf9898bf9893ba9390b79091b89193ba93 -91b89188af8886ad8690b7909ac19a9fc69f9ec59e9ac19a96bd9695bc9598bf98 -96bd9695bc9598bf9899c09996bd9692b99291b89190b79092b99296bd9699c099 -97be9795bc9599c0999dc49d9cc39c97be9792b99290b79091b89192b99295bc95 -98bf9897be9795bc9599c0999dc49d9cc39c98bf9895bc9598bf9899c09996bd96 -92b99290b79091b89193ba9398bf9897be9793ba9390b79091b89196bd969bc29b -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff -0000ffbfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9dc49d9cc39c9bc29b9bc29b9cc39c -9dc49d9dc49d9cc39c9bc29b9bc29b9cc39c9dc49d9ec59e9dc49d9dc49d9ec59e -9ec59e9dc49d9bc29b95bc958ab18a81a88181a88182a98282a98288af8893ba93 -9ac19a9cc39c9bc29b9cc39c9cc39c9dc49d9dc49d9ec59e9dc49d9bc29b9bc29b -9cc39c9bc29b98bf988fb68f84ab8481a88182a98282a98285ac858fb68f99c099 -9cc39c9bc29b9ac19a9bc29b9dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9dc49d -9cc39c9ac19a9bc29b9cc39c9dc49d9dc49d9dc49d9dc49d9ec59e9dc49d9dc49d -9ec59e9ec59e9dc49d9bc29b9cc39c9dc49d9dc49d9cc39c9bc29b9ac19a9cc39c -9dc49d9ec59e9dc49d9dc49d9ec59e9ec59e9dc49d9dc49d9dc49d9dc49d9cc39c -9bc29b9bc29b9dc49d9ec59e9dc49d9dc49d9ec59e9ec59e9dc49d9cc39c9bc29b -9bc29b9dc49d9ec59e9ec59e9dc49d9dc49d9ec59e9ec59e9dc49d9dc49d9dc49d -9dc49d9cc39c9bc29b9bc29b9ac19a96bd968eb58e8fb68f97be979dc49d9fc69f -9fc69f9ec59e9dc49d9dc49d9dc49d9dc49d9dc49d9dc49d9ec59e9dc49d9cc39c -9bc29b9bc29b9cc39c9dc49d9ec59e9dc49d9dc49d9ec59e9fc69f9fc69f9dc49d -9cc39c9bc29b9bc29b9cc39c9dc49d9ec59e9dc49d9dc49d9ec59e9fc69f9fc69f -9dc49d9dc49d9ec59e9ec59e9dc49d9cc39c9ac19a9bc29b9cc39c9dc49d9dc49d -9cc39c9bc29b9bc29b9dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff -0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef7f7f7cad3dd -5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a94bb948db48d -8bb28b8cb38c8db48d93ba939ac19a9ec59e9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9dc49d97be9790b7908cb38c -8bb28b8db48d91b89198bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a -98bf9899c0999dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ff -bfbfe3f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9ec59e9cc39c99c09998bf9898bf9899c0999cc39c9ec59e9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9dc49d9ac19a98bf9897be9798bf989ac19a9dc49d9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9ec59e9dc49d9ec59e9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e5e5e50909fb0000ff0000ff -0000ff0000ff0000ff0000ff0000ffbfbfe3f6f6f6fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef7f7f7cad3dd5b8ab8 -98bf989dc49d9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ec59e -9ec59e9ec59e9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9dc49d -9ec59e9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e9ac19a74a1a68aa8c9f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e5e5e50909fb0000ff0000ff0000ff0000ff0000ff0000ff0000ffbfbfe3 -f6f6f6fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef7f7f7cad3dd5b8ab898bf989dc49d9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f -9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9fc69f9ec59e -9ac19a74a1a68aa8c9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef8f9fb90b0d493b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d692b1d58fadd084a0c10c0ff40608f70607f70607f7 -0607f70607f70608f70708f87087c38dabce92b1d593b2d693b2d693b2d693b2d6 -93b2d693b2d693b2d693b2d693b2d693b2d692b1d58eaccf7a9ac04a7ebb5086a3 -5188a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55288a55288a55288a55288a55288a55288a5 -5288a55288a55288a55288a55288a55187a34d82a886a4c6efefeffcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfca3bcd96692c6749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb739bca7198c7 -698db85c7ca1537092516d8e506c8d506c8d506c8d526f905a799e678ab47097c4 -739bca749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb749ccb -739bca7097c4688cb65a80ae5680af5782b25882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35882b35882b3 -5882b35882b35882b35882b35882b35882b35882b35882b35882b35782b25680b1 -527dae7e99b7eeeeeefbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefed0d0fc8080fcfdfdfdfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f7f7f79cb5d26e98c995b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d793b0d48ca8ca809ab97890ad768eab768daa768daa -768daa778fac7e98b689a5c692afd294b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d691aed188a4c57e98b67b94b27c95b3 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b47d96b4 -7d96b47d96b47d96b47d96b47c95b36182aa7e99b8ebebebfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f93939fb0707fe -d5d5f7fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf2f2f296afcc6e98c995b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed1 -8ca8ca89a4c688a3c488a3c488a3c488a3c488a4c58ba7c990add093b1d595b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -93b0d48eabcd88a3c485a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0 -85a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c085a0c0698db7 -809cbdebebebfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefafafaa0a0f30000ff0000ff4040f8f7f7f7fefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcf0f0f0 -93acc96e98c995b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d693b0d492b0d392afd292afd292afd292afd2 -92b0d393b0d493b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d693b0d490aed18faccf8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce8fabce -8fabce8fabce8fabce8faccf7096c383a1c2ecececfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdebebf41b1bfb0000ff0000ff0000ff -b1b1f1fbfbfbfefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d694b2d693b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5739ac984a2c5 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -7575f30000ff0505fc0000ff0000ff2727f9f2f2f5fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc8 -6e98c995b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcd5d5f20808fd0000ff1616f30000ff1313f60000ff -8989f3f9f9f9fefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef7f7f74d4df60000ff -3d3de41c1cef0000ff6262cf0000ff0f0ffce1e1f3fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c9 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbc1c1f20000ff0707fc9e9eba1d1df00000ff9393be3131ec0000ff -6c6cf4f9f9f9fefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef8f8f8c8c8ea1f1ff76f6fd9bdbdbd -1f1ff20000ff9d9dc8a0a0c71e1ef68686eaf4f4f4fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f7f7f7e6e6e6d1d1d1cdcdcdcccccc2020f30000ffa7a7d2cecececececededede -f3f3f3fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefafafaf0f0f0e4e4e4e2e2e2dbdbdb2121f4 -0000ffb1b1dce2e2e2e3e3e3ebebebf7f7f7fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -fafafaf5f5f5f2f2f2e3e3e32222f50000ffb6b6e1efefeff4f4f4f8f8f8fcfcfc -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -efefef92abc86e98c995b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefcfcfcf8f8f8e5e5e52222f50000ff -b7b7e2f4f4f4fbfbfbfefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d793b1d5769cca729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac87ba0cc94b2d695b3d795b3d795b3d795b3d795b3d795b3d794b2d689aad1 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac87da1cd94b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d687a8d0729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8 -729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac8729ac9 -91afd494b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca -85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef -92abc86e98c995b3d795b3d795b3d795b3d795b3d795b3d793b1d5749ac74a7ebb -6d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad7 -6d9bd76d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd76d9ad7 -6d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd7 -6d9ad76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd7 -6d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9bd76d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9bd76d9ad7 -6d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd7 -6d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd76d9ad76d9bd7 -6d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9ad76d9bd7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd7 -6d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd7 -6d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9ad76d9bd7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9bd7 -6d9bd76d9bd76d9bd76d9bd76d9bd76d9bd74a7ebb80a4cc93b1d595b3d795b3d7 -95b3d795b3d794b2d692b0d34e81bd5f90cd6d9bd76d9ad76d9bd76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd76d9ad76d9bd7 -6d9bd76d9ad76d9bd76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9ad76d9bd7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9bd76d9bd76d9bd7 -6d9bd76d9bd76d9bd76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9ad7 -6d9bd76d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9bd76d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd7 -6d9bd76d9bd76d9bd74a7ebb84a5cd93b1d595b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d692afd24a7ebb6393d1 -6d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9bd76d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9bd7 -6d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd76d9ad76d9bd7 -6d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9bd76d9ad7 -6d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9bd76d9ad7 -6d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9bd76d9ad76d9bd76d9bd76d9ad76d9bd76d9ad76d9ad76d9bd76d9ad76d9bd7 -6d9bd76d9ad76d9bd76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad76d9ad7 -6d9ad76d9ad76d9ad76d9ad74e81be6692c493b0d494b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2 -f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d7 -95b3d794b2d690aed16e93c16a99d598bffd98bffd98bffd98bffd98bffd98bffd -98bffe98bffd98bffe98bffe98bffe98bffe98bffe98bffe98bffd98bffe98bffd -98bffd98befd98bffd98befd98befd98bffd98befd98bffd98bffd98befd98bffd -98befd98befd98bffd98befd98bffd98bffd98bffe98bffd98bffe98bffe98bffd -98bffe98bffd98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe -98bffd98bffe98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffe98bffd -98bffe98bffe98bffe98bffe98bffe98bffe98bffd98bffe98bffd98bffd98befd -98bffd98befd98befd98bffd98befd98bffd98bffd98befd98bffd98befd98befd -98bffd98befd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd -98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe -98bffe98bffe98bffe98bffe98bffd98bffe98bffd98bffd98befd98bffd98befd -98befd98bffd98befd98bffd98bffd98befd98bffd98befd98befd98bffd98befd -98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd98bffd -98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd -5b8cc77c9ec592afd294b2d695b3d795b3d795b3d793b1d58daacc5687c088b2f0 -96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd -96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc -96bdfc96befc96bdfc96befc96befc96bdfc96befc96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc96befc96bdfc96befc96befc96bdfc96befc96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd96befd96befd -96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc -96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befc -96bdfc96befc96befc96bdfc96befc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96befc96bdfc96befc96befc96bdfc96befc96bdfc96bdfc5889c57e9fc592afd2 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d793b0d48da9cc5284be8eb7f598bffd98bffd98bffd98bffd98bffd98bffe -98bffd98bffe98bffe98bffe98bffe98bffe98bffe98bffd98bffe98bffd98bffd -98befd98bffd98befd98befd98bffd98befd98bffd98bffd98befd98bffd98befd -98befd98bffd98befd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe -98bffd98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffd -98bffe98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe -98bffe98bffe98bffe98bffe98bffe98bffd98bffe98bffd98bffd98befd98bffd -98befd98befd98bffd98befd98bffd98bffd98befd98bffd98befd98befd98bffd -98befd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe78a3e1648ec0 -8faccf93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc8 -6e98c995b3d795b3d795b3d795b3d795b3d793b1d58daacc698ebb6a98d596befd -96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96befd -96bdfc96befd96befd96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc -96befc96bdfc96befc96befc96befd96befc96befd96befd96bdfc96befd96bdfc -96bdfc96befd96bdfc96befd96befd96befd96befd96befd96befd96bdfc96befd -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96bdfc -96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd -96befd96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc96befc96bdfc -96befc96befc96befd96befc96befd96befd96bdfc96befd96bdfc96bdfc96befd -96bdfc96befd96befd96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc -96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd -96befd96befd96befd96bdfc96befd96bdfc96bdfc96befc96bdfc96befc96befc -96befd96befc96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd -96befd96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc96befd96bdfc96befd5b8bc77798be8faccf94b2d695b3d795b3d7 -95b3d792b0d389a4c65585bf86b1f094bcfc94bcfb94bcfc94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb -94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bdfc94bcfb94bdfc94bdfc94bcfb -94bdfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb94bcfc94bcfc -94bcfb94bcfc94bcfb94bcfb94bdfc94bcfb94bdfc94bdfc94bcfb94bdfc94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb -94bcfc94bcfc5788c57999bf90add094b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d692afd288a4c55283bd8cb6f596befd -96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96bdfc96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc -96befd96befd96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc96befc -96bdfc96befc96befc96befd96befc96befd96befd96bdfc96befd96bdfc96bdfc -96befd96bdfc96befd96befd96befd96befd96befd96befd96bdfc96befd96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd -96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd -96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc96befc96bdfc96befc -96befc96befd96befc77a3e1618abc8ca8ca93b0d495b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d7 -93b0d48ca9cb688cb86897d492bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa -92bafa92bafa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa -92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa -92bafa92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa -92bafa92bbfa92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa92bbfb92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa -92bafa92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa -92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa92bafa92bafa -92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa -92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa92bbfb92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa92bafa92bafa -92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa -92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa92bafa92bafa92bbfa92bafa -92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bbfb -92bbfa92bbfb92bbfb92bbfa92bbfb92bbfa92bbfa92bbfa92bbfa92bbfa5a8bc6 -7595bb8fabce93b1d595b3d795b3d795b3d792afd286a2c25485be85b0ee92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa92bafa92bafa92bbfa92bafa -92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bafa -92bbfa92bafa92bafa92bafa92bafa92bafa92bafa92bbfa92bafa92bbfa92bbfa -92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bbfb92bbfa92bbfb -92bbfb92bbfa92bbfb92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bafa -92bbfa92bafa92bafa92bafa92bafa92bafa92bafa92bbfa92bafa92bbfa92bbfa -92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa -92bafa92bafa92bafa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa -92bafa92bafa92bbfa92bafa92bbfa92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa -92bbfb92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa5788c47796bc8fabce93b1d5 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -91aed186a1c15183bd89b4f292bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa -92bafa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa -92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa92bafa -92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa -92bbfa92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa92bbfb92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa92bafa -92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa -92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa74a0e05f88ba8aa6c7 -92b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c9 -95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb76796d490b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990bafa90b9f990bafa90bafa90b9f990bafa -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990baf9 -90b9f990baf990baf990b9f990baf990b9f990b9f990baf990b9f990baf990baf9 -90b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990bafa90b9f990bafa90bafa90b9f990bafa90b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f990baf9 -90baf990b9f990baf990b9f990b9f990baf990b9f990baf990baf990b9f990baf9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990bafa90b9f990bafa90bafa90b9f990bafa90b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f990baf990baf990b9f9 -90baf990b9f990b9f990baf990b9f990baf990baf990b9f990baf990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f95a8ac67595ba8eabcd93b1d595b3d795b3d795b3d7 -92afd286a1c15485be81adec8eb7f78eb8f88eb7f78eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f78eb8f8 -8eb7f78eb7f78eb8f88eb7f78eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f7 -8eb8f88eb7f78eb7f78eb8f88eb7f78eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f78eb8f88eb7f78eb7f7 -8eb8f88eb7f78eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f78eb8f88eb7f7 -8eb7f75688c47695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d691aed185a0c15183bd87b2f190b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990bafa90b9f990bafa90bafa90b9f990bafa90b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f9 -90baf990baf990b9f990baf990b9f990b9f990baf990b9f990baf990baf990b9f9 -90baf990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990bafa90b9f990bafa90bafa90b9f990bafa90b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f990baf990baf9 -90b9f990baf973a0df5f87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d4 -8ca8ca678bb76796d38eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f8 -8eb7f88eb8f88eb8f88eb7f78eb8f88eb7f78eb7f78eb8f88eb7f78eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f8 -8eb8f88eb7f78eb8f88eb7f78eb7f78eb8f88eb7f78eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb7f7 -8eb8f88eb7f78eb7f78eb8f88eb7f78eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8598ac67595ba -8eabcd93b1d595b3d795b3d795b3d792afd286a1c15484be80adec8cb7f78cb6f6 -8cb7f78cb6f68cb6f68cb6f78cb6f68cb6f78cb6f78cb7f78cb6f78cb7f78cb7f7 -8cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f68cb7f78cb6f6 -8cb6f68cb7f78cb6f68cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f68cb6f7 -8cb6f68cb6f68cb6f78cb6f68cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f6 -8cb7f78cb6f68cb6f68cb7f78cb6f68cb7f78cb7f78cb7f78cb7f78cb7f78cb7f7 -8cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f68cb7f78cb6f6 -8cb6f68cb6f78cb6f68cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f7 -8cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f68cb7f78cb6f68cb6f68cb7f7 -8cb6f68cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f68cb6f78cb6f68cb6f6 -8cb6f78cb6f68cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f68cb7f78cb6f6 -8cb6f68cb7f78cb6f68cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb6f78cb7f7 -8cb6f78cb6f78cb7f78cb6f78cb7f78cb7f75687c47695bb8fabce93b1d595b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed1 -85a0c15183bd85b1f08eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f8 -8eb8f88eb8f88eb7f78eb8f88eb7f78eb7f78eb8f88eb7f78eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f8 -8eb7f78eb8f88eb7f78eb7f78eb8f88eb7f78eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb7f88eb8f88eb7f88eb7f88eb8f88eb7f8729fde5f87b989a5c692b0d3 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e6 -2222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffd4d4ffd9d9ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d7 -95b3d795b3d795b3d795b3d793b0d48ca8ca678bb76696d38cb7f78cb7f78cb7f7 -8cb7f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f78cb6f78cb6f78cb6f7 -8cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f7 -8cb7f78cb6f78cb7f78cb6f78cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f7 -8cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f7 -8cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f7 -8cb7f78cb6f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f7 -8cb7f78cb6f78cb7f78cb6f78cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f7 -8cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f7 -8cb7f78cb6f78cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f7 -8cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f7 -8cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f7 -8cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb6f7 -8cb7f78cb6f78cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f7 -8cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f7 -8cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f7 -8cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f7 -8cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f7 -8cb7f78cb7f78cb7f7598ac57595ba8eabcd93b1d595b3d795b3d795b3d792afd2 -86a1c15484be7caaea88b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f4 -88b3f488b3f588b3f488b3f588b3f588b4f588b3f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f488b4f5 -88b3f488b4f588b4f588b4f588b4f588b4f588b4f588b3f588b4f588b3f588b3f5 -88b4f588b3f588b4f588b4f588b3f588b4f588b3f588b3f588b4f588b3f588b4f5 -88b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f488b3f5 -88b3f488b3f588b3f588b4f588b3f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f5 -88b4f588b4f588b4f588b4f588b4f588b3f588b4f588b3f588b3f588b4f588b3f5 -88b4f588b4f588b3f588b4f588b3f588b3f588b4f588b3f588b4f588b4f588b3f4 -88b4f588b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f5 -5687c47695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d691aed185a0c15183bd83b0ef8cb7f78cb7f78cb7f7 -8cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f78cb6f78cb6f78cb6f78cb7f7 -8cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f7 -8cb6f78cb7f78cb6f78cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f78cb7f7 -8cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f7 -8cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f7 -8cb6f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb7f7 -8cb6f78cb7f78cb6f78cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f78cb7f7 -8cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f7 -8cb6f78cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f7 -8cb7f7719ede5f87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffb9b9ff9494ff -cacaffffffffffffffffffffffffffffffffb9b9ff9595ffdcdcffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -d9d9ff0000ff0000fff6f6ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffbfbfff9696ffd3d3ffffffffffffffd9d9ffa0a0ffa0a0ff -a0a0ffacacffdbdbffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca -678bb76595d28ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab4f58ab5f68ab4f5 -8ab4f58ab5f68ab4f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f6 -8ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f5 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab4f58ab5f68ab4f58ab4f58ab5f6 -8ab4f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f58ab5f6 -8ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab4f58ab5f68ab4f58ab4f58ab5f68ab4f58ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f5 -8ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f58ab5f68ab5f58ab5f5 -8ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f6598ac57595ba8eabcd -93b1d595b3d795b3d795b3d792afd286a1c15484be7ba9e986b2f386b2f486b2f3 -86b2f486b2f486b2f386b2f486b2f386b2f386b2f486b2f386b2f486b2f486b3f4 -86b2f486b3f486b3f486b2f386b3f486b2f386b2f386b2f486b2f386b2f486b2f4 -86b2f386b2f486b2f386b2f386b3f486b2f386b3f486b3f486b2f386b3f486b2f3 -86b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f386b2f386b2f386b2f3 -86b2f386b2f386b3f486b2f386b3f486b3f486b2f486b3f486b2f486b2f486b2f3 -86b2f486b2f386b2f386b2f386b2f386b2f386b2f386b2f486b2f386b2f486b2f4 -86b2f386b2f486b2f386b2f386b2f486b2f386b2f486b2f486b3f486b2f486b3f4 -86b3f486b2f386b3f486b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f4 -86b2f386b2f386b3f486b2f386b3f486b3f486b2f386b3f486b2f386b2f386b2f4 -86b2f386b2f486b2f486b2f386b2f486b2f386b2f386b2f386b2f386b2f386b2f3 -86b3f486b2f386b3f486b3f486b2f486b3f486b2f486b2f486b2f386b2f486b2f3 -86b2f386b2f386b2f386b2f386b2f35587c47695bb8fabce93b1d595b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c1 -5183bd82aeef8ab5f68ab5f68ab5f68ab5f68ab5f68ab4f58ab5f68ab4f58ab4f5 -8ab5f68ab4f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f5 -8ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab4f58ab5f68ab4f58ab4f58ab5f68ab4f5 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f58ab5f68ab5f58ab5f58ab5f68ab5f5709edd5f87b989a5c692b0d395b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f5 -0000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff5b5bff0000ff2e2efffffffffffffffffffffffffff7f7ff -0c0cff0000ffb6b6ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffd8d8ff0000ff0000fff5f5ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff3d3dff0000ff7070ff -ffffffffffff4646ff0000ff0000ff0000ff0000ff0000ff4949ffececffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d7 -95b3d795b3d795b3d793b0d48ca8ca678bb76494d288b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b3f588b4f588b3f588b3f588b3f4 -88b3f588b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f5 -88b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b3f5 -88b4f588b3f588b3f588b4f588b3f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b3f588b4f588b3f588b3f588b3f488b3f588b3f4 -88b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f5 -88b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b3f588b4f588b3f5 -88b3f588b4f588b3f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b3f588b4f588b3f588b3f588b3f488b3f588b3f488b3f488b4f5 -88b3f488b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f4 -88b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f5 -88b3f488b3f488b4f588b3f488b4f588b4f588b3f588b4f588b3f588b3f588b4f5 -88b3f588b4f5588ac57595ba8eabcd93b1d595b3d795b3d795b3d792afd286a1c1 -5384be78a7e882b0f282b0f282b0f282b0f282b0f282b0f282b0f282b0f282b0f2 -82aff182b0f282aff182aff182aff182aff182aff182aff182aff282aff182aff2 -82aff282b0f282aff282b0f282b0f282aff182b0f282aff182aff182aff182aff1 -82aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff1 -82aff182aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff1 -82b0f282aff182b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f2 -82b0f282b0f282b0f282b0f282b0f282b0f282b0f282b0f282b0f282aff182b0f2 -82aff182aff182aff182aff182aff182aff182aff282aff182aff282aff282b0f2 -82aff282b0f282b0f282aff182b0f282aff182aff182aff182aff182aff182aff1 -82b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff182aff182aff1 -82aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182b0f282aff1 -82b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f282b0f25587c3 -7695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d691aed185a0c15183bd80aeee88b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b3f588b4f588b3f588b3f588b3f488b3f5 -88b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b3f4 -88b4f588b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b3f588b4f5 -88b3f588b3f588b4f588b3f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b3f588b4f588b3f588b3f588b3f488b3f588b3f488b3f4 -88b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f4 -88b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -6e9ddd5f87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffaeaeff0000ff0000ff -ddddffffffffffffffffffffb4b4ff0000ff1010fff9f9ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8ff -0000ff0000fff5f5ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff3d3dff0000ff7070ffffffffffffff3d3dff0000ff4343ff9494ff -6e6eff0303ff0000ff5c5cffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -efefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7 -6393d184b1f384b1f384b0f284b1f384b0f284b0f284b0f284b0f284b0f284b0f2 -84b1f384b0f284b1f384b1f384b1f384b1f384b1f384b1f384b0f284b1f384b0f2 -84b0f284b1f384b0f284b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f2 -84b1f384b1f384b0f284b1f384b0f284b0f284b0f284b0f284b0f284b0f284b1f3 -84b0f284b1f384b1f384b0f284b1f384b0f284b0f284b1f284b0f284b1f284b1f2 -84b1f384b1f284b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f3 -84b1f384b0f284b1f384b0f284b0f284b0f284b0f284b0f284b0f284b1f384b0f2 -84b1f384b1f384b1f384b1f384b1f384b1f384b0f284b1f384b0f284b0f284b1f3 -84b0f284b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f384b1f3 -84b0f284b1f384b0f284b0f284b0f284b0f284b0f284b0f284b1f384b0f284b1f3 -84b1f384b0f284b1f384b0f284b0f284b1f284b0f284b1f284b1f284b1f384b1f2 -84b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f384b1f384b0f2 -84b1f384b0f284b0f284b0f284b0f284b0f284b0f284b1f384b0f284b1f384b1f3 -84b1f384b1f384b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f3 -84b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f384b1f384b0f284b1f3 -84b0f284b0f284b0f284b0f284b0f284b0f284b1f384b0f284b1f384b1f384b0f2 -84b1f384b0f284b0f284b1f284b0f284b1f284b1f284b1f384b1f284b1f384b1f3 -84b0f284b1f384b0f284b0f284b1f384b0f284b1f35889c57595ba8eabcd93b1d5 -95b3d795b3d795b3d792afd286a1c15384be76a5e680aef080aef080aef080aef0 -80aef080aef080aef080aef080aef080aef180aef080aef180aef180aef180aef1 -80aef180aef180aef080aef180aef080aef080aef080aef080aef080aef080aef0 -80aef080aef080aef080aef180aef080aef180aef180aef080aef180aef080aef0 -80aef080aef080aef080aef080aef180aef080aef180aef180aef080aef180aef0 -80aef080aef080aef080aef080aef080aef180aef080aef180aef180aef080aef1 -80aef080aef080aef080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef080aef080aef180aef080aef180aef180aef180aef180aef180aef1 -80aef080aef180aef080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef180aef080aef180aef180aef080aef180aef080aef080aef080aef0 -80aef080aef080aef180aef080aef180aef180aef080aef180aef080aef080aef0 -80aef080aef080aef080aef180aef080aef180aef180aef080aef180aef080aef0 -80aef080aef080aef080aef05486c37695bb8fabce93b1d595b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c15182bd -7cabec84b1f384b0f284b1f384b0f284b0f284b0f284b0f284b0f284b0f284b1f3 -84b0f284b1f384b1f384b1f384b1f384b1f384b1f384b0f284b1f384b0f284b0f2 -84b1f384b0f284b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f3 -84b1f384b0f284b1f384b0f284b0f284b0f284b0f284b0f284b0f284b1f384b0f2 -84b1f384b1f384b0f284b1f384b0f284b0f284b1f284b0f284b1f284b1f284b1f3 -84b1f284b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f384b1f3 -84b0f284b1f384b0f284b0f284b0f284b0f284b0f284b0f284b1f384b0f284b1f3 -84b1f384b1f384b1f384b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f2 -84b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f384b1f384b0f2 -84b1f384b0f284b0f284b0f284b0f26c9bdb5e87b989a5c692b0d395b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ff -b7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff7f7ff0d0dff0000ff8c8cffffffffffffffffffff6464ff0000ff -6060ffffffffffffffffffffb8b8ff7a7aff6c6cff9999fff6f6ffffffffffffff -dadaff8585ffceceffe4e4ff8a8aff6c6cffaaaaffffffffffffffffffffffffff -f7f7ff9898ff6a6aff9393ffd0d0ff0000ff0000fff5f5fffffffffffffff1f1ff -9b9bff6f6fff7373ff9e9efff8f8ffffffffffffffdadaff8585ffceceffc1c1ff -6464ffb2b2ffffffffffffffffffffffffffffffff3d3dff0000ff7070ffffffff -ffffff3d3dff0000ff7373ffffffffffffff6c6cff0000ff1010ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d7 -95b3d795b3d793b0d48ca8ca678bb76293d082b0f282b0f282aff182b0f282aff1 -82aff182aff282aff182aff282aff282aff182aff282aff182aff182aff182aff1 -82aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182b0f2 -82aff182b0f282b0f282aff182b0f282aff182aff182aff182aff182aff182aff1 -82b0f282aff182b0f282b0f282b0f282b0f282b0f282b0f282aff182b0f282aff1 -82aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff182aff1 -82aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff2 -82aff182aff282aff282aff182aff282aff182aff182aff182aff182aff182aff1 -82b0f282aff182b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f2 -82b0f282aff182b0f282aff182aff182aff182aff182aff182aff182b0f282aff1 -82b0f282b0f282b0f282b0f282b0f282b0f282aff182b0f282aff182aff182b0f2 -82aff182b0f282b0f282aff182b0f282aff182aff182aff182aff182aff182aff1 -82b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff282aff182aff2 -82aff282aff182aff282aff182aff182aff182aff182aff182aff182b0f282aff1 -82b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f282b0f282aff1 -82b0f282aff182aff182aff182aff182aff182aff182b0f282aff182b0f282b0f2 -82b0f282b0f282b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f2 -82b0f282aff182b0f282aff182aff182aff182aff182aff182aff182b0f282aff1 -82b0f25889c57595ba8eabcd93b1d595b3d795b3d795b3d792afd286a1c15384bd -73a4e57cacef7cabee7cacef7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef7cabee7cacef -7cabee7cabee7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef7cabee -7cacef7cabee7cabee7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef -7cabee7cacef7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cacef7cabee7cacef7cacef7cabee7cacef7cabee7cabee -7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef7cabee7cacef7cabee -7cabee7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef5486c37695bb -8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d691aed185a0c15182bd7baaeb82b0f282aff182b0f282aff182aff1 -82aff282aff182aff282aff282aff182aff282aff182aff182aff182aff182aff1 -82aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182b0f282aff1 -82b0f282b0f282aff182b0f282aff182aff182aff182aff182aff182aff182b0f2 -82aff182b0f282b0f282b0f282b0f282b0f282b0f282aff182b0f282aff182aff1 -82b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff182aff182aff1 -82aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff282aff1 -82aff282aff282aff182aff282aff182aff182aff182aff182aff182aff182b0f2 -82aff182b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f282b0f2 -82aff182b0f282aff182aff182aff182aff182aff182aff182b0f282aff16b9bdb -5e87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca -85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff5a5aff0000ff3b3bff -fffffffffffffdfdff1717ff0000ffb7b7ffffffffffffff6161ff0000ff0101ff -0303ff0000ff2828ffeeeeffffffff9b9bff0000ff4848ff1515ff0000ff0000ff -0000ff8383fffffffffffffff9f9ff3939ff0000ff0000ff0000ff1d1dff0000ff -0000fff5f5ffffffffcfcfff1e1eff0000ff0000ff0000ff0000ff2929ffe8e8ff -ffffff9b9bff0000ff4343ff0404ff0000ff5c5cffffffffffffffffffffffffff -ffffff3d3dff0000ff7070ffffffffffffff3d3dff0000ff7373ffffffffffffff -8f8fff0000ff0d0dffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef -92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb76192d0 -80aef080aef080aef180aef080aef180aef180adf080aef180adf080adf080aef1 -80adf080aef180aef180aef080aef180aef080aef080aef080aef080aef080aef0 -80aef080aef080aef080aef080aef180aef080aef180aef180adf080aef180adf0 -80adf080aef080adf080aef080aef080aef080aef080aef080aef080adf080aef0 -80adf080adf080aef080adf080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef080aef080aef180aef080aef180aef180aef080aef180aef080aef0 -80aef180aef080aef180aef180adf080aef180adf080adf080aef180adf080aef1 -80aef180aef080aef180aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef080aef180aef080aef180aef180adf080aef180adf080adf080aef0 -80adf080aef080aef080aef080aef080aef080aef080adf080aef080adf080adf0 -80aef080adf080aef080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef180aef080aef180aef180aef080aef180aef080aef080aef180aef0 -80aef180aef180adf080aef180adf080adf080aef180adf080aef180aef180aef0 -80aef180aef080aef080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef180aef080aef180aef180adf080aef180adf080adf080aef080adf080aef0 -80aef080aef080aef080aef080aef080adf080aef080adf080adf080aef080adf0 -80aef080aef080aef080aef080aef080aef080aef080aef080aef080aef080aef1 -80aef080aef180aef180aef080aef180aef05788c47595ba8eabcd93b1d595b3d7 -95b3d795b3d792afd286a1c15384bd71a1e47aa9ed7aaaed7aa9ed7aaaed7aaaed -7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed -7aa9ed7aa9ed7aa9ed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aa9ed7aaaed -7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aa9ed -7aa9ed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed -7aaaed7aa9ed7aa9ed5486c37695bb8fabce93b1d595b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c15082bd79a8e9 -80aef080aef180aef080aef180aef180adf080aef180adf080adf080aef180adf0 -80aef180aef180aef080aef180aef080aef080aef080aef080aef080aef080aef0 -80aef080aef080aef080aef180aef080aef180aef180adf080aef180adf080adf0 -80aef080adf080aef080aef080aef080aef080aef080aef080adf080aef080adf0 -80adf080aef080adf080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef080aef180aef080aef180aef180aef080aef180aef080aef080aef1 -80aef080aef180aef180adf080aef180adf080adf080aef180adf080aef180aef1 -80aef080aef180aef080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef180aef080aef180aef180adf080aef180adf080adf080aef080adf0 -80aef080aef080aef080aef06a99da5e87b989a5c692b0d395b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2 -f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffb0b0ff0000ff0202ffe8e8ffffffffc5c5ff0000ff1212fffafaff -ffffffb1b1ff0000ff2525ffe6e6ffe2e2ff3d3dff0000ff7979ffffffff9b9bff -0000ff0000ff3636ffa2a2ff4545ff0000ff1212ffffffffffffff9d9dff0000ff -0505ff9494ff9999ff1313ff0000ff0000fff4f4fffefeff3434ff0000ff4949ff -cfcfffbabaff1b1bff0000ff6868ffffffff9b9bff0000ff0000ff2323ff8585ff -a7a7ffffffffffffffffffffffffffffffff3d3dff0000ff7070ffffffffffffff -3d3dff0000ff7373fffffffff7f7ff3b3bff0000ff3c3cffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d7 -95b3d793b0d48ca8ca678bb76092cf7eacef7eacef7eacef7eacef7eacef7eacef -7eacef7eacef7eacef7eacef7eadf07eacef7eadf07eadf07eadef7eadf07eadef -7eadef7eadf07eadef7eadf07eadf07eadef7eadf07eadef7eadef7eacef7eadef -7eacef7eacef7eacef7eacef7eacef7eacef7eadf07eacef7eadf07eadf07eadf0 -7eadf07eadf07eadf07eacef7eadf07eacef7eacef7eadef7eacef7eadef7eadef -7eacef7eadef7eacef7eacef7eadf07eacef7eadf07eadf07eadef7eadf07eadef -7eadef7eacef7eadef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef -7eacef7eacef7eadf07eacef7eadf07eadf07eadef7eadf07eadef7eadef7eadf0 -7eadef7eadf07eadf07eadef7eadf07eadef7eadef7eacef7eadef7eacef7eacef -7eacef7eacef7eacef7eacef7eadf07eacef7eadf07eadf07eadf07eadf07eadf0 -7eadf07eacef7eadf07eacef7eacef7eadef7eacef7eadef7eadef7eacef7eadef -7eacef7eacef7eadf07eacef7eadf07eadf07eadef7eadf07eadef7eadef7eacef -7eadef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef -7eadf07eacef7eadf07eadf07eadef7eadf07eadef7eadef7eadf07eadef7eadf0 -7eadf07eadef7eadf07eadef7eadef7eacef7eadef7eacef7eacef7eacef7eacef -7eacef7eacef7eadf07eacef7eadf07eadf07eadf07eadf07eadf07eadf07eacef -7eadf07eacef7eacef7eadef7eacef7eadef7eadef7eacef7eadef7eacef7eacef -7eadf07eacef7eadf07eadf07eadef7eadf07eadef7eadef7eacef7eadef7eacef -5788c47595ba8eabcd93b1d595b3d795b3d795b3d792afd286a1c15384bd6ea0e2 -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -6792cd638cc576a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb4a6994 -435f8676a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -4a6994435f8676a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb4a6994435f8676a7eb76a7eb76a7eb76a7eb709fdf3b5476577bae -76a7eb6792cd638cc576a7eb709fdf3b5476577bae76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb5385c27695bb8fabce -93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d691aed185a0c15082bd77a7e87eacef7eacef7eacef7eacef7eacef7eacef -7eacef7eacef7eacef7eadf07eacef7eadf07eadf07eadef7eadf07eadef7eadef -7eadf07eadef7eadf07eadf07eadef7eadf07eadef7eadef7eacef7eadef7eacef -7eacef7eacef7eacef7eacef7eacef7eadf07eacef7eadf07eadf07eadf07eadf0 -7eadf07eadf07eacef7eadf07eacef7eacef7eadef7eacef7eadef7eadef7eacef -7eadef7eacef7eacef7eadf07eacef7eadf07eadf07eadef7eadf07eadef7eadef -7eacef7eadef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef -7eacef7eadf07eacef7eadf07eadf07eadef7eadf07eadef7eadef7eadf07eadef -7eadf07eadf07eadef7eadf07eadef7eadef7eacef7eadef7eacef7eacef7eacef -7eacef7eacef7eacef7eadf07eacef7eadf07eadf07eadf07eadf06999da5e87b9 -89a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff8f8ff0e0eff0000ff9a9aff -ffffff7575ff0000ff6363ffffffffffffff5959ff0000ff7a7affebebffebebff -8a8aff0000ff3f3fffffffff9b9bff0000ff1b1bfff3f3ffffffffcdcdff0000ff -0000fff1f1ffffffff5353ff0000ff6161ffffffffffffffbdbdff0000ff0000ff -f4f4ffd4d4ff0000ff0000ffe3e3ffffffffffffff9292ff0000ff1f1fffffffff -9b9bff0000ff0e0effe2e2ffffffffffffffffffffffffffffffffffffffffffff -3d3dff0000ff7070ffffffffffffff3d3dff0000ff1f1fff4141ff1717ff0000ff -0202ffc4c4ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc8 -6e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb75f91cf7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef -7cabee7cacef7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef7cabee7cacef -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cacef7cabee7cacef7cacef7cabee7cacef7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee5688c47595ba8eabcd93b1d595b3d795b3d7 -95b3d792afd286a1c15383bd6c9fe174a6ea74a5ea74a6ea74a5ea74a5ea74a6ea -74a5ea74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a5e974a5ea74a5e974a5e9 -74a5ea74a5e974a5ea74a5ea74a5e974a5ea74a5e93045611017216c9ad974a5ea -74a5ea3b55780f151e628dc774a6ea10172104050873a3e874a5ea74a5e974a5ea -74a5e974a5e974a6ea74a5e9161f2c090d1374a5e974a6ea74a5e974a5e974a6ea -74a5e974a6ea74a6ea74a5ea74a6ea161f2c090d1374a5e974a5ea74a5e974a5e9 -74a6ea74a5e974a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea -74a6ea74a5ea74a6ea74a5ea74a5ea74a5e974a5ea161f2c090d1374a5ea74a5e9 -74a5ea74a5ea648ec900000030446074a5e910172104050873a3e8648ec9000000 -30446174a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a5e974a5ea74a5e974a5e9 -74a6ea74a5e974a6ea74a6ea74a5e974a6ea74a5e974a5e974a6ea74a5e974a6ea -74a6ea74a5ea74a6ea74a5ea74a5ea74a5e974a5ea74a5e974a5e974a6ea74a5e9 -74a6ea74a6ea5385c27695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c15082bc75a6e87cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef7cabee -7cacef7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef7cabee7cacef7cabee -7cabee7cabee7cabee6798d95e87b989a5c692b0d395b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff5c5cff0000ff4949ffffffff2626ff0000ffb9b9ffffffffffffff -3434ff0000ff0000ff0000ff0000ff0000ff0000ff2f2fffffffff9b9bff0000ff -2d2dffffffffffffffe3e3ff0000ff0000ffe7e7ffffffff3434ff0000ff8f8fff -ffffffffffffd8d8ff0000ff0000fff5f5ffb0b0ff0000ff0e0effffffffffffff -ffffffbabaff0000ff0303fffdfdff9b9bff0000ff2d2dffffffffffffffffffff -ffffffffffffffffffffffffffffff3d3dff0000ff7070ffffffffffffff3d3dff -0000ff0000ff0000ff1414ff4747ffc7c7ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d7 -93b0d48ca8ca678bb75f90cf7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed -7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaee7aaaed7aaaee7aaaee7aaaed7aaaee7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed -7aaaed7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed -7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaee7aaaed7aaaee7aaaee7aaaed7aaaee7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed -7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed -7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaee7aaaed -7aaaee7aaaee7aaaed7aaaee7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed5688c4 -7595ba8eabcd93b1d595b3d795b3d795b3d792afd286a1c15383bd6a9de172a4e9 -72a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e92130450000006794d372a4e972a4e92e425e0000005b83ba72a4e94d6f9e -47669272a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9151f2c090d13 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9151f2c -090d1372a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e872a4e9 -72a4e872a4e872a4e972a4e872a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e9151f2c090d1372a4e972a4e972a4e972a4e9628dc90000002f446072a4e9 -4d6f9e47669272a4e9628dc90000002f446072a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e8 -72a4e972a4e872a4e872a4e972a4e872a4e972a4e95385c27695bb8fabce93b1d5 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -91aed185a0c15082bc74a5e77aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaee7aaaed7aaaee7aaaee7aaaed7aaaee7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed -7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed -7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed6697d85e87b989a5c6 -92b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffb2b2ff0000ff0606ffc8c8ff -0000ff1313fffbfbffffffffffffff3c3cff0000ff5d5dffa7a7ffa7a7ffa7a7ff -a7a7ffd0d0ffffffff9b9bff0000ff2d2dffffffffffffffe3e3ff0000ff0000ff -e7e7ffffffff3939ff0000ff8484ffffffffffffffd8d8ff0000ff0000fff5f5ff -b7b7ff0000ff0606fffefeffffffffffffffafafff0000ff1414ffffffff9b9bff -0000ff2d2dffffffffffffffffffffffffffffffffffffffffffffffffff3d3dff -0000ff7070ffffffffffffff3d3dff0000ff6c6cfff6f6ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c9 -95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb75d8fce76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6eb76a7eb -76a6eb76a6eb76a7eb76a6eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea -76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea -76a6ea76a7eb76a6ea76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6eb76a7eb76a6eb76a6eb -76a7eb76a6eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea -76a6ea76a7eb76a6ea76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb -76a6ea76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a6eb76a7eb76a6eb76a6eb76a7eb76a6eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb -76a6ea76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb -76a7eb76a7eb76a7eb76a7eb5587c47595ba8eabcd93b1d595b3d795b3d795b3d7 -92afd286a1c15283bd679bde6ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e7 -6ea1e66ea1e66ea2e76ea1e66ea2e76ea2e76ea1e66ea2e76ea1e66ea1e66ea1e6 -6ea1e66ea1e66ea1e66ea1e66ea1e66ea1e6202f440000006391d06ea1e66ea1e6 -2c415d0000005881b86ea2e73d5980354f716ea1e66da0e544638f273952293c56 -2f4664334b6b6ea1e7151e2c090d125076a92638512f45626494d36ea1e66ea2e7 -6ea1e66ea1e66ea1e66ea1e6151e2c090d126ea1e76ea1e65b85bf2e446124354c -3a557b6a9cdf6594d32d425f496b996ea1e76ea1e74b6f9e2d425f6797d86ea1e6 -486a97273a52293c564c70a06ea1e66ea2e7151e2c090d126ea1e66ea1e66ea1e6 -6ea1e65e8ac60000002d425f6ea1e63d5980354e706ea1e65e8ac60000002b3f5a -3954782233493c597f6da0e56ea1e65d89c32d4260213146344d6e6b9de16ea1e6 -6ea1e76ea1e66ea1e66ea2e76ea1e66ea2e76ea2e76ea1e66ea2e76ea1e66ea1e6 -6ea1e66ea1e66ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e76ea1e6 -6ea1e65284c27695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d691aed185a0c15082bc70a2e576a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6eb76a7eb76a6eb -76a6eb76a7eb76a6eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb -76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea -76a7eb76a6ea76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6eb76a7eb76a6eb76a6eb76a7eb -76a6eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea -76a7eb76a6ea6495d75e87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff8f8ff0f0fff0000ff3232ff0000ff6565ffffffffffffffffffff6161ff -0000ff5555ffffffffffffffffffffffffffffffffffffff9b9bff0000ff2d2dff -ffffffffffffe3e3ff0000ff0000ffe7e7ffffffff5c5cff0000ff3737fffdfdff -ffffff7272ff0000ff0000fff5f5ffdedeff0000ff0000ffb6b6ffffffffffffff -5d5dff0000ff4545ffffffff9b9bff0000ff2d2dffffffffffffffffffffffffff -ffffffffffffffffffffffff3d3dff0000ff7070ffffffffffffff3d3dff0000ff -7373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d4 -8ca8ca678bb75c8fce74a6ea74a6ea74a5e974a6ea74a5e974a5e974a6ea74a5e9 -74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a6ea -74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea -74a6ea74a5ea74a6ea74a6ea74a5e974a6ea5c84ba3a52746996d36e9dde3a5376 -557bad74a6ea74a6ea74a6ea74a6ea74a5e974a6ea74a5e974a5e9496893425e85 -74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea -74a6ea74a6ea74a6ea74a5e974a6ea74a5e974a5e974a6ea74a5e974a6ea74a6ea -74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea5d86bd6996d374a6ea -74a6ea74a6ea74a6ea74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea -74a6ea74a6ea74a5e974a6ea74a5e974a5e974a6ea74a5e974a6ea74a6ea74a6ea -74a6ea74a6ea74a6ea74a5e974a6ea74a5e974a5e973a4e95c83b96a98d774a5ea -74a6ea74a5ea74a6ea74a6ea4f719f415d8374a6ea74a6ea74a6ea74a6ea74a6ea -72a3e63e587d5478a974a5e95c84ba3a53756995d374a6ea74a6ea74a5ea74a6ea -74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea -74a6ea74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea -74a5e974a6ea74a5e974a5e974a6ea74a5e974a6ea74a6ea74a6ea74a6ea74a6ea -74a6ea74a5e974a6ea74a5e974a5e974a5ea74a5e974a5ea74a5ea74a6ea74a5ea -74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea5587c37595ba -8eabcd93b1d595b3d795b3d795b3d792afd286a1c15283bd669ade6ca0e66c9fe5 -6ca0e66c9fe56c9fe56ca0e66c9fe56ca0e66ca0e66ca0e56ca0e66ca0e56ca0e5 -6ca0e66ca0e56ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e6 -202f440000003f5e874567944567941b293b0000005680b86ca0e6141e2c080d12 -6c9fe53d5a820001012c405d131d2a0000001c2a3c6ca0e6141e2c000101020305 -0e151e0000001d2b3d6ca0e56c9fe56ca0e56ca0e56ca0e66ca0e5141e2c080d12 -6ca0e65984be030507182333283b55020406223349699bdf05080c0f17216c9fe5 -6c9fe5141e2b080c116a9ee3385478000000283c561926360000004769976ca0e5 -141e2c080d126ca0e66ca0e66ca0e66ca0e65d8ac60000002c425f6ca0e6141e2c -080d126ca0e55d8ac50000000101020c121a0a0f160000003650746a9de20a0f16 -101722324a6b1825355f8dca6ca0e66ca0e66ca0e66ca0e66c9fe56ca0e66c9fe5 -6c9fe56ca0e56c9fe56ca0e56ca0e56ca0e66ca0e56ca0e66ca0e66ca0e66ca0e6 -6ca0e66ca0e66ca0e66ca0e66ca0e66ca0e65284c27695bb8fabce93b1d595b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed1 -85a0c15082bc6ea1e474a6ea74a5e974a6ea74a5e974a5e974a6ea74a5e974a6ea -74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea -74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea -74a5ea74a6ea74a6ea74a5e974a6ea74a5e974a5e974a6ea74a5e974a6ea74a6ea -74a6ea74a6ea74a6ea74a6ea74a5e974a6ea74a5e974a5e974a5ea74a5e974a5ea -74a5ea74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea -74a6ea74a6ea74a5e974a6ea74a5e974a5e974a6ea74a5e974a6ea74a6ea74a5ea -74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea -74a6ea74a6ea74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea -74a6ea74a5e974a6ea74a5e974a5e974a6ea74a5e96395d65e87b989a5c692b0d3 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e6 -2222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff5d5dff0000ff0000ff0000ff -bbbbffffffffffffffffffffd0d0ff0202ff0000ff4b4bff8080ff7070ff3232ff -8d8dffffffff9b9bff0000ff2d2dffffffffffffffe3e3ff0000ff0000ffe7e7ff -ffffffbbbbff0000ff0000ff2d2dff3232ff0000ff0404ff0000fff4f4ffffffff -5151ff0000ff0d0dff5c5cff4343ff0000ff0000ffc5c5ffffffff9b9bff0000ff -2d2dffffffffffffffffffffffffffffffffffffffffffffffffff3d3dff0000ff -7070ffffffffffffff3d3dff0000ff7373ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d7 -95b3d795b3d795b3d795b3d793b0d48ca8ca678bb75c8ecd72a4e872a4e872a4e9 -72a4e872a4e972a4e972a5e972a4e972a5e972a5e972a4e972a5e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e872a4e972a4e872a4e86d9ee0334968121a25 -04060917212f5276a972a4e872a4e872a4e972a4e872a4e972a4e972a4e972a4e9 -3c567b000000557aae628dc90000002f446072a4e872a4e972a4e872a4e872a4e9 -72a4e872a4e972a4e9151f2c090d1372a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e872a4e972a4e872a4e872a4e972a4e872a4e9 -72a4e972a5e972a4e972a5e972a5e972a4e972a5e972a4e96998d85c84bc70a1e5 -72a4e96592d00000001f2d4072a4e872a4e872a4e972a4e872a4e972a4e972a4e8 -72a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e872a4e972a4e872a4e872a4e972a4e872a4e9 -72a4e95c85bd000000293b5472a4e972a4e972a4e972a4e972a4e91e2b3e020304 -72a4e972a4e972a4e872a4e972a4e86a99d9000000283a5272a4e93c567b000000 -557aae72a5e972a5e972a4e972a5e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e872a4e972a4e8 -72a4e872a4e972a4e872a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e872a4e972a4e85587c37595ba8eabcd93b1d595b3d795b3d795b3d792afd2 -86a1c15283bd6298dc689de3689de3689de3689de3689de3689de4689de3689de4 -689de4689de4689de4689de4689de4689de3689de4689de3689de3689de3689de3 -689de3689de3689de3689de3689de31e2e43000000000000000000000000000000 -000000537db5689de3131e2b080c12689de41f2f44121b28689de44d74a9000000 -4a70a2689de3131e2b020406537db5679ce2111a26030508689de36294d75a88c4 -5a88c45d8dcc689de3131e2b080c12689de3273b560101026193d5689de3243750 -0000006294d62538510000005783be5b8ac8000000293e59679ce305080b1d2c41 -689de46599df0406081c2b3f689de4131e2b080c12689de3689de3689de3689de3 -5987c30000002b415e689de3131d2b080c12689ce35986c30000001621306498db -6091d20305080e151f5f90d20000001d2c406193d6689de3689de3689de3689de3 -689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3 -689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3 -5184c17695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d691aed185a0c15082bc6da0e272a4e872a4e972a4e8 -72a4e972a4e972a5e972a4e972a5e972a5e972a4e972a5e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e872a4e972a4e872a4e83045620d131b21304572a4e9 -72a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e972a4e96998d8 -5c84bc70a1e572a4e972a4e972a4e972a4e872a4e972a4e872a4e872a4e972a4e8 -72a4e9628dc9618cc872a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e9 -72a5e972a4e972a5e972a5e972a4e972a5e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e872a4e9 -72a4e872a4e872a4e972a4e872a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e96294d65e87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffb9b9ff0101ff0000ff1c1cfffcfcffffffffffffffffffffffffffafafff -1f1fff0000ff0000ff0000ff1b1bffbbbbffffffffa3a3ff0000ff3535ffffffff -ffffffe8e8ff0303ff0303ffebebffffffffffffff8787ff0808ff0000ff1212ff -a2a2ff3232ff0303fff7f7ffffffffeeeeff5d5dff0404ff0000ff0000ff2323ff -b8b8ffffffffffffffa3a3ff0000ff3535ffffffffffffffffffffffffffffffff -ffffffffffffffffff4646ff0000ff7a7affffffffffffff4646ff0000ff7c7cff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca -678bb75b8dcc70a3e870a3e870a2e770a3e870a2e770a2e770a2e770a2e770a2e7 -70a2e770a2e770a2e770a2e770a2e770a3e870a2e770a3e870a3e870a3e870a3e8 -70a3e86fa1e6182332000000182332304664182332202f4370a3e870a3e870a2e7 -70a3e870a2e770a2e770a3e870a2e73b567a000000537aad608cc80000002e4360 -70a2e770a3e870a2e770a2e770a3e870a2e770a3e870a3e8151f2c090d1370a3e8 -70a3e870a2e770a3e870a2e770a2e770a2e770a2e770a2e770a2e770a3e870a2e7 -70a3e870a3e870a2e770a3e870a2e770a2e770a2e770a2e770a2e770a2e770a2e7 -70a2e770a2e7364f710000005980b770a3e86fa1e63e5b82547aae70a3e870a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a2e770a3e870a2e7 -70a2e770a3e870a2e770a3e870a3e870a3e870a3e870a3e870a3e870a2e770a3e8 -70a2e770a2e770a3e870a2e770a3e870a3e86c9ddf3d5a805881b770a3e870a2e7 -70a3e870a2e770a2e71d2b3d02030470a2e770a2e770a3e870a2e770a3e86898d9 -000000273a5270a2e73b557a0000005379ad70a2e770a2e770a2e770a2e770a2e7 -70a2e770a3e870a2e770a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a2e770a3e870a2e770a2e770a3e8 -70a2e770a3e870a3e870a3e870a3e870a3e870a3e870a2e770a3e870a2e770a2e7 -70a3e870a2e770a3e870a3e870a3e870a3e870a3e870a3e870a2e770a3e870a2e7 -70a2e770a2e770a2e770a2e770a2e770a3e870a2e770a3e85587c37595ba8eabcd -93b1d595b3d795b3d795b3d792afd286a1c15283bd6197dc669ce3669be2669ce3 -669be2669be2669be2669be2669be2669be2669be2669be2669be2669be2669ce2 -669be2669ce2669ce2669be2669ce2669be2669be2669ce3669be2669ce31e2e43 -0000004c74a95480ba5480ba21334a000000517cb4669be2131d2b080c12669ce2 -334e710001012e46651a283a0304075a89c9669ce3131d2b080c12669ce3669be2 -1e2e430000006499de2c44630000000000000e151f669ce2131d2b080c12669be2 -16223100000004070a04070a0203050000005989c7466a9b0000003652773b5983 -0000004a71a45a89c900000002030404070a04070a00000015202e669be2131d2b -080c12669be2669ce2669be2669be25886c30000002a405e669ce3131d2b080c12 -669ce25886c20000002a405d669be2669be2131d2a020406669ce2283d58000000 -0406082d45656499df669be2669ce3669be2669be2669ce3669be2669ce3669ce3 -669ce2669ce3669ce2669ce2669be2669ce2669be2669be2669be2669be2669be2 -669be2669ce3669be2669ce3669ce35184c17695bb8fabce93b1d595b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c1 -5082bc6b9fe270a3e870a2e770a3e870a2e770a2e770a2e770a2e770a2e770a2e7 -70a2e770a2e770a2e770a2e770a3e870a2e770a3e870a3e870a3e870a3e870a3e8 -6a9adc0305070001010000005d88c270a3e870a3e870a3e870a3e870a2e770a3e8 -70a2e770a2e770a3e870a2e7364f710000005981b870a3e870a3e870a3e870a2e7 -70a3e870a2e770a2e770a3e870a2e770a3e81118230e151e70a3e870a3e870a3e8 -70a2e770a3e870a2e770a2e770a2e770a2e770a2e770a2e770a3e870a2e770a3e8 -70a3e870a2e770a3e870a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e7 -70a2e770a2e770a3e870a2e770a3e870a3e870a3e870a3e870a3e870a3e870a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a2e770a3e870a2e770a2e7 -70a3e870a2e770a3e870a3e870a3e870a3e86193d55e87b989a5c692b0d395b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f5 -0000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff9f9fff3f3fffdfdffffffff -ffffffffffffffffffffffffffffffffffffebebffd2d2ffe5e5ffffffffffffff -fffffffffffff6f6fffdfdfffffffffffffffffffff9f9fff9f9ffffffffffffff -fffffffffffff9f9ffdbdbfffdfdfffffffffbfbfff8f8ffffffffffffffffffff -fffffffafaffd8d8ffededfffffffffffffffffffffffffffffffff6f6fffdfdff -fffffffffffffffffffffffffffffffffffffffffffffffffefefff5f5ffffffff -fffffffffffffefefff5f5ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d7 -95b3d795b3d795b3d793b0d48ca8ca678bb75a8dcc6ea1e76ea1e76ea2e76ea1e7 -6ea2e76ea2e76ea1e76ea2e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e6 -6ea1e76ea1e66ea1e66ea1e66ea1e66ea1e6466693000000202f436d9fe56ea1e7 -6ea1e65f8cc96ea1e66a9bde3b577d25364e2a3d584a6d9c6ea1e66ea1e73a5579 -0000005278ac5e8ac60000002d425f6ea1e75b85bf314767213146283b555076a9 -6ea1e66ea1e6151e2c090d124d71a223344b2f46646290cf6ea2e76ea2e76a9bde -3b587d25364e2a3d584a6d9c6ea1e66ea1e73c587e4566913f5d8623344a699bdd -5b85c0314867213146283b565076a96ea1e75177ac1722300000002638502f4664 -2f46642f46644b6e9d6ea1e66ea1e64c6fa02b3f5b25364d3a557a699adc6ea1e7 -6796d72d425f5983bc3c597f24354d3d5a816d9fe46ea1e76ea1e66ea1e66ea1e6 -5278ac2f4563618eca2e446125364e557db35e89c52a3d58283b555880b86ea1e6 -6797d92e43604b6f9f6ea1e76c9fe33b567c24364d405e861c2a3c0203046ea1e6 -6ea1e6618ecb2f44622739524d71a20000002739526ea2e73a557a0000005279ad -6ea1e76899dc38527523344b2f46645e8ac76ea1e6405e862f46646c9fe36ea1e6 -4768952e43606899db6ea1e74f74a52c415e6493d35b85bf314767213146283b55 -5076a96ea1e66ea1e73c587e4565913f5d86233349699adc6ea1e6486996273a52 -293c564c6fa06ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e76ea1e6 -6ea1e76ea1e76ea2e76ea1e76ea2e76ea2e76ea1e66ea2e76ea1e66ea1e66ea1e7 -6ea1e66ea1e75486c37595ba8eabcd93b1d595b3d795b3d795b3d792afd286a1c1 -5283bd5d94d96299e06299e06299e06299e06299e06299e06299e06299e06299e0 -6299e06299e06299e06299e06299e06299e06299e06299e06298e06299e06298e0 -6298e06299e06298e06299e01d2d42000000588aca6298e06298e0273d5a000000 -4e7ab36299e0121d2b080c126299e0283f5c0d141e1c2b4021334b4a73a96299e0 -6298e0121d2b080c126298e06299e01d2d430000006096dc5685c4476fa3476fa3 -4e7ab36299e0121d2b080c126299e01a283b010304517fbb5281bc5281bc5585c3 -6299e05f94d904070b1521301a2a3d070b106096dc5b8fd10000001c2d415281bc -5281bc5281bc5a8dce6299e0121d2b080c126298e06299e06298e06298e05484c1 -000000283f5d6299e0121d2b080c126298e05483c1000000253a566299e06299e0 -0a1017090f166299e06299e04d77b01b2b3f0000003e608e6299e06298e06299e0 -6299e06298e06299e06298e06298e06299e06298e06299e06299e06299e06299e0 -6299e06299e06299e06299e06299e06299e06299e06299e06299e06299e05183c1 -7695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d691aed185a0c15082bc699de16ea1e76ea2e76ea1e76ea2e7 -6ea2e76ea1e76ea2e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e66ea1e7 -6ea1e66ea1e66ea1e66ea1e66ea1e6456692000000304765000000354e716ea1e6 -6ea1e76594d32d425e4e72a36ea1e66b9de12e44614768955177ac172230000000 -2638503f5d856ea1e66ea1e64c6fa02b3f5b25364d3a557a699adc6ea1e73d5980 -070a0f06080c2f4664547bb15076a92d425f6391d06ea2e75780b72c415d5c88c2 -6ea1e63c587e4565914f74a6273a532f44626494d36ea1e76ea2e75b86bf2e4461 -24364d3a557b6a9ce06ea1e75278ad2f4563577fb62333495177ac699adc395377 -2232482a3d585c87c16ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e76ea1e6 -6ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e66ea1e6 -5f92d45e87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -efefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7 -598dcc6c9fe56c9fe56ca0e56c9fe56ca0e56ca0e56ca0e66ca0e56ca0e66ca0e6 -6c9fe56ca0e66c9fe56c9fe56ca0e66c9fe56ca0e66ca0e66ca0e66ca0e66ca0e6 -293d580000004c70a26ca0e56ca0e56ca0e56ca0e56b9ee31723320001011e2d41 -0f17210000003d5b836ca0e63954790000005077ab5d8ac60000002c425f6ca0e6 -141e2b162130293c570d131b0102035b88c26ca0e5141e2c000101040609121b27 -000000131c286b9fe46b9ee31723320001011e2d410f17210000003d5b836c9fe5 -141e2c070b1000010105070a6291d0141e2b162130293c570d131b0102035b88c3 -43638e080d120000000e151e111a2510192400000024354d6ca0e63a577d000000 -131d2a1b293b0000001926366ca0e55d8ac5000000090d13080c11080b11000000 -41608a6ca0e66ca0e66ca0e66ca0e5395479000000080d120f1620000000060a0e -070a0f0f1620000000080c11689add5d89c50000002c425f6c9fe52d4360000000 -0f1620060a0e0000000203046ca0e6699ce00c121a000101131d2a020304000000 -2638516ca0e53954790000005077ab6b9ee415202e080d122e44620b1119070a0f -6394d42f4563000000547cb36ca0e6121a260000004a6e9e6ca0e51e2d41040608 -689add141e2b162130293c570d131b0102035b88c26ca0e6141e2c070b10000101 -05070a6291d1385478000000283c561926360000004769966ca0e66ca0e66ca0e5 -6ca0e66ca0e56ca0e56c9fe56ca0e56c9fe56c9fe56ca0e56c9fe56ca0e56ca0e5 -6ca0e66ca0e56ca0e66ca0e66c9fe56ca0e66c9fe55486c37595ba8eabcd93b1d5 -95b3d795b3d795b3d792afd286a1c15183bc5c93d86097de6097df6097de6097df -6097df6098df6097df6098df6098df6097df6098df6097df6097df6097df6097df -6097df6097df6098df6097df6098df6098df6097df6098df6097df1c2d42000000 -5688ca6097df6097df263c5a0000004c78b26097df121d2a070c126098df121d2b -0a0f172d4869324f754064945d94d96097df121d2a070c126097df6098df1c2d43 -0000005e94da6097df6097de6097de6097df6097de121d2a070c126097df324e74 -0000002d47684f7cb74871a73858826097de6097df21354e000000010204253b57 -6097df6098df111c2904070b4167984f7db9416697466ea26097df121d2a070c12 -6098df6097df6098df6098df5282c0000000273e5c6097df121d2a070c126097df -5282c0000000010102304b6f2a4262000000233751578acb34537a5281bf385983 -0000003a5c886098df6097df6098df6098df6097df6098df6097df6097df6097de -6097df6097de6097de6097df6097de6097df6097df6097df6097df6097df6097df -6097de6097df6097de6097de5083c17695bb8fabce93b1d595b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c15082bc -679be06c9fe56ca0e56c9fe56ca0e56ca0e56ca0e66ca0e56ca0e66ca0e66c9fe5 -6ca0e66c9fe56c9fe56ca0e66c9fe56ca0e66ca0e66ca0e66ca0e66ca0e61e2d41 -090d13689add06090d0f16206ca0e56ca0e55984bd0000003149696ca0e56595d7 -00000026395243638f080d120000000e151e283c566ca0e53a577c000000131d2a -1b293b0000001926366ca0e625374f020305020304111a25466895354e71000000 -557db56ca0e541608a0000004a6e9e6ca0e6141e2c080c110204060e151e000000 -1d2b3d6c9fe55984bd030507182333283b550204062233496c9fe5395479000000 -070b1005080c3e5b842d43600203053047662537503e5c856ca0e66ca0e56ca0e6 -6ca0e56ca0e56ca0e56ca0e56ca0e56ca0e56ca0e66ca0e56ca0e66ca0e66ca0e6 -6ca0e66ca0e66ca0e66ca0e56ca0e65e91d35d87b989a5c692b0d395b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ff -b7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d7 -95b3d795b3d793b0d48ca8ca678bb7588bcb689de4689de4689de3689de4689de3 -689de3689de3689de3689de3689de3689de4689de3689de4689de4689de3689de4 -689de3689de3689de4689de3689de41926380000005581bb689de3689de3689de4 -689de3496ea0000000324b6d689de46396d906090e0d141e689de3375378000000 -4d75aa5987c30000002b415e689de35f8fcf689de3689de3446896000000426491 -689de3131e2b0204065581bb689de41e2e43000000547eb8496ea0000000324b6d -689de36396d906090e0d141e689de4131e2b000101496fa1679ce2689de35f8fcf -689de3689de3446896000000426491689de4324c6f000000527cb5689de36294d7 -00000023344c669be105080b111925669be1689de3243750000000537eb65987c4 -00000015202e6396da5682bc000000253952689de3689de3689de3689de3375378 -000000344e71689de3283d59000000355074689de3273c570000005480b95987c4 -0000002b415e669be10304070f18226599df5f8fd00c121a020304689de3476b9b -000000304969689de4486d9f000000243750689de33753780000004d75aa4a70a2 -00000040618e689de3476b9c0000003f608a4b72a60000003550735f8fd0000000 -0000002b415f6599de04070a1e2e43689de35f8fd0689de3689de4446897000000 -426492689de3131e2b000101496fa1679ce2679ce205080b1d2c40689de36599de -0406081c2b3f689de3689de3689de3689de3689de3689de3689de4689de3689de4 -689de4689de4689de4689de4689de4689de3689de4689de3689de3689de4689de3 -689de45386c37595ba8eabcd93b1d595b3d795b3d795b3d792afd286a1c15183bc -5991d75c95dd5c94dc5c95dd5c94dc5c94dc5c95dd5c94dc5c95dd5c95dd5c95dd -5c95dd5c95dd5c95dd5c94dc5c95dd5c94dc5c94dc5c95dd5c94dc5c95dd5c95dd -5c94dc5c95dd5c94dc1d2f460001015488ca5c95dd5c95dd273f5e0000004b79b5 -5c94dd131f2e090f165c94dc28416002030518273a101a270000001d2f465c94dd -131f2e090f165c94dc5c95dd1d2f460101025a93da5c94dc5c95dd5c95dd5c95dd -5c95dd131f2e090f165c94dd588fd520344e0001010000000000001c2e455c95dd -5c94dc41699c000000000000446ea35c94dc5c95dd4b7ab5101a27000000000000 -030507395b885c95dd131f2e090f165c95dd5c94dc5c95dd5c95dd5082c1000000 -28405f5c94dc131f2e090f165c95dd5082c1000000243b5705090d000000101a26 -5183c35488ca090f1600000000000019293e588ed45c95dd5c94dd5c95dd5c95dd -5c94dc5c95dd5c94dc5c94dc5c95dd5c94dc5c95dd5c95dd5c95dd5c95dd5c95dd -5c95dd5c94dd5c95dd5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5083c07695bb -8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d691aed185a0c14f82bc6499df689de4689de3689de4689de3689de3 -689de3689de3689de3689de3689de4689de3689de4689de4689de3689de4689de3 -689de3689de4689de35f90d20102032a405c689de4253952000000527cb4689de3 -5681bc0000002f4868689de46193d4000000253851689de3324c6f000000527cb4 -689de3669be005080b111925669be0689de3243750000000537eb6689de30f1822 -0d141d689de3689de4334d70000000527cb4689de43e5e89000000476c9d689de3 -131e2b020406537db5679ce3111a26030407689de4273b560101026193d5689de3 -2437500000006294d7375378000000283c58679ce2679ce31a283906090e5681bc -689de3689de4689de4689de3689de4689de3689de3689de4689de3689de4689de4 -689de3689de4689de3689de3689de3689de3689de3689de3689de3689de35c90d2 -5d87b889a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca -85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef -92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7578bca -669ce2669ce2669ce3669ce2669ce3669ce3669be2669ce3669be2669be2669be2 -669be2669be2669be2669ce2669be2669ce2669ce2669be2669ce2669be2203147 -0000004c73a8669ce2669ce2669be2669ce237537a000000486e9f669be2669ce2 -172333010102659be13652770000004c74a95886c20000002a405d669ce34d75ab -1e2e430f1721060a0f0000003e5e8a669be2131d2b080c12669ce2669ce2355176 -000000476c9d37537a000000486d9f669ce2669ce2172333010102659be1131d2b -080c12669ce2669ce3669ce34d75ab1e2e430f1721060a0f0000003e5e8a669be2 -324b6e000000517bb3669ce26094d600000022344c5987c5000000263a54669be2 -669ce239587f0000004569995885c20000002a405d669be26297da000000203046 -669ce2669ce2669ce2669be23652770000004c74a9669ce33450740000004e77ad -669be2344f730000004e77ae5886c20000002a405d5a8ac8000000263a55669be2 -669be21b293c020304669ce238567c000000486ea0669ce25f92d3000000243750 -669ce33652780000004c74aa38557c00000003050704070a04060800000037547a -6397dc04070a1824354366950203041d2c410f17214e77ad0000003c5c86669ce2 -4d75ab1e2e430f1721060a0f0000003e5e8a669ce2131d2b080c12669ce2669ce2 -5a8ac900000002030404070a04070a00000015202e669ce3669ce3669be2669ce3 -669be2669be2669ce2669be2669ce2669ce2669be2669ce2669be2669be2669ce2 -669be2669ce2669ce2669ce2669ce2669ce25385c27595ba8eabcd93b1d595b3d7 -95b3d795b3d792afd286a1c15182bc578fd65a93dc5a93dc5a93dc5a93dc5a93dc -5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5992db5890d65a93dc -5a93db5a93db5992db578fd55a93dc5a93dc5891d95890d85287ca000101223955 -5a93dc5a93dc0a111a0a111a5a93dc5892d95891d85a93dc5a94dc5991da5890d7 -5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5891d85890d75a93dc5a93db5a93dc -578ed54e7fbf558acf5a93dc5a93dc5a93dc5a93dc5890d75890d75a93db5a93dc -5a93db5a93db5a93dc5388cb4e80c05890d75a93dc5a93dc5891d95890d85a93dc -5a93dc5a93dc5a93dc5a93dc578fd65992db5a93dc5891d85890d85a93db5a93db -578fd65a93db578ed55083c45a93dc5a93dc5a93dc5992db4f81c15388cc5a93dc -5a93dc5a94dc5a93dc5a94dc5a94dc5a93dc5a94dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc4f83c07695bb8fabce93b1d595b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14f82bc6299dd -669ce2669ce3669ce2669ce3669ce3669be2669ce3669be2669be2669be2669be2 -669be2669be2669ce2669be2669ce2669ce2669be2669ce23c5b85000000293f5c -3d5d88263b550000002d4464669ce25480bb0000002e4767669be25f92d3000000 -243750669ce2324c6e000000517bb3669ce25987c5000000263a54669be2669ce3 -39588000000045699a669be20f17220d141d669be2669ce2324d6f000000507bb3 -669be23d5d88000000466a9b669ce2131d2b080c12669ce2669ce21e2e43000000 -6499de16223100000004070a04070a0203050000005988c63652770000004c74a9 -669ce2669be2466c9c0304070000001a283b5886c4669be2669ce2669be2669ce2 -669ce2669be2669ce2669be2669be2669ce2669be2669ce2669ce2669ce2669ce2 -669ce2669ce2669be2669ce25b8ed25d87b889a5c692b0d395b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2 -f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d7 -95b3d793b0d48ca8ca678bb7568aca649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649be1649ae1649be1 -649be1649ae1649be1649ae1314b6e00000029405d649ae1649ae1649ae16296dc -3a5a840000003f618e649ae1649ae10e1621090e15649ae13451770000004a73a8 -5684c200000029405d5f93d703050715202f4c75ab3958810000003d5e89649ae1 -131d2b06090e6299df649be22b43620000004d76ad3a5a840000003f618e649ae1 -649ae10e1621090e15649ae1131d2b080c12649ae1649ae15f93d703050715202f -4c75ab3958810000003d5e89649ae1314b6e0000004e79b1649be15e93d5000000 -21344b5c8dcf0000001e2e43649ae1649ae1304a6c0000004c75ab5684c2000000 -29405d649ae16195da0000001f3046649ae1649ae1649ae1649ae1345177000000 -4a73a8649ae13450750000004c75ac649ae1334f730000004d76ad5685c2000000 -29405d5c8ed00000001d2e43649ae1649ae1172334010304649ae13a5a84000000 -3f618e649ae15a8aca000000233650649ae13451770000004a73a83c5d87000000 -3958815481bd5481bd5482be6197db649ae11f30460103042336501623333d5e89 -000000263b570000005989c85f93d703050715202f4c75ab3958810000003d5e89 -649ae1131d2b080c12649ae1649ae15d90d20000001d2d425481bd5481bd5481bd -5c8dcf649ae1649ae1649ae1649ae1649ae1649ae1649be2649ae1649be2649be2 -649ae1649be2649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -5385c27595ba8eabcd93b1d595b3d795b3d795b3d792afd286a1c15182bc558ed4 -5891da5892db5891da5892db5892db5891da5892db5891da5891da5892db5891da -5892db5892db5892db5892db5892db5892db5891da5892db5891da5891da5892db -5891da5892db5892db5891da5892db5891da5891da5892db5891da5892db5892db -5891da5892db558dd40b121b020406162437101b2900000031517a5892db5891da -5891da5891da5891da5891da5891da5892db5891da5892db5892db5892db5892db -5892db5892db5891da5892db5891da5891da5891da5891da5891da5891da5892db -5891da5892db5892db5891da5892db5891da5891da5892db5891da5892db5892db -5892db5892db5892db5892db5891da5892db5891da5891da5892db5891da5892db -5892db5891da5892db5891da5891da5892db5891da5892db5892db5891da5892db -5891da5891da5892db5891da5892db5892db5891da5892db5891da5891da5891da -5891da5891da5891da5892db5891da5892db5892db5892db5892db5892db5892db -5891da5892db5891da5891da5891da5891da5891da5891da4f83c07695bb8fabce -93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d691aed185a0c14f82bc6097dc649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649be1649ae1649be1649be1 -649ae1649be11825360000000102030102030102030000000a0f166398df5482be -00000029405e649ae1598aca000000233650649ae1314b6e0000004e79b1649ae1 -5c8dcf0000001e2e43649ae1649ae1304a6c0000004c75ab649ae10f17220b121a -649ae1649be2324f730000004b74aa649ae138567f000000456a9b649ae1131d2b -080c12649ae1649ae11e2e430000006297dd1a293c0103045380bb5481bd5481bd -5786c3649ae13451770000004a73a8649be1649ae1649be15a8ccb314b6e000101 -1e2e43649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae15a8ed15d87b8 -89a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc8 -6e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7558aca6299e0 -6299e06299e06299e06299e06299e06299e06299e06299e06299e06299e06299e0 -6299e06299e06298e06299e06298e06298e06299e06298e06299e0598bcc05080c -000000243953385882263b571c2c41527fbb010102101a26466da0314e72000000 -283f5d6299e03351760000004972a75484c1000000283f5d5788c70000001d2d42 -5484c22337510000003b5d896299e0121d2b0000001d2d433a5b8605090d060a0f -5e93d75280bb010102101a26466da0314e72000000283f5d6299e0121d2b080c12 -6299e06299e05788c70000001d2d425484c22337510000003b5d896299e036557c -000000263c57446a9d5d90d400000021334b6299e0121c290204063b5d88426797 -080d130b11195e94d85483c1000000283f5d6298e05f94d90000001e30466299e0 -6299e06299e06299e03351760000004972a76299e0334f740000004a75ab6299e0 -324e730000004b76ad5483c1000000283f5d6298e00e17220203053858812a4261 -0000000103046299e0507db70000001019253f629015223200000022364f6299e0 -3351760000004972a75281bc0101021623334d78b04f7bb43959825889ca6299e0 -3b5b870000000101022f496c5788c7000000010102121c296299e05788c7000000 -1d2d425483c22337510000003b5c896299e0121d2b080c126299e06299e06299e0 -121c2904070b426898517fba426797476fa36299e06299e06299e06299e06299e0 -6299e06298e06299e06298e06298e06299e06298e06299e06299e06299e06299e0 -6299e06299e06299e06299e06299e05285c27595ba8eabcd93b1d595b3d795b3d7 -95b3d792afd286a1c15182bc528cd4548fd9548fd9548fd9548fd9548fd9548fd9 -548fd9548fd9548fd9548fd8548fd9548fd8548fd8548ed8548fd8548ed8548ed8 -548fd9548ed8548fd9548fd9548fd9548fd9548fd9548fd9548ed8548fd9548ed8 -548ed8548fd8548ed8548fd8548fd8548fd9548fd8548fd94f87cd365c8b2c4c73 -3255804678b5548fd8548fd8548fd8548fd8548fd9548fd8548fd9548fd9548fd8 -548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8 -548fd9548fd8548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9 -548fd9548fd8548fd9548fd8548fd8548ed8548fd8548ed8548ed8548fd9548ed8 -548fd9548fd9548fd9548fd9548fd9548fd9548ed8548fd9548ed8548ed8548fd8 -548ed8548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8 -548fd8548fd8548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8 -548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8 -548fd9548fd94f82c07695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14f82bc5f96db6299e0 -6299e06299e06299e06299e06299e06299e06299e06299e06299e06299e06299e0 -6299e06298e06299e06298e06298e06299e05787c700000021334b6299e06299e0 -6299e01f31480000004972a75d90d4010204090e15395983121d2b00000022364f -6299e036557c000000263c57446b9d6299e0121c290204063b5d88426797080d13 -0b11195e94d86299e01521310001013b5c874f7bb63e608e0000001b2a3e35537a -04070b00000043699a6299e0121d2b080c126299e06299e01d2e430000006096dc -334f740000002e4869517eb94973a8395a836299e03351760000004972a76298e0 -6299e037557e4d78b1517eb905080d1a2a3d6299e06299e06299e06299e06299e0 -6298e06299e06298e06298e06299e06298e06299e06299e06299e06299e06299e0 -6299e06299e06299e0588dd15d87b889a5c692b0d395b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d7 -93b0d48ca8ca678bb75489ca6097df6097df6097df6097df6097df6097df6097df -6097df6097df6097df6098df6097df6098df6098df6098df6098df6098df6098df -6097df6098df6097df6097df4c78b2131e2d000101000000070b103a5c886097df -395b8605080c00000001010220334b5a8ed16098df34527a0000004974ab5484c3 -0000002941616098df263b5800000000000020334c0000003b5e8b6097df131f2e -182739131e2d00000004070a4167986098df6098df395b8605080c000000010102 -20324b5a8ed16097df141f2f090f166097df6097df6097df263b58000000000000 -20334c0000003b5e8b6098df5486c40a101700000019273a5b91d500010122364f -6097df4e7bb6101a260000000000000f18244c77b06097df5484c3000000294261 -6097df5d94d901010220324a6098df6097df6097df6097df34527a0000004974ab -6098df3351780000004b77ae6097df3250760000004c77b05484c3000000294161 -6097df4771a7060a0f000000101a262439540305076097df6097df2d4768010102 -000101233853101a262337526097df34527a0000004974ab6097df395b8605080d -0000000000000a10175486c46098df5688c80203050000004873a86097df121c29 -000000304b6f6097df6097df263b5800000000000020334c0000003b5e8b6098df -14202f090f166098df6097df6097df4e7bb6101a270000000000000305073b5d8a -6098df6098df6097df6098df6097df6097df6097df6097df6097df6097df6098df -6097df6098df6098df6097df6098df6097df6097df6097df6097df6097df5285c2 -7595ba8eabcd93b1d595b3d795b3d795b3d792afd286a1c15182bc508bd2528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8 -528ed8528ed8528ed8528ed8528ed8528dd7528ed8528dd7528dd7528ed7528dd7 -528ed7528ed7528dd7528ed7528dd7528dd7528ed8528dd7528ed8528ed8528dd7 -528ed8528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8 -528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8 -528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8528ed8 -528ed8528ed8528ed8528dd7528ed8528dd7528dd7528ed7528dd7528ed7528ed7 -528dd7528ed7528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7 -528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8 -528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7 -528ed8528dd7528dd7528dd7528dd7528dd7528dd74f82c07695bb8fabce93b1d5 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -91aed185a0c14f81bc5d94da6097df6097df6097df6097df6097df6097df6097df -6097df6097df6098df6097df6098df6098df6098df6098df6098df6098df6097df -395b850000004166976097df6097df6097df4065950000002a42626097df304c70 -000000010102263d5a0f19242338536098df5485c40a0f1700000019273a6097df -4e7bb6101a260000000000000f19244c77b06098df6097df3c5f8d010203000000 -395a845c91d615213000000006090d324f74000000436b9d6097df141f2f090f16 -6097df6097df1e30470101025e95dc5c91d722354f0001010000000000001e2f45 -6098df34527a0000004974ab6098df6098df22364f0000000000000b121b4c77b0 -6097df6097df6097df6097df6097df6097df6097df6097df6097df6098df6097df -6098df6098df6097df6098df6097df6097df6097df6097df578cd05d87b889a5c6 -92b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c9 -95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb75388c95c95dd5c95dd -5c94dd5c95dd5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5c94dd5c95dd5c94dd -5c94dd5c94dd5c94dd5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5c94dd5c95dd -588ed45183c45b93db5c94dd5c95dd5c95dd5b94dc5184c45990d65c95dd5c94dd -5c95dd5c94dd598fd65c95dd5c94dd5991d75b94dc5c95dd5c95dd5489cb568bcf -5c94dd5a92d85c94dd5c94dd5a92d95b92db5c95dd5183c35a91d85c95dd5c94dc -5c94dc5c94dd5b93db5183c4598fd65c95dd5c94dd5c95dd5a93da5a91d95c95dd -5c94dd5c94dd5c95dd5488cb568bcf5c95dd5a91d85c95dd5c94dd5c94dd5a92da -5183c45a91d85c94dd5a92d85b92db5c95dd5c95dd5c94dd5589cc5588cc5c94dd -5c95dd5c94dd5c95dd5991d75b94dc5c95dd5c95dd5a92d85b92db5c95dd5c94dd -5c94dd5c95dd5c94dd5990d65c95dd5c95dd5c95dd5991d75c95dd5c94dd5c95dd -5990d75c94dd5c95dd5990d75b94dc5c95dd5c94dc5b93db5386c75c94dc5b93dc -5a91d75c94dd5c94dd5c95dd588dd3568cd05c95dd5a91d95b93db5c94dd5c94dd -5990d65c94dd5c95dd5c95dd5b93dc5184c45386c85c94dd5c94dd5c94dd5c94dd -5a91d95991d75c94dd5c95dd5b94dc598fd65c95dd5c94dd5c94dd5c95dd5488cb -568bcf5c95dd5a92d85c95dd5c95dd5a93da5a91d95c95dd5c94dd5c94dd5c95dd -5c94dd558acd5082c15a92d85c95dd5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd -5c95dd5c94dd5c95dd5c95dd5c94dc5c95dd5c94dc5c94dc5c94dd5c94dc5c94dd -5c94dd5c95dd5c94dd5c95dd5184c17595ba8eabcd93b1d595b3d795b3d795b3d7 -92afd286a1c15082bc4d89d14e8bd64e8bd54e8bd64e8bd54e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad54e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad54e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd64e8ad54e8bd6 -4e8bd64e8bd54e8bd64e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd64e8ad5 -4e8bd64e8bd64e8ad54e8bd64e8ad54e8ad54e8ad54e8ad54e8ad54e8ad54e8bd6 -4e8ad54e8bd64e8bd64e8bd54e8bd64e8bd54e8bd54e8bd54e8bd54e8bd54e8bd5 -4e8ad54e8bd54e8ad54e8ad54e8bd54e8ad54e8bd54e8bd54e8bd54e8bd54e8bd5 -4e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad54e8bd54e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd64e8ad54e8bd64e8bd64e8bd5 -4e8bd64e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd64e8ad54e8bd64e8bd6 -4e8ad54e8bd64e8ad54e8ad54e8ad54e8ad54e8ad54e8ad54e8bd64e8ad54e8bd6 -4e8bd64e82bf7695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d691aed185a0c14f81bc5992d95c95dd5c94dd -5c95dd5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd -5c94dd5c94dd5c94dd5c94dd5c95dd5b93dc5990d65c95dd5c94dd5c95dd5c94dd -5c94dd5990d65b92db5c95dd5c95dd578dd1568cd05c95dd5a92d95b92db5c95dd -5c94dd5a92da5184c45a91d85c95dd5c95dd5c95dd5589cc5589cc5c95dd5c94dd -5c95dd5c94dd5c94dd588ed35285c75c95dd5c95dd5c94dc5386c85a91d85c94dc -5990d75c94dc5c94dd5a92da5a92d95c94dd5c95dd5b93db5a91d85c95dd5c94dd -5c94dd5990d65080c0568cd05c95dd5c94dd5c95dd598fd65c94dd5c94dd5c94dd -5c94dd5487ca5184c35b92db5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd5c95dd -5c94dd5c95dd5c95dd5c95dd5c95dd5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd -5c95dd5c94dd558bcf5d87b889a5c692b0d395b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d4 -8ca8ca678bb75288c85a93db5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc -5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93db -5a93db5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc -5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db -5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db -5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93db5a93db5a93db -5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc -5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db -5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db -5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db -5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93db5a93db5a93db5a93db5a93dc -5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db -5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db -5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5184c17595ba -8eabcd93b1d595b3d795b3d795b3d792afd286a1c15082bc4b87cf4c89d44c8ad4 -4c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c8ad44c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c8ad44c89d44c8ad4 -4c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c8ad4 -4c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44e82bf7695bb8fabce93b1d595b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed1 -85a0c14f81bc5891d75a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db -5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93db5a93db -5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db -5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc -5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc -5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc -5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93db5a93db5a93db5a93db -5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db -5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc548ace5d87b889a5c692b0d3 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e6 -2222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d7 -95b3d795b3d795b3d795b3d793b0d48ca8ca678bb75187c85892da5892da5891da -5892da5891da5891da5892db5891da5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db -5892db5891da5892db5891da5891da5891da5891da5891da5891da5892db5891da -5892db5892db5892db5892db5892db5892db5891da5892db5891da5891da5892db -5891da5892db5892db5891da5892db5891da5891da5892db5891da5892db5892db -5892db5892db5892db5892db5892da5892db5892da5892da5891da5892da5891da -5891da5892db5891da5892db5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db5891da -5892db5891da5891da5891da5891da5891da5891da5892db5891da5892db5892db -5892db5892db5892db5892db5891da5892db5891da5891da5892db5891da5892db -5892db5891da5892db5891da5891da5892db5891da5892db5892db5892db5892db -5892db5892db5892da5892db5892da5892da5891da5892da5891da5891da5892db -5891da5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db5892db5892db5892db5891da5892db5891da -5891da5891da5891da5891da5891da5892db5891da5892db5892db5892db5892db -5892db5892db5891da5892db5891da5891da5892db5891da5892db5892db5891da -5892db5891da5891da5892db5891da5892db5892db5892db5892db5892db5892db -5892da5892db5892da5084c17595ba8eabcd93b1d595b3d795b3d795b3d792afd2 -86a1c15082bc4885ce4886d24886d24886d24886d24886d24886d24886d24886d2 -4886d24887d24886d24887d24887d24886d24887d24886d24886d24887d24886d2 -4887d24887d24887d24887d24887d24887d24886d24887d24886d24886d24886d2 -4886d24886d24886d24887d24886d24887d24887d24887d24887d24887d24887d2 -4886d24887d24886d24886d24887d24886d24887d24887d24886d24887d24886d2 -4886d24887d24886d24887d24887d24887d24887d24887d24887d24886d24887d2 -4886d24886d24886d24886d24886d24886d24886d24886d24886d24886d24887d2 -4886d24887d24887d24886d24887d24886d24886d24887d24886d24887d24887d2 -4887d24887d24887d24887d24886d24887d24886d24886d24886d24886d24886d2 -4886d24887d24886d24887d24887d24887d24887d24887d24887d24886d24887d2 -4886d24886d24887d24886d24887d24887d24886d24887d24886d24886d24887d2 -4886d24887d24887d24887d24887d24887d24887d24886d24887d24886d24886d2 -4d81bf7695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d691aed185a0c14f81bc5690d65892da5891da5892da -5891da5891da5892db5891da5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db -5891da5892db5891da5891da5891da5891da5891da5891da5892db5891da5892db -5892db5892db5892db5892db5892db5891da5892db5891da5891da5892db5891da -5892db5892db5891da5892db5891da5891da5892db5891da5892db5892db5892db -5892db5892db5892db5892da5892db5892da5892da5891da5892da5891da5891da -5892db5891da5892db5892db5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db5891da5892db -5891da5891da5891da5891da5891da5891da5892db5891da5892db5892db5892db -5892db5389ce5d86b889a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca -678bb75186c75691da5691da5690da5691da5690da5690da5691da5690da5691da -5691da5690d95691da5690d95690d95690d95690d95690d95690d95690d95690d9 -5690d95690d95690d95690d95690d95690d95690da5690d95690da5690da5691da -5690da5691da5691da5690d95691da5690d95690d95690d95690d95690d95690d9 -5690da5690d95690da5690da5690d95690da5690d95690d95691da5690d95691da -5691da5690d95691da5690d95690d95690d95690d95690d95690d95691da5690d9 -5691da5691da5690da5691da5690da5690da5691da5690da5691da5691da5690d9 -5691da5690d95690d95690d95690d95690d95690d95690d95690d95690d95690d9 -5690d95690d95690d95690d95690da5690d95690da5690da5691da5690da5691da -5691da5690d95691da5690d95690d95690d95690d95690d95690d95690da5690d9 -5690da5690da5690d95690da5690d95690d95691da5690d95691da5691da5690d9 -5691da5690d95690d95690d95690d95690d95690d95691da5690d95691da5691da -5690da5691da5690da5690da5691da5690da5691da5691da5690d95691da5690d9 -5690d95690d95690d95690d95690d95690d95690d95690d95690d95690d95690d9 -5690d95690d95690da5690d95690da5690da5691da5690da5691da5691da5690d9 -5691da5690d95690d95690d95690d95690d95690d95690da5690d95690da5690da -5690d95690da5690d95690d95691da5690d95691da5691da5690d95691da5690d9 -5690d95690d95690d95690d95690d95691da5690d95691da5084c17595ba8eabcd -93b1d595b3d795b3d795b3d792afd286a1c15082bc4784cd4685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14684d0 -4685d14684d04684d04685d14684d04685d14685d14685d04685d14685d04685d0 -4685d14685d04685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d04685d14685d04685d04685d14685d04685d14685d14685d04685d1 -4685d04685d04685d14685d04685d14685d14685d14685d14685d14685d14684d0 -4685d14684d04684d04685d14684d04685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14684d04685d14684d0 -4684d04685d14684d04685d14685d14685d04685d14685d04685d04685d14685d0 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d0 -4685d14685d04685d04685d14685d04685d14685d14685d04685d14685d04685d0 -4685d14685d04685d14685d14685d14685d14685d14685d14684d04685d14684d0 -4684d04685d14684d04685d14685d14d81bf7695bb8fabce93b1d595b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c1 -4f81bb548fd65691da5690da5691da5690da5690da5691da5690da5691da5691da -5690d95691da5690d95690d95690d95690d95690d95690d95690d95690d95690d9 -5690d95690d95690d95690d95690d95690da5690d95690da5690da5691da5690da -5691da5691da5690d95691da5690d95690d95690d95690d95690d95690d95690da -5690d95690da5690da5690d95690da5690d95690d95691da5690d95691da5691da -5690d95691da5690d95690d95690d95690d95690d95690d95691da5690d95691da -5691da5690da5691da5690da5690da5691da5690da5691da5691da5690d95691da -5690d95690d95690d95690d95690d95690d95690d95690d95690d95690d95690d9 -5690d95690d95690d95690da5690d95690da5690da5691da5690da5691da5691da -5690d95691da5690d95690d95690d95690d95188cc5d86b889a5c692b0d395b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f5 -0000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d7 -95b3d795b3d795b3d793b0d48ca8ca678bb75086c7548fd9548fd9548ed8548fd9 -548ed8548ed8548fd8548ed8548fd8548fd8548fd9548fd8548fd9548fd9548fd8 -548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd9548fd9548fd9548fd9 -548fd9548fd9548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9 -548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9 -548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd8 -548fd8548fd8548fd8548fd9548fd8548fd9548fd9548ed8548fd9548ed8548ed8 -548fd8548ed8548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8 -548fd8548fd9548fd8548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9 -548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd8 -548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8 -548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd8548fd8548fd8 -548fd8548fd9548fd8548fd9548fd9548ed8548fd9548ed8548ed8548fd8548ed8 -548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9 -548fd8548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9 -548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8 -548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8 -548fd9548fd9548fd8548fd9548fd8548fd8548fd8548fd8548fd8548fd8548fd9 -548fd8548fd95083c17595ba8eabcd93b1d595b3d795b3d795b3d792afd286a1c1 -5081bc4382cb4283cf4282ce4283cf4282ce4282ce4282ce4282ce4282ce4282ce -4282cf4282ce4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf -4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282ce4282cf -4282ce4282ce4282cf4282ce4282cf4282cf4282ce4282cf4282ce4282ce4283cf -4282ce4283cf4283cf4282cf4283cf4282cf4282cf4282cf4282cf4282cf4282cf -4282cf4282cf4282cf4282cf4282ce4282cf4282ce4282ce4283cf4282ce4283cf -4283cf4282ce4283cf4282ce4282ce4282ce4282ce4282ce4282ce4282cf4282ce -4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf -4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282ce4282cf4282ce4282ce -4282cf4282ce4282cf4282cf4282ce4282cf4282ce4282ce4283cf4282ce4283cf -4283cf4282cf4283cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf -4282cf4282cf4282ce4282cf4282ce4282ce4283cf4282ce4283cf4283cf4c80bf -7695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d691aed185a0c14e81bb528dd5548fd9548ed8548fd9548ed8 -548ed8548fd8548ed8548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9 -548fd8548fd8548fd9548fd8548fd9548fd9548fd9548fd9548fd9548fd9548fd9 -548fd9548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9 -548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8 -548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd8548fd8 -548fd8548fd8548fd9548fd8548fd9548fd9548ed8548fd9548ed8548ed8548fd8 -548ed8548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8 -548fd9548fd8548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9 -548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9 -5087cc5d86b889a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -efefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7 -4f85c6528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7 -528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7 -528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528ed8528dd7 -528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8 -528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528ed8 -528dd7528ed8528ed8528dd7528ed8528dd7528dd7528ed8528dd7528ed8528ed8 -528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528ed8 -528dd7528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd75083c07595ba8eabcd93b1d5 -95b3d795b3d795b3d792afd286a1c14e80ba4b80be4a82c14a82c14a82c14a82c1 -4a82c14a81c14a82c14a81c14a81c14a82c14a81c14a82c14a82c14a81c14a82c1 -4a81c14a81c14a82c14a81c14a82c14a82c14a81c14a82c14a81c14a81c14a81c1 -4a81c14a81c14a81c14a82c14a81c14a82c14a82c14a81c14a82c14a81c14a81c1 -4a82c14a81c14a82c14a82c14a81c14a82c14a81c14a81c14a82c14a81c14a82c1 -4a82c14a81c14a82c14a81c14a81c14a81c14a81c14a81c14a81c14a82c14a81c1 -4a82c14a82c14a82c14a82c14a82c14a82c14a82c14a82c14a82c14a82c14a81c1 -4a82c14a81c14a81c14a82c14a81c14a82c14a82c14a81c14a82c14a81c14a81c1 -4a82c14a81c14a82c14a82c14a81c14a82c14a81c14a81c14a81c14a81c14a81c1 -4a81c14a82c14a81c14a82c14a82c14a81c14a82c14a81c14a81c14a82c14a81c1 -4a82c14a82c14a81c14a82c14a81c14a81c14a82c14a81c14a82c14a82c14a81c1 -4a82c14a81c14a81c14a81c14a81c14a81c14a81c14a82c14a81c14a82c14a82c1 -4a82c14a82c14a82c14a82c14a7ebb7896bb8fabce93b1d595b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14e81bb -518bd3528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528ed8 -528dd7528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8 -528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528ed8528dd7528ed8 -528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7 -528ed8528dd7528dd7528dd7528dd74f86cb5d86b889a5c692b0d395b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ff -b7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d7 -95b3d795b3d793b0d48ca8ca678bb74e84c64e8bd54e8bd54e8ad54e8bd54e8ad5 -4e8ad54e8bd54e8ad54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd64e8bd54e8bd64e8bd64e8bd5 -4e8bd64e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad5 -4e8bd54e8ad54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad5 -4e8ad54e8bd54e8ad54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd64e8bd5 -4e8bd64e8bd64e8bd54e8bd64e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd5 -4e8ad54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8bd64e8bd54e8bd64e8bd64e8bd54e8bd64e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad5 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd5 -4e8ad54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd64e8bd54e8bd64e8bd6 -4e8bd54e8bd64e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8bd64e8bd54e8bd64e8bd64e8bd54e8bd64e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad54e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd64e8bd54e8bd64e8bd64e8bd54e8bd6 -4e8bd54f83c07595ba8eabcd93b1d595b3d795b3d795b3d792afd287a2c3718cac -5e7fa45b7a9e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e5a799e -5a799e5a799e5a799e5a799e5a799e5a799e5a799e5b7a9e5e7da36986aa839dbd -8faccf93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d691aed185a0c14e81bb4d8ad24e8bd54e8ad54e8bd54e8ad54e8ad5 -4e8bd54e8ad54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd64e8bd54e8bd64e8bd64e8bd54e8bd6 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd5 -4e8ad54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad5 -4e8bd54e8ad54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd64e8bd54e8bd6 -4e8bd64e8bd54e8bd64e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad5 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8bd64e8bd54e8bd64e8bd64e8bd54e8bd64e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad54d85ca -5d86b889a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca -85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef -92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb74d83c5 -4c89d44c89d44c89d44c89d44c89d44c89d44c8ad54c89d44c8ad54c8ad54c8ad4 -4c8ad54c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c8ad44c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c8ad54c89d44c8ad54c8ad54c8ad44c8ad54c8ad4 -4c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c8ad4 -4c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c8ad54c89d44c8ad54c8ad54c8ad44c8ad54c8ad44c8ad44c89d4 -4c8ad44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c8ad44c89d44c8ad4 -4c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44f82c07595ba8eabcd93b1d595b3d7 -95b3d795b3d793b0d48aa6c76a8db75784b85883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b65883b65883b65883b65883b65883b65883b65883b65883b6 -5883b65883b65883b75d88b9839ec090aed194b2d695b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14e81bb4b88d1 -4c89d44c89d44c89d44c89d44c89d44c8ad54c89d44c8ad54c8ad54c8ad44c8ad5 -4c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c8ad44c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c8ad54c89d44c8ad54c8ad54c8ad44c8ad54c8ad44c8ad4 -4c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c8ad44c89d4 -4c8ad44c8ad44c89d44c8ad44c84ca5d86b889a5c692b0d395b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2 -f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d7 -95b3d793b0d48ca8ca678bb74c83c44a88d34a88d34a88d34a88d34a88d34a88d3 -4a87d34a88d34a87d34a87d34a87d24a87d34a87d24a87d24a88d34a87d24a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a87d34a88d34a87d34a87d34a88d34a87d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d34a87d34a87d34a87d3 -4a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d3 -4a87d34a87d34a87d24a87d34a87d24a87d24a88d34a87d24a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a87d34a88d34a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a87d34a88d34a87d34a87d34a87d34a87d34a87d34a87d34a88d3 -4a87d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d3 -4a87d24a87d34a87d24a87d24a88d34a87d24a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d3 -4a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a87d34a88d34a87d34a87d34a87d34a87d34a87d34a87d34a88d34a87d34a88d3 -4e82c07595ba8eabcd93b1d595b3d795b3d795b3d792b0d48ca8cb5484be7ca7e5 -80abe880abe880abe880abe880abe880ace980abe880ace980ace980ace980ace9 -80ace980ace980abe880ace980abe880abe880abe880abe880abe880abe880abe8 -80abe880abe880abe880abe880abe880abe880abe880abe880abe880abe880abe8 -80ace980abe880ace980ace980abe880ace980abe880abe880abe880abe880abe8 -80abe880abe980abe880abe980abe980abe880abe980abe880abe880abe880abe8 -80abe880abe880abe980abe880abe980abe980abe880abe980abe880abe880abe8 -80abe880abe880abe880ace980abe880ace980ace980ace980ace980ace980ace9 -80abe880ace980abe880abe880abe880abe880abe880abe880abe880abe880abe8 -80abe880abe880abe880abe880abe880abe880abe880abe880abe880ace980abe8 -80ace980ace980abe880ace980abe880abe880abe880abe880abe880abe880abe9 -80abe880abe980abe980abe880abe980abe880abe880abe880abe880abe880abe8 -80abe980abe880abe980abe980abe880abe980abe880abe85485c27c9cc391aed2 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d691aed185a0c14e81bb4a87d04a88d34a88d34a88d34a88d34a88d34a87d3 -4a88d34a87d34a87d34a87d24a87d34a87d24a87d24a88d34a87d24a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a87d34a88d34a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a87d34a88d34a87d34a87d34a87d34a87d34a87d34a87d3 -4a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d3 -4a87d34a87d24a87d34a87d24a87d24a88d34a87d24a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a87d3 -4a88d34a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d34a83c95d86b8 -89a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc8 -6e98c995b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb74b83c44887d2 -4887d24887d24887d24887d24887d24886d24887d24886d24886d24887d24886d2 -4887d24887d24886d24887d24886d24886d24886d24886d24886d24886d24887d2 -4886d24887d24887d24886d24887d24886d24886d24887d24886d24887d24887d2 -4886d24887d24886d24886d24886d14886d24886d14886d14887d24886d14887d2 -4887d24886d24887d24886d24886d24886d24886d24886d24886d24887d24886d2 -4887d24887d24886d24887d24886d24886d24887d24886d24887d24887d24887d2 -4887d24887d24887d24886d24887d24886d24886d24887d24886d24887d24887d2 -4886d24887d24886d24886d24886d24886d24886d24886d24887d24886d24887d2 -4887d24886d24887d24886d24886d24887d24886d24887d24887d24886d24887d2 -4886d24886d24886d14886d24886d14886d14887d24886d14887d24887d24886d2 -4887d24886d24886d24886d24886d24886d24886d24887d24886d24887d24887d2 -4886d24887d24886d24886d24887d24886d24887d24887d24887d24887d24887d2 -4887d24886d24887d24886d24886d24887d24886d24887d24887d24886d24887d2 -4886d24886d24886d24886d24886d24886d24887d24886d24887d24887d24886d2 -4887d24886d24886d24887d24886d24887d24887d24886d24887d24886d24886d2 -4886d14886d24886d14886d14887d24886d14887d24887d24886d24887d24886d2 -4886d24886d24886d24886d24886d24887d24886d24887d24887d24886d24887d2 -4886d24886d24887d24886d24887d24e82bf7595ba8eabcd93b1d595b3d795b3d7 -95b3d793b0d48aa6c85586bf88b2f196befd96bdfc96befd96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd -96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd96befd -96befd96bdfc96befd96bdfc96bdfc96befc96bdfc96befc96befc96befd96befc -96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd -96befd96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd -96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd96befd96befd96bdfc -96befd96bdfc96bdfc96befc96bdfc96befc96befc96befd96befc96befd96befd -96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd96befd -96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc -96befd96befd5788c57b9bc190add094b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14e81bb4886cf4887d2 -4887d24887d24887d24887d24886d24887d24886d24886d24887d24886d24887d2 -4887d24886d24887d24886d24886d24886d24886d24886d24886d24887d24886d2 -4887d24887d24886d24887d24886d24886d24887d24886d24887d24887d24886d2 -4887d24886d24886d24886d14886d24886d14886d14887d24886d14887d24887d2 -4886d24887d24886d24886d24886d24886d24886d24886d24887d24886d24887d2 -4887d24886d24887d24886d24886d24887d24886d24887d24887d24887d24887d2 -4887d24887d24886d24887d24886d24886d24887d24886d24887d24887d24886d2 -4887d24886d24886d24886d24886d24886d24886d24887d24886d24887d24887d2 -4886d24887d24886d24886d24887d24886d24887d24887d24886d24887d24886d2 -4886d24886d14886d24982c85d86b889a5c692b0d395b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d7 -93b0d48ca8ca678bb74a82c44684d04684d04685d14684d04685d14685d14685d1 -4685d14685d14685d14685d04685d14685d04685d04685d14685d04685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14684d0 -4685d14684d04684d04685d14684d04685d14685d14685d14685d14685d14685d1 -4684d04685d14684d04684d04685d14684d04685d14685d14685d14685d14685d1 -4685d14685d04685d14685d04685d04685d14685d04685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14684d04685d14684d0 -4684d04685d14684d04685d14685d14685d14685d14685d14685d14684d04685d1 -4684d04684d04685d14684d04685d14685d14685d14685d14685d14685d14685d0 -4685d14685d04685d04685d14685d04685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14684d04685d14684d04684d04685d1 -4684d04685d14685d14685d14685d14685d14685d14684d04685d14684d04e82bf -7595ba8eabcd93b1d595b3d795b3d795b3d792b0d388a3c45485be86b1ef94bcfb -94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb94bcfc -94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb -94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb94bcfc94bcfc94bcfb -94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb5788c57998bd8faccf93b1d5 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -91aed185a0c14e81bb4683cd4684d04685d14684d04685d14685d14685d14685d1 -4685d14685d14685d04685d14685d04685d04685d14685d04685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14684d04685d1 -4684d04684d04685d14684d04685d14685d14685d14685d14685d14685d14684d0 -4685d14684d04684d04685d14684d04685d14685d14685d14685d14685d14685d1 -4685d04685d14685d04685d04685d14685d04685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14882c85c86b889a5c6 -92b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c9 -95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb74981c34484d04484d0 -4483cf4484d04483cf4483cf4484d04483cf4484d04484d04484d04484d04484d0 -4484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d04483cf4484d0 -4483cf4483cf4484d04483cf4484d04484d04483d04484d04483d04483d04483cf -4483d04483cf4483cf4483cf4483cf4483cf4483cf4484d04483cf4484d04484d0 -4483cf4484d04483cf4483cf4484d04483cf4484d04484d04484d04484d04484d0 -4484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d04483cf4484d0 -4483cf4483cf4484d04483cf4484d04484d04484d04484d04484d04484d04483cf -4484d04483cf4483cf4484d04483cf4484d04484d04483cf4484d04483cf4483cf -4484d04483cf4484d04484d04483d04484d04483d04483d04483cf4483d04483cf -4483cf4483cf4483cf4483cf4483cf4484d04483cf4484d04484d04483cf4484d0 -4483cf4483cf4484d04483cf4484d04484d04484d04484d04484d04484d04483cf -4484d04483cf4483cf4484d04483cf4484d04484d04483cf4484d04483cf4483cf -4484d04483cf4484d04484d04484d04484d04484d04484d04483cf4484d04483cf -4483cf4484d04483cf4484d04484d04483cf4484d04483cf4483cf4484d04483cf -4484d04484d04483d04484d04483d04483d04483cf4483d04483cf4483cf4483cf -4483cf4483cf4483cf4484d04483cf4484d04484d04483cf4484d04483cf4483cf -4484d04483cf4484d04484d04484d04484d04484d04484d04483cf4484d04483cf -4483cf4484d04483cf4484d04d82bf7595ba8eabcd93b1d595b3d795b3d795b3d7 -92afd286a2c25485be83aeee90b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990bafa -90b9f990bafa90bafa90b9f990bafa90b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990baf990b9f990baf990baf990b9f990baf990b9f9 -90b9f990baf990b9f990baf990baf990b9f990baf990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f98fb8f87293c684aae590b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f98db6f54d63856886b490bafa90b9f990bafa -90bafa90b9f990bafa90b9f990b9f989b0ed485d7d6a89b890b9f990b9f990b9f9 -90b9f990b9f990baf990b9f990baf990baf990b9f990baf990b9f990b9f990baf9 -90b9f990baf990baf990b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f95788c47796bc8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d691aed185a0c14e80bb4483cd4484d04483cf -4484d04483cf4483cf4484d04483cf4484d04484d04484d04484d04484d04484d0 -4483cf4484d04483cf4483cf4484d04483cf4484d04484d04483cf4484d04483cf -4483cf4484d04483cf4484d04484d04483d04484d04483d04483d04483cf4483d0 -4483cf4483cf4483cf4483cf4483cf4483cf4484d04483cf4484d04484d04483cf -4484d04483cf4483cf4484d04483cf4484d04484d04484d04484d04484d04484d0 -4483cf4484d04483cf4483cf4484d04483cf4484d04484d04483cf4484d04483cf -4483cf4484d04483cf4484d04484d04484d04484d04484d04484d04483cf4484d0 -4483cf4483cf4484d04483cf4484d04484d04483cf4484d04483cf4483cf4484d0 -4483cf4484d04484d04483d04484d04483d04483d04483cf4483d04483cf4483cf -4483cf4483cf4781c75c86b889a5c692b0d395b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b0d4 -8ca8ca678bb74981c24281c94281c94281c94281c94281c94281c94280c94281c9 -4280c94280c94281c94280c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94281c94281c94281c94281c94281c94280c94281c94280c94280c9 -4281c94280c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94280c94281c94280c94280c94281c94280c94281c94281c94281c9 -4281c94281c94281c94281c94281c94281c94281c94280c94281c94280c94280c9 -4281c94280c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94281c94281c94281c94280c94281c94280c94280c94281c94280c9 -4281c94281c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4280c94281c94280c94280c94281c94280c94281c94281c94281c94281c94281c9 -4281c94281c94281c94281c94281c94280c94281c94280c94280c94281c94280c9 -4281c94281c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94281c94280c94281c94280c94280c94281c94280c94281c94281c9 -4281c94281c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94281c94281c94281c94281c94281c94281c94281c94280c94281c9 -4280c94280c94281c94280c94281c94281c94281c94281c94281c94b7fbc7595ba -8eabcd93b1d595b3d795b3d795b3d792afd286a1c15485be81aeed8eb8f88eb7f8 -8eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb7f88eb8f888b0ef40526f161d270507091c25326785b38eb7f78eb8f88eb7f7 -8eb7f78eb8f88eb7f78eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f8 -83aae67293c88bb5f48eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f8 -8eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f87395c900000033435a8eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f8 -8eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f885ace8 -0000003241588eb8f88eb7f88eb8f88eb8f88eb7f78eb8f88eb7f78eb7f77a9ed5 -0000003b4c678eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f8 -8eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f8 -8eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f85688c47695bb8fabce93b1d595b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed1 -85a0c14d80bb4281c94281c94281c94281c94281c94281c94280c94281c94280c9 -4280c94281c94280c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94281c94281c94281c94281c94280c94281c94280c94280c94281c9 -4280c94281c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94280c94281c94280c94280c94281c94280c94281c94281c94281c94281c9 -4281c94281c94281c94281c94281c94281c94280c94281c94280c94280c94281c9 -4280c94281c94281c94281c94281c94281c94281c94281c94281c94281c94281c9 -4281c94281c94281c94281c94280c94281c94280c94280c94281c94280c94281c9 -4281c94281c94281c94281c94281c94281c94281c9457fc45b86b889a5c692b0d3 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e6 -2222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d7 -95b3d795b3d795b3d795b3d793b0d48ca9cb7894b64e7fba4f80b84f80b74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f80b85281b97d99bb8fabce93b1d595b3d795b3d795b3d792afd2 -86a1c15484be7eabeb8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f5 -8ab5f58ab5f68ab5f58ab5f68ab5f68ab5f688b3f41d27350000001e27363c4e6b -1d27352834478ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f6 -8ab5f58ab5f68ab5f68ab5f68ab5f64358780000006d90c38ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f58ab5f68ab5f58ab5f58ab5f685aeec4c64886d8fc28ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f6 -8ab5f58ab5f68ab5f68ab5f681a9e60000003140578ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f6779cd3000000394b658ab5f58ab5f68ab5f58ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f5 -8ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -5687c47695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d691aed186a1c15c85b54f80b94f80b74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb74f7fb7 -4f80b84f80ba6e8db38aa6c792b0d395b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b1d58eabcd -819bbb738aa66b819b697f98697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697f986c829c768daa85a0c090add0 -94b2d695b3d795b3d795b3d792afd286a1c15484be7caaea88b3f488b4f588b3f4 -88b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b4f5 -56739c00000028344886b1f288b4f588b3f4769bd488b4f5485f82455b7c88b4f5 -88b3f4516b923d506e88b3f482aceb465d7f2a384c34455e7296cd6586b61c2533 -0000002f3e554e678d88b4f583aeed4a61852e3d5334445d5c79a588b3f488b3f4 -6586b63a4d69789ed8394b672e3d53698bbe7499d134455e32425a6c90c488b3f4 -80a9e6394b665d7ba888b3f4526c933b4d6a3b4d6a3b4e6a5c79a588b4f581abe9 -455b7c2c3a4f3b4d6a759ad288b4f588b3f4789ed83a4c683040575f7eab000000 -30405788b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f5759ad2000000 -384a6588b3f488b4f55e7ca93547612d3c52485e8182aceb88b3f44f688e3b4e6a -86b0f188b4f558759f394b6681abe988b3f46281b03749637ca3de88b3f488b3f4 -88b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f4 -88b3f488b3f488b3f488b3f488b3f45687c47695bb8fabce93b1d595b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d692afd288a4c5 -7891ae6d839e697f98697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97697e97 -697e97697e97697e97697e97697e976a809a7188a37e98b68ca8ca93b0d495b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f5 -0000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d7 -95b3d795b3d795b3d794b2d691aed189a4c67f99b87a92b07891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7a93b1819bba8ba7c992afd294b2d695b3d795b3d795b3d792afd286a1c1 -5384be79a8e984b1f384b1f384b1f384b1f384b1f384b1f384b1f384b1f384b1f3 -84b1f284b1f384b1f284b1f284b0f232445d0000005d7caa84b1f384b0f284b1f3 -84b1f384b1f3151c2710151d84b1f384b0f2232f4002030484b0f2374a65030405 -3b4f6c2e3d544c668d526e960a0e1400000011172031425b82aff01c2635010101 -2532451319230000004b658b84b1f3455d800000000a0e13121822000000080b0f -080b101218220000000a0d137fabea7198d100000036496484b1f3384c68171f2b -0f141b000000374a6582aff11a23300a0e14384b670e131a080b107aa3df80aced -0f141c01010118202c0203040000002f3e5684b1f384b0f284b1f384b1f384b1f3 -84b1f384b1f384b1f37197d000000036496484b0f247608300000018202c222d3e -0000001f2a3984b1f3394d69000000678abd84b1f2161d280000005b7aa784b1f3 -2532450506097fabeb84b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f2 -84b1f384b1f384b1f284b1f384b1f284b1f284b1f384b1f284b1f384b1f35587c4 -7695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d793b0d48daacc849ebe7c95b37992af7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae -7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7891ae7a92b0 -7e98b687a2c390add093b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -efefef92abc86e98c995b3d795b3d795b3d795b3d795b3d795b3d792b0d489a8ce -7398c37195c07195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195c0819fc488a4c589a5c689a5c689a5c6 -89a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c6 -89a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c6 -89a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c6 -89a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c6 -89a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c689a5c6 -89a5c689a5c689a5c689a5c689a5c689a5c68aa6c78da9cc91aed194b2d695b3d7 -95b3d795b3d795b3d792afd286a1c15384be78a6e782aff182aff182aff182aff1 -82aff182aff182aff182aff182aff182b0f282aff182b0f282b0f282b0f2202b3b -0000006b90c782aff182b0f282aff182aff182aff2141c260f151d82aff282aff1 -222e4002030482aff1212c3d080a0f6b91c882b0f282aff182b0f23f5576000000 -678bbf82aff15b7baa0000003e547482aff17ca8e7080b0f11172082b0f2445c7f -00000041577882aff132445e000000425a7c82aff131435d0000006a8ec47097d0 -00000036486482aff182aff181aef0202b3c0405076f95ce5c7cac000000516d96 -82aff15978a50000004f6b945978a50000003c527082b0f25a7aa80000002d3e55 -82aff182b0f282aff182aff182aff282aff182aff282aff27096cf000000364864 -80acee06080c151c2780adef82b0f22d3d55000000688cc15e7faf00000042597a -769fdc0000000000003649657faced06080b26344781aff17097d07097d07097d0 -80adef82aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff1 -82aff182aff182aff182aff15586c37695bb8fabce93b1d595b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691afd283a3c8 -7397c27195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf7195bf -7195bf7195bf7195bf7195bf7296c17397c28eabcf93b0d494b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ff -b7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d7 -95b3d795b3d794b2d693b0d45c8bc35285c16595d06594d06595d06594d06594d0 -6594d06594d06594d06594d06594d06594d06594d06594d06595d06594d06595d0 -6595d06594d06595d06594d06594d06595d06594d06595d06595d06594d06595d0 -6594d06594d06594d06594d06594d06594d06594d06594d06594d06594d06594d0 -6594d06594d06594d06595d06594d06595d06595d06594d06595d06594d06594d0 -6594d06594d06594d06594d06595d06594d06595d06595d06595d06595d06595d0 -6595d06595d06595d06595d06595d06594d06595d06594d06594d06594d06594d0 -6594d06594d06594d06594d06594d06594d06595d06594d06595d06595d06594d0 -6595d06594d06594d06595d06594d06595d06595d06594d06595d06594d06594d0 -6594d06594d06594d06594d06594d06594d06594d06594d06594d06594d06594d0 -6594d06595d06594d06595d06595d06594d06595d06594d06594d06594d06594d0 -6594d06594d06595d06594d06595d06595d06595d06595d06595d06595d0588ac6 -5485bf8fadcf91afd292b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d3 -92b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d3 -92b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d3 -92b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d3 -92b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d3 -92b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d392b0d3 -92b0d393b0d494b2d695b3d795b3d795b3d795b3d795b3d792afd286a1c15384be -76a5e780aef180aef080aef180aef080aef080aef080aef080aef080aef080aef0 -80aef080aef080aef080aef028374c0000005f81b280aef180aef080aef180aef1 -80aef0141b260f151d80aef080aef1222e4002030480aef15878a6040507000000 -212d3f6f97d080aef03e5575000000658abf80aef0455e820000005a7aa980aef1 -80aef01d27360102027fadef435c7f0000005f82b480aef0425a7c0000006184b7 -80aef141587a0000006286b96e95cf00000035486380aef180aef04c6890000000 -445c8080aef146608400000004060806080b050609000000455e81466084000000 -5a7baa80aef077a3e00000002d3e5580aef180aef080aef180aef180aef080aef1 -80aef080aef06e96cf0000003548646f98d20000002f405980aef080aef0486287 -0000005676a27ca9ea06080b1e283854739f0203042532451319236285b8000000 -4c678f6286b9000000000000000000678dc280aef180aef180adf080aef180adf0 -80adf080aef080adf080aef080aef080aef180aef080aef180aef15486c37695bb -8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d691afd24b7fbb5e8ecb6595d06594d06595d06594d06594d0 -6594d06594d06594d06594d06594d06594d06594d06594d06595d06594d06595d0 -6595d06594d06595d06594d06594d06595d06594d06595d06595d06594d06595d0 -6594d06594d06594d06594d06594d06594d06594d06594d06594d06594d06594d0 -6594d06594d06594d06595d06594d06595d06595d06594d06595d06594d06594d0 -6594d06594d06594d06594d06595d06594d06595d06595d06595d06595d06595d0 -6595d06595d06595d06595d06595d06594d06595d06594d06594d06594d06594d0 -6594d06594d06594d06594d06594d06594d06595d06594d06595d06595d06594d0 -6595d06594d06594d06595d06594d06595d06595d06594d06595d06594d06594d0 -6594d06594d06594d06594d06594d06594d06594d06594d06594d06594d04a7ebb -6a93c593b0d494b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca -85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef -92abc86e98c995b3d795b3d795b3d795b3d795b3d793b1d58faccf5e8ac181ace9 -98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffe98bffe -98bffe98bffe98bffd98bffe98bffd98bffd98befd98bffd98befd98befd98bffd -98befd98bffd98bffd98befd98bffd98befd98befd98bffd98befd98bffd98bffd -98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd98bffd98bffd98bffd -98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffe98bffe98bffe98bffe -98bffd98bffe98bffd98bffd98befd98bffd98befd98befd98bffd98befd98bffd -98bffd98befd98bffd98befd98befd98bffd98befd98bffd98bffd98bffe98bffd -98bffe98bffe98bffd98bffe98bffd98bffd98bffd98bffd98bffd98bffd98bffe -98bffd98bffe98bffe98bffd98bffe98bffd98bffd98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffd89b2f05887c08eabcd93b1d595b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d792afd286a1c15384bd73a3e57cabee7cabef7cabee7cabef7cabef -7cabee7cabef7cabee7cabee7cabee7cabee7cabee7cabee7cabee3c5374000000 -3347627cabee7cabee7cabee79a7e97cabee151e2a0a0e147cabee7cacef1c2636 -0203047cacef7cabee709bd83c53740001012533477cabee3c53740000006186bb -7cabee48648c0000004e6c977cabee7cabee1219230b10167cabee415a7e000000 -5c80b27cabee40597c0000005e82b67cabee3f577a0000005f84b76a93cd000000 -3347627cabee6e98d4070a0e17202d7aa8eb7cabee4a67900000004762896890c9 -6890c86990c979a6e848648c0000004e6b967cabee6f9ad60000002c3d547cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee6a94ce000000334763729edc -0000002533487cabee7cabee3b52720000005e82b57cabee26354a0203042c3d54 -1c26364b689100000030425c0000006e98d378a5e65a7cad5a7cad5a7dae79a6e8 -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee5486c37695bb8fabce93b1d595b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d793b0d48eabcd5284be8eb7f5 -98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffe98bffe -98bffe98bffe98bffd98bffe98bffd98bffd98befd98bffd98befd98befd98bffd -98befd98bffd98bffd98befd98bffd98befd98befd98bffd98befd98bffd98bffd -98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd98bffd98bffd98bffd -98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffe98bffe98bffe98bffe -98bffd98bffe98bffd98bffd98befd98bffd98befd98befd98bffd98befd98bffd -98bffd98befd98bffd98befd98befd98bffd98befd98bffd98bffd98bffe98bffd -98bffe98bffe98bffd98bffe78a3e1648fc190add093b1d595b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2 -f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d7 -95b3d792b0d38ba7c85c88be80abe996befd96bdfc96befd96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd -96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd96befd -96befd96bdfc96befd96bdfc96bdfc96befc96bdfc96befc96befc96befd96befc -96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd -96befd96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd -96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd96befd96befd96bdfc -96befd96bdfc96bdfc96befc96bdfc96befc96befc96befd96befc96befd96befd -96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd96befd -96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc87b1f05786bf -89a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d792afd286a1c15384bd71a2e4 -7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaee7aaaed -7aaaee7aaaee7aaaed6f9bd906090d0000002d3f584662892f425c2331447aaaed -2432460000003c54752e405b0000000203047aa9ed445f856085bb648bc407090d -212e417aa9ed435e830000002f425c5577a6668ec6010202151d28577aaa3e5678 -0000003246627aa9ed405a7d0000005b7eb17aaaed3f587b0000005d82b67aa9ed -3e577a0000005e83b76992cd0000003246627aaaed28384f0000003449664b6892 -587cac668ec70101021c27366085ba6289bf47638a6e99d6638bc2000000141c28 -4e6d981b26350000002b3c537aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed6991cc0000003246627aa9ed161f2b0304064a669052719f0a0e140d131a -76a4e57aaaed49668f0000000102023a52726c96d2000000010102161f2b7aaaed -7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaee7aa9ed7aaaee7aaaee -7aaaed7aaaee7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed5486c37695bb8fabce -93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d692afd289a4c65283bd8cb6f596befd96bdfc96befd96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd -96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd96befd -96befd96bdfc96befd96bdfc96bdfc96befc96bdfc96befc96befc96befd96befc -96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd -96befd96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd -96bdfc96bdfc96befd96bdfc96befd96befd96befd96befd96befd96befd96bdfc -96befd96bdfc96bdfc96befc96bdfc96befc96befc96befd96befc77a3e1618abc -8ca9cb93b0d495b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc8 -6e98c995b3d795b3d795b3d795b3d795b3d792afd288a3c45a87bd7ea9e894bcfb -94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb94bcfc -94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb -94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb94bcfc94bcfc94bcfb -94bcfc94bcfb94bcfb85afee5685be87a2c392afd295b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d792afd286a1c15383bd6ea0e276a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb5e84bb18212f -000101000000080c1148668f76a6ea5c82b7070b0f00000017202e2d405a040508 -76a7eb2a3b530000000000000e141c5d84ba76a7eb6893cf0c11180000001f2b3d -76a6ea47648d06090c00000001010227384f6f9cdd76a7eb405b810000005a80b4 -76a6eb3f5a7f0000005c82b876a7eb3e587c0000005d83b96792ce000000334865 -76a7eb161f2c0000000000000000001c283976a7eb47648d06090d000000000000 -0c11186893cf76a7eb374e6e0101020001012b3e57141c282b3d5676a7eb76a6ea -76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea6792ce00000033486676a7eb6088c0 -141c28000000000000131b265d84ba76a7eb76a7eb6995d2020305000000597db1 -76a7eb161f2c0000003b537576a6eb76a7eb76a6eb76a6eb76a7eb76a6eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea -76a7eb76a7eb5385c27695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d691aed186a1c15183bd8bb5f394bcfb -94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb94bcfc -94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb -94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb75a2e05f88ba8aa6c792b0d395b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d7 -92afd287a2c35a86bc7ca7e690b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990bafa -90b9f990bafa90bafa90b9f990bafa90b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990baf990b9f990baf990baf990b9f990baf990b9f9 -90b9f990baf990b9f990baf990baf990b9f990baf990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990bafa90b9f990bafa -90bafa90b9f990bafa90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990baf990b9f990baf990baf990b9f990baf990b9f990b9f990baf9 -90b9f990baf990baf990b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f982aded5685be86a2c2 -92afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d792afd286a1c15383bd6c9fe174a6ea -74a5e974a6ea74a5e974a5e974a5ea74a5e974a5ea74a5ea74a6ea74a5ea74a6ea -74a6ea74a5ea74a6ea74a5ea74a5ea6f9fe06792d073a4e874a6ea74a6ea74a6ea -72a3e66996d374a6ea73a5e971a2e574a6ea74a5ea6a98d66692cf73a3e874a6ea -74a5ea74a6ea72a4e76792d071a2e574a5ea74a5ea73a5e96792d070a1e374a6ea -74a5ea74a6ea74a5ea70a0e374a6ea74a5ea74a6ea71a2e474a6ea74a6ea74a6ea -71a2e474a5ea74a6ea71a1e473a4e974a6ea74a5ea74a6ea74a6ea74a5e974a6ea -74a5e974a5e973a4e96792cf6995d374a5ea74a6ea74a5ea74a6ea6e9edf6d9bdc -74a6ea72a2e673a3e874a6ea74a5ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea -74a6ea71a2e473a5e974a6ea74a5ea74a6ea6b98d86b98d874a6ea74a5ea74a6ea -74a6ea74a5ea72a3e671a1e474a5ea74a6ea73a4e970a0e274a6ea74a5ea74a6ea -74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a5ea -74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea5385c27695bb8fabce93b1d5 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -91aed185a0c15183bd87b2f190b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990bafa -90b9f990bafa90bafa90b9f990bafa90b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990baf990b9f990baf990baf990b9f990baf990b9f9 -90b9f990baf990b9f990baf990baf990b9f990baf990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990bafa90b9f990bafa -90bafa90b9f990bafa90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990baf990b9f990baf990baf990b9f990baf973a0df5f87b989a5c6 -92b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c9 -95b3d795b3d795b3d795b3d795b3d792afd287a2c35a86bc7aa7e68eb8f88eb7f8 -8eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb7f78eb8f88eb7f7 -8eb7f78eb8f88eb7f78eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f8 -8eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f8 -8eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f8 -8eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f8 -8eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb7f78eb8f88eb7f78eb7f78eb8f8 -8eb7f78eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f8 -8eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f8 -8eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f881acec5584be86a2c292afd295b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -92afd286a1c15283bd699ce070a2e870a3e870a2e870a3e870a3e870a2e770a3e8 -70a2e770a2e770a3e870a2e770a3e870a3e870a2e770a3e870a2e770a2e770a2e7 -70a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e7 -70a3e870a2e770a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e8 -70a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e870a3e870a2e770a3e8 -70a2e770a2e770a2e770a2e770a2e770a2e770a3e870a2e770a3e870a3e870a2e8 -70a3e870a2e870a2e870a3e870a2e870a3e870a3e870a2e770a3e870a2e770a2e7 -70a3e870a2e770a3e870a3e870a2e770a3e870a2e770a2e770a2e770a2e770a2e7 -70a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a3e870a2e7 -70a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e870a3e870a2e7 -70a3e870a2e770a2e770a3e870a2e770a3e870a3e870a2e770a3e870a2e770a2e7 -70a2e770a2e770a2e770a2e770a3e870a2e770a3e870a3e870a2e870a3e870a2e8 -70a2e85285c27695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d691aed185a0c15183bd85b1f08eb8f88eb7f8 -8eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb7f88eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb7f78eb8f88eb7f7 -8eb7f78eb8f88eb7f78eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f8 -8eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f8 -8eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f8 -8eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f8 -8eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb7f78eb8f88eb7f78eb7f78eb8f8 -8eb7f78eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f88eb7f8 -8eb8f88eb7f8729fde5f87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd2 -87a2c35a86bc79a6e58cb7f78cb7f78cb7f78cb7f78cb7f78cb6f78cb7f78cb6f7 -8cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f7 -8cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f7 -8cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f7 -8cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f7 -8cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb7f78cb7f7 -8cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f7 -8cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f7 -8cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f78cb6f78cb6f7 -8cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f7 -8cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f7 -8cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f77fabeb5584be86a2c292afd2 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d792afd286a1c15283bd679bdf6ea1e76ea1e6 -6ea1e76ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e6 -6ea1e76ea1e66ea1e76ea1e76ea1e76ea1e76ea1e76ea1e76ea2e76ea1e76ea2e7 -6ea2e76ea1e76ea2e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e66ea1e7 -6ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e6 -6ea1e76ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea2e76ea1e76ea2e76ea2e7 -6ea2e76ea2e76ea2e76ea2e76ea1e76ea2e76ea1e76ea1e76ea1e66ea1e76ea1e6 -6ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e76ea1e6 -6ea1e76ea1e76ea1e76ea1e76ea1e76ea1e76ea2e76ea1e76ea2e76ea2e76ea1e7 -6ea2e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e66ea1e76ea1e66ea1e6 -6ea1e76ea1e66ea1e76ea1e76ea1e76ea1e76ea1e76ea1e76ea1e66ea1e76ea1e6 -6ea1e66ea1e76ea1e66ea1e76ea1e76ea2e76ea1e76ea2e76ea2e76ea2e76ea2e7 -6ea2e76ea2e76ea1e76ea2e76ea1e76ea1e75284c27695bb8fabce93b1d595b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed1 -85a0c15183bd83b0ef8cb7f78cb7f78cb7f78cb7f78cb7f78cb6f78cb7f78cb6f7 -8cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f7 -8cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f7 -8cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f7 -8cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f7 -8cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb7f78cb7f7 -8cb7f78cb7f78cb7f78cb7f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f7 -8cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f7 -8cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f78cb6f78cb6f7 -8cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f7719ede5f87b989a5c692b0d3 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e6 -2222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d7 -95b3d795b3d795b3d795b3d792afd287a2c35a86bc77a5e48ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab4f58ab5f68ab4f58ab4f58ab5f68ab4f58ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f5 -8ab5f58ab5f68ab5f58ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f5 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f5 -8ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab4f58ab5f68ab4f58ab4f58ab5f68ab4f58ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f6 -8ab5f58ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f5 -8ab5f57daaea5584bd86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792afd2 -86a1c15283bd6498dc6a9ee46a9ee46a9ee46a9ee46a9ee46a9fe56a9ee46a9fe5 -6a9fe56a9fe56a9fe56a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee46a9fe56a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee46a9fe56a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9fe5 -6a9fe56a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9fe56a9ee46a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -5284c17695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d691aed185a0c15183bd82aeef8ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab4f58ab5f68ab4f58ab4f58ab5f68ab4f58ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f5 -8ab5f58ab5f68ab5f58ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f5 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f5 -8ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab4f58ab5f68ab4f58ab4f58ab5f68ab4f58ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f6 -8ab5f5709edd5f87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c3 -5986bc76a4e388b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b3f588b4f588b3f588b3f588b3f488b3f588b3f488b3f488b4f588b3f488b4f5 -88b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f4 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f4 -88b4f588b3f488b4f588b4f588b3f588b4f588b3f588b3f588b4f588b3f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b3f588b4f5 -88b3f588b3f588b3f488b3f588b3f488b3f488b4f588b3f488b4f588b4f588b4f5 -88b4f588b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f4 -88b4f588b4f588b3f588b4f588b3f588b3f57ca9ea5584bd86a2c292afd295b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d792afd286a1c15283bd6298dc689de4689de3689de4 -689de3689de3689de3689de3689de3689de3689ce3689de3689ce3689ce3689de4 -689ce3689de4689de4689de3689de4689de3689de3689de4689de3689de4689de4 -689de4689de4689de4689de4689de3689de4689de3689de3689de3689de3689de3 -689de3689de4689de3689de4689de4689de3689de4689de3689de3689de4689de3 -689de4689de4689de4689de4689de4689de4689de3689de4689de3689de3689de3 -689de3689de3689de3689de4689de3689de4689de4689de3689de4689de3689de3 -689de3689de3689de3689de3689ce3689de3689ce3689ce3689de4689ce3689de4 -689de4689de3689de4689de3689de3689de4689de3689de4689de4689de4689de4 -689de4689de4689de3689de4689de3689de3689de3689de3689de3689de3689de4 -689de3689de4689de4689de3689de4689de3689de3689de4689de3689de4689de4 -689de4689de4689de4689de4689de3689de4689de3689de3689de3689de3689de3 -689de3689de4689de3689de4689de45184c17695bb8fabce93b1d595b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c1 -5183bd80aeee88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b3f588b4f588b3f588b3f588b3f488b3f588b3f488b3f488b4f588b3f488b4f5 -88b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f4 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f4 -88b4f588b3f488b4f588b4f588b3f588b4f588b3f588b3f588b4f588b3f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b3f588b4f5 -88b3f588b3f588b3f488b3f588b3f488b3f488b4f588b3f488b4f588b4f588b4f5 -88b4f588b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f56e9ddd5f87b989a5c692b0d395b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f5 -0000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d7 -95b3d795b3d795b3d792afd287a2c35986bc75a2e386b2f486b2f386b2f486b2f3 -86b2f386b2f386b2f386b2f386b2f386b2f486b2f386b2f486b2f486b3f486b2f4 -86b3f486b3f486b2f386b3f486b2f386b2f386b2f486b2f386b2f486b2f486b2f3 -86b2f486b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f386b2f3 -86b2f386b2f386b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f3 -86b2f386b2f486b2f386b2f486b2f486b2f486b2f486b2f486b2f486b2f386b2f4 -86b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f386b2f386b2f3 -86b2f386b2f386b2f386b2f486b2f386b2f486b2f486b3f486b2f486b3f486b3f4 -86b2f386b3f486b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f3 -86b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f386b2f386b2f386b2f3 -86b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f386b2f386b2f4 -86b2f386b2f486b2f486b2f486b2f486b2f486b2f486b2f386b2f486b2f386b2f3 -7aa7e95584bd86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792afd286a1c1 -5283bd5f95da649ae1649be1649ae1649be1649be1649ae1649be1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649be2649ae1649be2649be2649ae1649be2649ae1649ae1649ae1649ae1649ae1 -649ae1649be1649ae1649be1649be1649ae1649be1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649be2649ae1 -649be2649be2649ae1649be2649ae1649ae1649ae1649ae1649ae1649ae15184c1 -7695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d691aed185a0c15183bd7eaced86b2f486b2f386b2f486b2f3 -86b2f386b2f386b2f386b2f386b2f386b2f486b2f386b2f486b2f486b3f486b2f4 -86b3f486b3f486b2f386b3f486b2f386b2f386b2f486b2f386b2f486b2f486b2f3 -86b2f486b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f386b2f3 -86b2f386b2f386b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f3 -86b2f386b2f486b2f386b2f486b2f486b2f486b2f486b2f486b2f486b2f386b2f4 -86b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f386b2f386b2f3 -86b2f386b2f386b2f386b2f486b2f386b2f486b2f486b3f486b2f486b3f486b3f4 -86b2f386b3f486b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f3 -86b2f386b2f486b2f386b2f486b2f486b2f386b2f486b2f386b2f386b2f386b2f3 -6d9cdc5e87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -efefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c35986bb -72a1e182b0f282aff182b0f282aff182aff182aff282aff182aff282aff282aff1 -82aff282aff182aff182aff182aff182aff182aff182b0f282aff182b0f282b0f2 -82aff182b0f282aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff1 -82aff182aff182aff182aff182aff182b0f282aff182b0f282b0f282b0f282b0f2 -82b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f282b0f282aff1 -82b0f282aff182aff182aff182aff182aff182aff182b0f282aff182b0f282b0f2 -82aff182b0f282aff182aff182aff282aff182aff282aff282aff182aff282aff1 -82aff182aff182aff182aff182aff182b0f282aff182b0f282b0f282aff182b0f2 -82aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff1 -82aff182aff182aff182b0f282aff182b0f282b0f282b0f282b0f282b0f282b0f2 -82aff182b0f282aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff1 -82aff182aff182aff182aff182aff177a6e75584bd86a2c292afd295b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d792afd286a1c15283bd5d93d96298e06299e06298e06299e0 -6299e06299e06299e06299e06299e06298e06299e06298e06298e06299e06298e0 -6299e06299e06299e16299e06299e16299e16299e06299e16299e06299e06299e0 -6299e06299e06299e06299e06299e06299e06299e06299e06299e06299e06299e0 -6299e06299e05d91d5314d714871a66299e06299e06299e06299e06299e06299e0 -6299e06298e06299e06298e06298e06299e06298e06299e06299e06299e06299e0 -6299e06299e06298e06299e05d90d5314c714871a66298e06299e06299e06299e0 -4e7ab3314c70588aca6197df4e79b25a8cce6298e03d608d3857806299e06299e0 -6299e16299e06299e16299e16299e06299e16299e06299e06299e06299e06299e0 -6299e06299e06299e06299e06299e06299e06299e06299e06299e06299e06299e0 -6299e06299e06299e06299e06299e06299e06299e06299e06299e06299e06298e0 -6299e06298e06298e06299e06298e06299e06299e06299e06299e06299e06299e0 -6298e06299e06298e06298e05183c17695bb8fabce93b1d595b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c15182bd -7baaeb82b0f282aff182b0f282aff182aff182aff282aff182aff282aff282aff1 -82aff282aff182aff182aff182aff182aff182aff182b0f282aff182b0f282b0f2 -82aff182b0f282aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff1 -82aff182aff182aff182aff182aff182b0f282aff182b0f282b0f282b0f282b0f2 -82b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f282b0f282aff1 -82b0f282aff182aff182aff182aff182aff182aff182b0f282aff182b0f282b0f2 -82aff182b0f282aff182aff182aff282aff182aff282aff282aff182aff282aff1 -82aff182aff182aff182aff182aff182b0f282aff182b0f282b0f282aff182b0f2 -82aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff1 -82aff182aff182aff182b0f282aff16b9bdb5e87b989a5c692b0d395b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ff -b7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d7 -95b3d795b3d792afd287a2c35986bb70a0e080aef080aef180aef080aef180aef1 -80adf080aef180adf080adf080aef180adf080aef180aef180aef080aef180aef0 -80aef080aef080aef080aef080aef080aef080aef080aef080aef080aef180aef0 -80aef180aef180adf080aef180adf080adf080aef080adf080aef080aef080aef0 -80aef080aef080aef080adf080aef080adf080adf080aef080adf080aef080aef0 -80aef080aef080aef080aef080aef080aef080aef080aef080aef180aef080aef1 -80aef180aef080aef180aef080aef080aef180aef080aef180aef180adf080aef1 -80adf080adf080aef180adf080aef180aef180aef080aef180aef080aef080aef0 -80aef080aef080aef080aef080aef080aef080aef080aef180aef080aef180aef1 -80adf080aef180adf080adf080aef080adf080aef080aef080aef080aef080aef0 -80aef080adf080aef080adf080adf080aef080adf080aef080aef080aef080aef0 -80aef080aef080aef080aef080aef080aef080aef180aef080aef180aef175a4e6 -5584bd86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792afd286a1c15183bc -5c93d86098df6097df6098df6097df6097df6097df6097df6097df6097df6098df -6097df6098df6098df6097df6098df6097df6097df6098df6097df6098df6098df -6097de6098df6097de6097de6098df6097de6098df6098df6097df6098df6097df -6097df6097df6097df6097df6097df6097df6097df5282c0000000273f5c6097df -6098df6098df6097df6098df6097df6097df6098df6097df6098df6098df6098df -6098df6098df6098df6097df6098df6097df6097df6098df6097df5283c0000000 -273e5c6098df6097df6097df6097df324f760000004771a74d7bb5000000233751 -6098df121d2a070c126097df6097df6098df6097df6098df6098df6097de6098df -6097de6097de6098df6097de6098df6098df6097df6098df6097df6097df6097df -6097df6097df6097df6097df6097df6097df6097df6098df6097df6098df6098df -6097df6098df6097df6097df6098df6097df6098df6098df6098df6098df6098df -6098df6097df6098df6097df6097df6098df6097df6098df6098df5083c17695bb -8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d691aed185a0c15082bd79a8e980aef080aef180aef080aef180aef1 -80adf080aef180adf080adf080aef180adf080aef180aef180aef080aef180aef0 -80aef080aef080aef080aef080aef080aef080aef080aef080aef080aef180aef0 -80aef180aef180adf080aef180adf080adf080aef080adf080aef080aef080aef0 -80aef080aef080aef080adf080aef080adf080adf080aef080adf080aef080aef0 -80aef080aef080aef080aef080aef080aef080aef080aef080aef180aef080aef1 -80aef180aef080aef180aef080aef080aef180aef080aef180aef180adf080aef1 -80adf080adf080aef180adf080aef180aef180aef080aef180aef080aef080aef0 -80aef080aef080aef080aef080aef080aef080aef080aef180aef080aef180aef1 -80adf080aef180adf080adf080aef080adf080aef080aef080aef080aef06a99da -5e87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca -85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef -92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c35986bb6f9edf -7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eadf07eacef -7eadf07eadf07eadef7eadf07eadef7eadef7eadf07eadef7eadf07eadf07eadef -7eadf07eadef7eadef7eacef7eadef7eacef7eacef7eacef7eacef7eacef7eacef -7eadf07eacef7eadf07eadf07eadf07eadf07eadf07eadf07eacef7eadf07eacef -7eacef7eadef7eacef7eadef7eadef7eacef7eadef7eacef7eacef7eadf07eacef -7eadf07eadf07eadef7eadf07eadef7eadef7eacef7eadef7eacef7eacef7eacef -7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eadf07eacef7eadf07eadf0 -7eadef7eadf07eadef7eadef7eadf07eadef7eadf07eadf07eadef7eadf07eadef -7eadef7eacef7eadef7eacef7eacef7eacef7eacef7eacef7eacef7eadf07eacef -7eadf07eadf07eadf07eadf07eadf07eadf07eacef7eadf07eacef7eacef7eadef -7eacef7eadef7eadef7eacef7eadef7eacef7eacef7eadf07eacef7eadf07eadf0 -7eadef7eadf07eadef7eadef74a2e55584bd86a2c292afd295b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d792afd286a1c15183bc5991d75c95dd5c95dd5c95dd5c95dd5c95dd -5c94dc5c95dd5c94dc5c94dc5c94dd5c94dc5c94dd5c94dd5c95dd5c94dd5c95dd -5c95dd5c94dd5c95dd5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5c94dc5c95dd -5c94dc5c94dc5c95dd5c94dc5c95dd5c95dd5c95dd5c95dd5c95dd5c95dd5c94dd -5c95dd4f7fbe000000263d5b5c94dd5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd -5c95dd5c94dd5c95dd5c95dd5c94dc5c95dd5c94dc5c94dc5c95dd5c94dc5c95dd -5c95dd5c95dd5c95dd4f80be000000263d5b5c95dd5c95dd5c95dd5c94dc304e75 -000000446ea4588ed53251794875af5c94dd111c2a070c125c95dd5c95dd5c94dd -5c95dd5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5c94dc5c95dd5c94dc5c94dc -5c95dd5c94dc5c95dd5c95dd5c95dd5c95dd5c95dd5c95dd5c94dd5c95dd5c94dd -5c94dd5c95dd5c94dd5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd5c95dd5c94dd -5c95dd5c95dd5c94dc5c95dd5c94dc5c94dc5c95dd5c94dc5c95dd5c95dd5c95dd -5c95dd5c95dd5c95dd5083c07695bb8fabce93b1d595b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c15082bd77a7e8 -7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eadf07eacef -7eadf07eadf07eadef7eadf07eadef7eadef7eadf07eadef7eadf07eadf07eadef -7eadf07eadef7eadef7eacef7eadef7eacef7eacef7eacef7eacef7eacef7eacef -7eadf07eacef7eadf07eadf07eadf07eadf07eadf07eadf07eacef7eadf07eacef -7eacef7eadef7eacef7eadef7eadef7eacef7eadef7eacef7eacef7eadf07eacef -7eadf07eadf07eadef7eadf07eadef7eadef7eacef7eadef7eacef7eacef7eacef -7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eadf07eacef7eadf07eadf0 -7eadef7eadf07eadef7eadef7eadf07eadef7eadf07eadf07eadef7eadf07eadef -7eadef7eacef7eadef7eacef7eacef7eacef7eacef7eacef7eacef7eadf07eacef -7eadf07eadf07eadf07eadf06999da5e87b989a5c692b0d395b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2 -f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d7 -95b3d792afd287a2c35985bb6e9edf7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cacef7cabee7cacef7cacef7cabee7cacef7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cacef -7cabee7cacef7cacef7cabee7cacef7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee72a2e45484bd -86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d792afd286a1c15182bc578fd5 -5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc -5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc -5a93db5a93dc5a93db5a93db5a93dc5a93db4d7ebd000000253d5b5a93dc5a93db -3a608f20354f2137523e66985a93db416ba0243b594d7fbc5a94dc5a93dc2c486b -3151795a93dc558cd02d4a701d2f47273f5f4d7ebc5a93db4d7ebc000000253d5b -5a93db5a93dc5a93dc5a93db2f4d74000000436ea4548acf253d5b3e65975a93dc -111c2a070c123f679a1d2f47273f5f5084c55a93db5a93db3d64961f334d1d3048 -3b61915a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc -5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93db -5a93db5a93db5a93db5a94dc5a93db5a94dc5a94dc5a93dc5a94dc5a93dc5a93dc -5a93db5a93dc5a93db5a93db5a93db5a93db5a93db5a93db4f83c07695bb8fabce -93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d691aed185a0c15082bc75a6e87cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cacef7cabee7cacef7cacef7cabee7cacef7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cacef -7cabee7cacef7cacef7cabee7cacef7cabee7cabee7cabee7cabee6798d95e87b9 -89a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc8 -6e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c35885bb6c9dde7aaaed -7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed -7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaee7aaaed7aaaee7aaaee -7aaaed7aaaee7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aa9ed7aaaed -7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaee7aaaed7aaaee7aaaee7aaaed7aaaee -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed -7aaaed7aa9ed7aa9ed71a1e35484bd86a2c292afd295b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d792afd286a1c15182bc548dd45690da5691da5690da5691da5691da5690da -5691da5690da5690da5690d95690da5690d95690d95690d95690d95690d95690d9 -5690da5690d95690da5690da5691da5690da5691da5691da5690d95691da5690d9 -5690d95690d95690d95690d95690d95691da5690d95691da5691da5690d95691da -4a7cbb000000233b5a5690d92d4b72000000203652142234000000385f8f3b6396 -0000002945685690d9497cbb000000223956558fd8111c2b070b11243d5c090f17 -05090e4f85c84a7cbc000000233c5a5690da5691da5691da5690da2d4c73000000 -406ba34a7cbb000000233b5a5690d9101b290001010306090e18250000000f1926 -558fd9406ca40000001a2c43253f5e1b2f465690d95691da5690d95690d95690d9 -5690d95690d95690d95691da5690d95691da5691da5690d95691da5690d95690d9 -5690da5690d95690da5690da5691da5690da5691da5691da5690d95691da5690d9 -5690d95691da5690d95691da5691da5690d95691da5690d95690d95690da5690d9 -5690da5690da4f82c07695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c15082bc74a5e77aaaed -7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed -7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaee7aaaed7aaaee7aaaee -7aaaed7aaaee7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aa9ed7aaaed -7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed -7aaaed7aaaed7aaaed6697d85e87b989a5c692b0d395b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d7 -92afd287a2c35885bb699bdc76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a6eb76a7eb76a6eb76a6eb76a7eb76a6eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a6eb76a7eb76a6eb76a6eb76a7eb76a6eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb6d9ee25483bd86a2c2 -92afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d792afd286a1c15182bc528cd3548fd8 -548fd8548fd8548fd8548fd8548ed8548fd8548ed8548ed8548fd9548ed8548fd9 -548fd9548fd9548fd9548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8 -548fd9548fd9548ed8548fd9548ed8548ed8548fd9548ed8548fd9548fd9548fd8 -548fd9548fd8548fd8548ed8548fd8487aba000000223b5a538dd704070b18283e -548ed8528cd403050817273c518bd204070b0e1824548fd82e4f770000003d689e -3b669a000000345987548ed8396194000000335684487bba000000223b59548fd8 -548fd8548fd8548ed82c4b720000003e6aa1487bbb000000223b5a548fd9101b29 -0203054575b2548fd9192a400000004373ae31547f0000002f517a538dd7548fd9 -548ed8548fd9548ed8548ed8548fd9548ed8548fd9548fd9548fd8548fd9548fd8 -548fd8548ed8548fd8548ed8548ed8548fd9548ed8548fd9548fd9548ed8548fd9 -548ed8548ed8548fd8548ed8548fd8548fd8548fd9548fd8548fd9548fd9548ed8 -548fd9548ed8548ed8548fd8548ed8548fd8548fd84f82c07695bb8fabce93b1d5 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -91aed185a0c15082bc70a2e576a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a6eb76a7eb76a6eb76a6eb76a7eb76a6eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a6eb76a7eb76a6eb76a6eb76a7eb76a6eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea6495d75e87b989a5c6 -92b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c9 -95b3d795b3d795b3d795b3d795b3d792afd287a2c35885bb689adc74a6ea74a5e9 -74a6ea74a5e974a5e974a6ea74a5e974a6ea74a6ea74a5ea74a6ea74a5ea74a5ea -74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea -74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a5e974a6ea -74a5e974a5e974a6ea74a5e974a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a5e9 -74a6ea74a5e974a5e974a5ea74a5e974a5ea74a5ea74a6ea5c84bb3a53756996d3 -74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a5e974a6ea74a5e9 -74a5e974a6ea74a5e974a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea -74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea6e9ede3a5376557aad -74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a5e974a6ea74a5e974a5e9 -74a6ea74a5e974a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a5e974a6ea74a5e9 -74a5e974a5ea74a5e974a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea -74a6ea74a6ea6c9ee15483bd86a2c292afd295b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -92afd286a1c15182bc4f8ad2508cd7508cd6508cd7508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd7 -508cd6508cd7508cd7508cd6508cd7508cd6508cd6508cd7508cd6508cd7508cd7 -508cd6508cd7508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd64578b9 -000000213a58477cbf00000001020403060a03060a000000101d2c508cd71c314c -0000004578b9132234050a104e89d22c4d7600000002040703060a030508000000 -2b4b734578b9000000213a58508cd7508cd6508cd6508cd62a4a710000003b68a0 -4578b8000000213a58508cd60f1a29060b11508cd6508cd62a4970000000376196 -497fc40b141f00000009111a365e91508cd7508cd6508cd7508cd7508cd6508cd7 -508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6 -508cd7508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7 -508cd6508cd7508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7 -508cd74e82c07695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d691aed185a0c15082bc6ea1e474a6ea74a5e9 -74a6ea74a5e974a5e974a6ea74a5e974a6ea74a6ea74a5ea74a6ea74a5ea74a5ea -74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea -74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a5e974a6ea -74a5e974a5e974a6ea74a5e974a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a5e9 -74a6ea74a5e974a5e974a5ea74a5e974a5ea74a5ea74a6ea74a5ea74a6ea73a5e9 -5c84ba6a98d774a6ea5c84bb3a53756996d374a6ea74a6ea74a5e974a6ea74a5e9 -74a5e974a6ea74a5e974a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea -74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a5ea -74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a5e974a6ea74a5e974a5e9 -74a6ea74a5e96395d65e87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff7faf6cde0c8e3eee0ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffe0ecdccee1c9fafcf9ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd2 -87a2c35885bb6799da72a4e872a4e972a4e872a4e972a4e972a5e972a4e972a5e9 -72a5e972a4e972a5e972a4e972a4e972a4e972a4e972a4e972a4e972a4e872a4e9 -72a4e872a4e872a4e972a4e872a4e972a4e972a4e872a4e972a4e872a4e872a4e9 -72a4e872a4e972a4e972a4e972a4e972a4e96d9ddf324968131b27040508101822 -3146646b9adc72a4e872a4e84c6d9b131b270203050d131c46659072a4e972a4e9 -72a4e972a4e93c567b000000557aae72a4e972a4e972a4e972a4e972a4e872a4e9 -72a4e872a4e872a4e972a4e872a4e972a4e972a5e972a4e972a5e972a5e972a4e9 -72a5e972a4e972a4e972a4e972a4e972a4e972a4e972a4e872a4e972a4e872a4e8 -72a4e972a4e8628dc90000002f446072a4e972a4e872a4e872a4e972a4e872a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e872a4e9 -72a4e872a4e872a4e972a4e872a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e96a9cdf5483bd86a2c292afd2 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d792afd286a1c15082bc4d88d04e8ad54e8bd6 -4e8ad54e8bd64e8bd64e8ad54e8bd64e8ad54e8ad54e8bd54e8ad54e8bd54e8bd5 -4e8ad54e8bd54e8ad54e8ad54e8ad54e8ad54e8ad54e8ad54e8bd54e8ad54e8bd5 -4e8bd54e8bd64e8bd54e8bd64e8bd64e8ad54e8bd64e8ad54e8ad54e8bd54e8ad5 -4e8bd54e8bd54e8bd54e8bd54377b70000002039584982c700000016283e4175b3 -4174b34175b34780c44e8bd5355f930000002542650001021e36534e8bd52f5380 -0000002c507a4175b34175b34274b44c87cf4377b70000002039584e8ad54e8bd6 -4e8bd64e8ad52949710000003a679f4377b70000002039584e8bd50e1a2804080d -4d88d24e8ad5223c5d0000003c6aa44e8ad54c87cf325989080f170103054983ca -4e8bd54e8bd64e8bd64e8ad54e8bd64e8ad54e8ad54e8bd54e8ad54e8bd54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e8bd54e8ad54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd5 -4e8bd54e8bd54e8ad54e8bd54e8ad54e8ad54e82c07695bb8fabce93b1d595b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed1 -85a0c15082bc6da0e272a4e872a4e972a4e872a4e972a4e972a5e972a4e972a5e9 -72a5e972a4e972a5e972a4e972a4e972a4e972a4e972a4e972a4e972a4e872a4e9 -72a4e872a4e872a4e972a4e872a4e9608ac52232460b1016070a0e25354b6794d3 -72a4e872a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e95c85bd000000293b5472a4e93c567b000000557aae -72a4e872a4e872a4e972a4e872a4e972a4e972a5e972a4e972a5e972a5e972a4e9 -72a5e972a4e972a4e972a4e972a4e972a4e972a4e972a4e872a4e972a4e872a4e8 -72a4e972a4e872a4e972a4e972a4e872a4e972a4e872a4e872a4e972a4e872a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e96294d65e87b989a5c692b0d3 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e6 -2222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffeef5eca1c597a5c79b -fafcf9ffffffffffffffffffffffffedf4eba1c597b0cea8ffffff619d51398425 -cbdfc5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -a5c89c176f0041892effffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff317f1c176f00b6d2ae -ffffffffffffffffffffffffffffffffffffddead93e872a4d913bfcfdfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d7 -95b3d795b3d795b3d795b3d792afd287a2c35885bb6598da70a3e870a2e770a3e8 -70a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a3e8 -70a2e770a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e8 -70a3e870a3e870a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e76ea1e5 -151f2d0000001f2e41344c6d1a263600000019253470a2e75e88c2010102121a26 -3f5c832e435f2a3d5770a3e870a3e870a3e870a2e73b567a0000005379ad70a2e7 -70a2e770a2e770a2e770a3e870a2e770a3e870a3e870a2e770a3e870a2e770a2e7 -70a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a3e870a2e770a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e8608cc80000002e436070a3e8 -70a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e870a3e870a3e8 -70a3e870a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e870a3e8 -70a3e870a3e870a3e870a3e870a2e770a3e870a2e770a2e770a2e770a2e770a2e7 -70a2e7699bdf5483bd86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792afd2 -86a1c15082bc4a86cf4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d34a88d3 -4a87d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d33f75b6000000 -1e38574a88d30d192603060a325c8f3d71af325c8f3563994a87d34783cc03060a -0203050000003561994a88d33e72b1000102111f303a6ba63b6daa2b4f7b427abe -3f75b60000001e38574a88d34a88d34a88d34a88d327486f00000037659e3f75b6 -0000001e38574a88d30e1a2800000016293f2c517e04080c05090e4782ca346196 -325d904076b816293f000000457ec54a88d34a87d34a87d34a88d34a87d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d34a88d3 -4a87d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4d81bf7695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d691aed185a0c15082bc6b9fe270a3e870a2e770a3e8 -70a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a3e8 -70a2e770a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e85d88c2030508 -0102032738502e435f0a0f1645659070a3e870a2e770a2e770a3e870a2e770a3e8 -70a3e870a3e870a3e870a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e7 -70a3e870a3e870a3e870a3e870a3e870a3e870a2e770a3e870a2e76c9cde3d597f -5880b670a2e73b557a0000005379ad70a3e870a3e870a2e770a3e870a2e770a2e7 -70a2e770a2e770a2e770a2e770a2e770a2e770a2e770a2e770a3e870a2e770a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e8 -70a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e870a3e870a3e8 -70a3e86193d55e87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffdfebdb176f00176f00b6d2aeffffffffffffffffffffffff8fb983 -176f00498e36fdfefc22760b176f00a5c89cffffffffffffffffffffffffffffff -ffffffffffffffffffcbdfc581b174b6d2aeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffa5c79b176f0040892dffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff307f1b176f00b5d1adffffffffffffffffffffffffffffffffffff -bad5b3176f00197102f0f6eeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -8db88186b479f0f6eeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c3 -5885bb6497da6ea1e76ea2e76ea1e76ea2e76ea2e76ea1e76ea2e76ea1e76ea1e7 -6ea1e76ea1e76ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e66ea1e66ea1e6 -6ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e76ea1e6 -6ea1e76ea1e76ea1e66ea1e744638e0000002b3f5a6ea1e66ea1e66d9fe41c293a -0000004f74a64565910000003751746ea1e66ea1e66ea1e76ea1e66ea1e76ea1e7 -6ea2e73a557a0000005279ad6c9ee2354e6f344c6d6ea1e66ea1e75b85be2e4461 -24354d3a567b6a9ce06ea2e75279ad2f45635780b623334a5177ac5278ad2f4563 -618fcd2f46642739525278ad6ea1e66ea1e66899db38527523344a2f46645e8ac7 -6ea1e65e8ac70000002d425f6ea1e76ea1e66ea1e66ea1e76ea1e66ea1e76ea1e7 -6ea1e66ea1e76ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e76ea1e66ea1e7 -6ea1e76ea1e66ea1e76ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea2e76ea1e7 -6ea2e76ea2e76ea1e66ea2e76ea1e66ea1e6679ade5483bd86a2c292afd295b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d792afd286a1c15082bc4886ce4887d24886d24887d2 -4886d24886d24887d24886d24887d24887d24886d24887d24886d24886d24886d1 -4886d24886d14886d14886d24886d14886d24886d24886d14886d24886d14886d1 -4886d24886d14886d24886d24887d24886d24887d24887d24886d24887d24886d2 -4886d24886d14886d23f75b70000001f3a5b4886d13b6dac0c1725000000000000 -0204072c53824887d24886d21b334f000000060c134684ce4886d24886d22b507e -04070c000000000000070e163f76b83f76b80000001f3a5b4887d24886d24886d2 -4887d22749730000003767a13f75b80000001f3a5b4886d20e1b2b1222360e1b2a -000000030609315b8e4886d22f588b0103040000000204062749714886d24886d1 -4886d24886d24887d24886d24887d24887d24886d24887d24886d24886d24886d1 -4886d24886d14886d14886d24886d14886d24886d24886d24886d24886d24886d2 -4887d24886d24887d24887d24886d24887d24886d24886d24886d14886d24886d1 -4886d14887d24886d14887d24887d24d81bf7695bb8fabce93b1d595b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c1 -5082bc699de16ea1e76ea2e76ea1e76ea2e76ea2e76ea1e76ea2e76ea1e76ea1e7 -6ea1e76ea1e76ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e66ea1e66ea1e6 -6ea1e66ea1e76ea1e621304500000044638e6ea1e76ea1e66899db6594d46ea1e6 -5e8ac63249692333493046655d88c26ea1e66ea1e63c587e4565914e73a5263851 -2f44626695d64b6d9d23344a3249696798d96ea1e65278ad3046655f8cc92c415d -2739525075a86ea2e76798d92e43604b6f9f6ea1e63a55790000005278ac6ea1e7 -6899dc38527523344b2f46645e8bc76ea1e76797d82d4260547cb22c415d385275 -6ea1e74b6d9d26385124354c486a986ea1e66ea1e66ea1e66ea1e66ea1e66ea1e7 -6ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e76ea1e66ea1e76ea1e7 -6ea1e66ea1e76ea1e66ea1e66ea1e66ea1e65f92d45e87b989a5c692b0d395b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f5 -0000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff41892e176f006ca45d -ffffffffffffffffffffffff478d34176f0095bd8affffffd3e4cebad5b3f7faf6 -ffffffffffffffffffffffffffffffffffffffffffffffff88b67c176f005f9c4f -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5c79b -176f0040892dffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff307f1b176f00b5d1adffffff -fffffffffffffffffffffffffffffffbfdfabcd6b5cde0c8ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfefc176f00176f00d4e4cfffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d7 -95b3d795b3d795b3d792afd287a2c35885bb6295d86c9fe56ca0e56c9fe56ca0e5 -6ca0e56ca0e66ca0e56ca0e66ca0e66c9fe56ca0e66c9fe56c9fe56ca0e66c9fe5 -6ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e56ca0e66ca0e56ca0e56ca0e5 -6ca0e56ca0e56ca0e56ca0e66ca0e56ca0e66ca0e66ca0e66ca0e6283b55000000 -547cb26ca0e66ca0e56ca0e5405f890000003a567c5680b8000000030507354f71 -6393d36c9fe56ca0e56c9fe56c9fe56ca0e53954790000005077ab314a6a000000 -3c59806ca0e65983bd030507182333283b550204062233496ca0e5395479000000 -070b1005080c3e5c84395479000000090d130e151f0102030204066291d16b9ee4 -15202e080d122e44620b1119070a0f6394d45d8ac50000002c425f6ca0e56ca0e5 -6ca0e56ca0e66ca0e56ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e56ca0e6 -6ca0e56ca0e56ca0e66ca0e56ca0e66ca0e66ca0e56ca0e66ca0e56ca0e56c9fe5 -6ca0e56c9fe56c9fe56ca0e56c9fe56ca0e56ca0e56ca0e66ca0e56ca0e66ca0e6 -6598dd5483bd86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792afd286a1c1 -5082bc4784cd4685d14685d04685d14685d04685d04685d14685d04685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14481cc4584d0 -4685d14685d14685d1417bc23d74b64482cc4685d14685d14685d14685d14380ca -4583cf4685d14685d14685d14685d14584d03e76ba3f78bd4685d14685d14685d1 -4481cc4584cf4685d14685d04685d04685d14685d04481cb4685d14685d14481cc -4584d04685d14482cd4583cf4685d13d75b84482cd4685d14685d14685d1437fc8 -3c73b54380ca4685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14d81bf -7695bb8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d691aed185a0c15082bc679be06c9fe56ca0e56c9fe56ca0e5 -6ca0e56ca0e66ca0e56ca0e66ca0e66c9fe56ca0e66c9fe56c9fe56ca0e66c9fe5 -6ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e56ca0e605080b05080b6a9ee2 -6ca0e56ca0e56ca0e56ca0e65a85bf040609080d1220304505080c0305085d8ac7 -6ca0e5141e2c080c110204060d131b0000000d141d0204060d131b000000293c57 -6ca0e5395479000000080b11131c290305070102035882ba5d8ac50000002c425f -6ca0e63954790000005077ac6b9de3151f2d080d122e43610b1119070a0f6394d4 -5d8ac5000000070b100406081c2a3c5177ac0000002131472f456323344a6ca0e6 -6ca0e66ca0e66ca0e66ca0e66ca0e56ca0e66ca0e56ca0e56ca0e56ca0e56ca0e5 -6ca0e56ca0e66ca0e56ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e56ca0e6 -5e91d35d87b989a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff90ba84176f00277911fcfdfbffffffffffffe6f0e3176f00176f00 -e3eee0ffffffabcba293bc88e7f0e4ffffffdeebda91bb85d3e4cec7dcc172a864 -b9d4b2b9d4b2569645176f0040882c9ac08fbfd7b8ffffffa4c69a93bc88ebf3e9 -ffffffffffffc3dabd91bb85cfe2caffffffffffffd7e7d391bb8572a7637daf70 -a8c99ffbfdfaffffffffffffa5c79b176f0040892dffffffffffffffffffffffff -fffffffffffffffffff3f8f1a5c79b7cae6f80b073a7c99ef9fcf8ffffffffffff -ffffff307f1b176f00b4d1acb0cea873a96591bb86e1ecddfffffffffffff1f6ef -95bd8aa0c496ffffffffffffffffffebf3e99cc29276aa688db881cee1c9ffffff -ffffffffffffffffffeaf2e799c08e75aa678bb77fe1eddeecf4ea98bf8d176f00 -176f0081b1749bc190f1f6efffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -efefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c35884bb -6094d8689de4689de3689de4689de3689de3689de3689de3689de3689de3689de4 -689de3689de4689de4689de3689de4689de3689de3689de4689de3689de4689de4 -689de3689de4689de3689de3689de4689de3689de4689de4689de3689de4689de3 -689de3689de3689de31a27380000005b89c7689de3689de3689de3466a9a000000 -2e4665689de33a587f03040700000005080b446897689de3689de4689de4689de4 -3753780000003048690000002d4464689de3689de3273b560101026193d6689de4 -2437500000006294d6375378000000283c58679ce2679ce2375378000000334d70 -689de4334d70000000496e9f4a70a200000040618d689de4476b9c0000003f608b -5987c30000002b415e689de3689de4689de4689de3689de4689de3689de3689de3 -689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3 -689de3689de3689de3689de3689de4689de3689de4689de4689de4689de4689de4 -689de4689de3689de4689de3689de36296dc5383bc86a2c292afd295b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d792afd286a1c15081bc4382cb4282cf4282cf4282cf4282cf -4282cf4282ce4282cf4282ce4282ce4283cf4282ce4283cf4283cf4282ce4283cf -4282ce4282ce4282ce4282ce4282ce4282ce4282ce4282ce4282ce4282ce4282ce -4282ce4282ce4282ce4282cf4282ce4282cf4282cf4282ce4282cf4282ce4282ce -4282cf4282ce4282cf4282cf4282ce4282cf4282ce4282ce4283cf4282ce4283cf -4283cf4282ce4283cf4282ce4282ce4282ce4282ce4282ce4282ce4282cf4282ce -4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282ce -4282cf4282ce4282ce4283cf4282ce4283cf4283cf4282ce4283cf4282ce4282ce -4282ce4282ce4282ce4282ce4282ce4282ce4282ce4282ce4282ce4282ce4282ce -4282ce4282cf4282ce4282cf4282cf4282ce4282cf4282ce4282ce4282cf4282ce -4282cf4282cf4282ce4282cf4282ce4282ce4283cf4282ce4283cf4283cf4282ce -4283cf4282ce4282ce4282ce4282ce4282ce4282ce4282cf4282ce4282cf4282cf -4282cf4282cf4282cf4282cf4c80bf7695bb8fabce93b1d595b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14f82bc -6499df689de4689de3689de4689de3689de3689de3689de3689de3689de3689de4 -689de3689de4689de4689de3689de4689de3689de3689de4689de3689de4689de4 -689de35f90d10000000f1822689de4689de3689de4689de4689de3263a54000000 -5480b9689de3476b9b00000030496a689de3131e2b020406547eb76599de080c12 -0304075480b96599dd070b100f1620689de3375378000000355075689de441628f -00000030496b5987c40000002b415e689de33753780000004d75aa4a70a2000000 -40618d689de4476b9b0000003f608a5987c30000000d141e5f90d1679ce23d5c86 -0000003b5981679be2689de3689de3689de4689de3689de4689de4689de3689de4 -689de3689de3689de4689de3689de4689de4689de3689de4689de3689de3689de3 -689de3689de3689de3689de3689de35c90d25d87b889a5c692b0d395b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ff -b7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffdeebda176f00176f00c2d9bb -ffffffffffff9fc495176f004a8f37ffffffffffff307f1b176f00b5d1adffffff -a5c79b176f005495431b7204176f006ba35c4b9039176f00176f00176f00176f00 -579746ffffff267910176f00c2d9bbffffffffffff68a158176f0082b275ffffff -b7d2af176f00176f00176f00176f00176f00569645ffffffffffffa5c79b176f00 -40892dffffffffffffffffffffffffffffffffffffd4e4cf33801e176f00176f00 -176f00176f003d8729ebf3e8ffffffffffff307f1b176f00368322176f00176f00 -176f002a7b14dce9d8ffffffcde0c8176f00197102ffffffffffffcfe2ca2c7c17 -176f001c7205176f001971029dc393ffffffffffffcadec4287a12176f00176f00 -176f00277911c0d8b9176f00176f00176f00176f00176f00ccdfc6ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d7 -95b3d795b3d792afd287a2c35784bb5e93d6669ce2669ce3669ce2669ce3669ce3 -669be2669ce3669be2669be2669be2669be2669be2669be2669ce2669be2669ce2 -669ce2669be2669ce2669be2669be2669ce2669be2669ce2669ce2669be2669ce2 -669be2669be2669ce2669be2669ce2669ce2669ce2669ce2203248000000537eb8 -669ce2669be2669be23e5e8900000038567e669ce3669be25c8ccc2c4463000000 -0406086092d5669ce2669ce2669be2365277000000070a0f000000507ab2669ce2 -669ce216223100000004070a04070a0203050000005989c73652780000004c74aa -669be2669be23652770000004c74a9669be240628e00000042649238567c000000 -03050704070a04060800000037537a5886c20000002a405d669ce2669be2669be2 -669ce2669be2669ce2669ce2669ce2669ce2669ce2669ce2669be2669ce2669be2 -669be2669ce3669be2669ce3669ce3669be2669ce3669be2669be2669ce2669be2 -669ce2669ce2669be2669ce2669be2669be2669ce2669be2669ce2669ce26196da -5383bc86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792afd286a1c15282b9 -4a7ebb4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc -4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbc4c7fbd4a7ebb7a97bb -8fabce93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d691aed185a0c14f82bc6299dd669ce2669ce3669ce2669ce3669ce3 -669be2669ce3669be2669be2669be2669be2669be2669be2669ce2669be2669ce2 -669ce2669be2669ce2669be2669be2669ce26397dc000101070b10669be2669ce2 -669be2669be2669ce2141f2e040608669ce2669ce25b8cca00000022354d669be2 -131d2b080c12669be2669ce3121c29090e15669ce3669be2121b280a0f17669be2 -3652770000004c74a9669ce25683c00000002437515885c20000002a405d669ce2 -3652770000004c74a938567c00000003050804070a04060800000037537a5886c3 -0000002a405d669be2669be25d8dce0f17210000000c121b456999669ce2669be2 -669ce2669be2669be2669ce2669be2669ce2669ce2669be2669ce2669be2669be2 -669ce2669be2669ce2669ce2669ce2669ce2669ce2669ce2669be2669ce25b8ed2 -5d87b889a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca -85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff438b30176f0079ac6bffffffffffff569645176f0098bf8dffffff -ffffff307f1b176f00b5d1adffffffa5c79b176f00176f0037832391bb85afcea7 -cbdfc5609d50176f00458c32adcca4cfe2caffffff267910176f00c2d9bbffffff -ffffff68a158176f0082b275ffffffbad5b372a763cbdfc5eff5edc0d8b9197102 -176f00dce9d8ffffffa5c79b176f0040892dffffffffffffffffffffffffffffff -fffffe478d34176f005a9949d4e4cfc1d9ba307f1b176f0076aa68ffffffffffff -307f1b176f001f740898bf8daccca3277911176f0071a762ffffffcde0c8176f00 -197102fffffffffffe458c32176f0098bf8dfcfdfbaccca3176f0022760ceff5ed -fdfefc3f882b176f004a8f38bdd6b6afcda64c903af5f9f3abcba2176f00176f00 -91bb85aecda5f7faf6ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef -92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c35784bb5d92d5 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649be1649ae1649be1649be1649ae1649be1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae12f496a000000355278649ae1649ae1649ae11c2b3f0000004c75ab -649ae1649ae1649ae1649ae11a293c0000005583bf649be2649be2649ae1345277 -0000003a5983010304121b286296dc649ae11a293c0103045380bb5481bd5481bd -5786c3649ae13451770000004a73a8649ae1649ae13451770000004a73a8649ae1 -3f628e0000004064913c5d870000003959815481bd5481bd5482be6196db5684c2 -00000029405d649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649be2649ae1649be2649be2649ae1649be2649ae1649ae1 -649ae1649ae1649ae1649ae15f94da5383bc86a2c292afd295b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d792b0d388a3c4768eac677f9d627a96627996627996627996627996 -627996627996627996627996627996627996627996627996627996627996627996 -627996627996627996627996627996627996627996627996627996627996627996 -627996627996627996627996627996627996627996627996627996627996627996 -627895627894617793617794627894627894617793607792607692617793617794 -627895627894617794617793617793627894627895627895617794617793607692 -607792617793617794617794617793617794627895627996627996627895617794 -617793617794617794617793617794617794617793617793607792607792617793 -617794627894617794617793607792607792617794627895627996627996627996 -627996627996627996627996627996627996627996627996627996627996627996 -627996627996627996627996627996627996627996627996627996627996627996 -627996627996627996627996627996627996627996627996627996627996627996 -627996627a96657d9a6f88a6839dbd8faccf93b1d595b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14f82bc6097dc -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649be1649ae1649be1649be1649ae1649be1649ae1649ae1649ae1 -649ae10f17220000004b73a9649ae1649ae1649ae16296dc1927390001016093d8 -649ae1517eb80000002a4160649ae1131d2b080c12649ae1649ae1121c29090e15 -649ae1649ae1111b270a0f16649ae1345277000000476fa2649be24c75ab000000 -2b43615684c200000029405d649ae13451770000004a73a83c5d87000000395881 -5481bd5481bd5482be6196db5684c200000029405d649ae1649ae1649ae16196db -4064910a10180203055e92d4649ae1649be1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae15a8ed15d87b889a5c692b0d395b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2 -f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff91bb86176f00307f1bfffffe -f2f7f01c7205187001e4efe1ffffffffffff307f1b176f00b5d1adffffffa5c79b -176f0024770ee5efe2ffffffffffffffffff88b67c176f005f9c4fffffffffffff -ffffff267910176f00c2d9bbffffffffffff68a158176f0082b275ffffffffffff -fffffffffffffffffffdfefc2e7e19176f00c1d9baffffffa5c79b176f0040892d -ffffffffffffffffffffffffffffffd8e7d4176f00176f00e6f0e3ffffffffffff -9cc292176f0034811fffffffffffff307f1b176f009cc292ffffffffffff8fb983 -176f00358220ffffffcde0c8176f00197102ffffffddead9176f001e7307ebf3e8 -edf4ebedf4eb2b7b15176f00c5dbbfdae8d6176f00176f00d2e3cdffffffffffff -fffffffffffffdfefc176f00176f00d4e4cfffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d7 -95b3d792afd287a2c35784bb5b91d56299e06299e06299e06299e06299e06299e0 -6299e06299e06299e06299e06299e06299e06299e06298e06299e06298e06298e0 -6299e06298e06299e06299e06299e06299e06299e06299e06298e06299e06298e0 -6298e06299e06298e06299e06299e06299e06299e05788c80305070203052e486a -3c5e892032490000001a293c6299e02e486a2337513f63913a5a8404070b090f16 -6197de6298e06298e06299e03350760000004972a7304b6d000000324f736299e0 -334f740000002e4869517eb94973a8395a836299e03351760000004972a76299e0 -6299e03351760000004972a76299e03e608e0000003f62905280bc010102162333 -4d78b04f7bb4395982588aca5484c1000000283f5d6299e06298e06298e06299e0 -6298e06299e06299e06299e06299e06299e06299e06299e06299e06299e06299e0 -6299e06299e06299e06299e06299e06299e06299e06299e06298e06299e06298e0 -6298e06299e06298e06299e06299e06299e06299e06299e06299e05e93d95383bc -86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d793b0d48ba7c97f99b7768daa -7289a57188a47188a47188a47188a47188a47188a47188a47188a47188a47188a4 -7188a47188a47188a47188a47188a47188a47188a47188a47188a47188a47188a4 -7188a47188a47188a47188a47188a47188a47188a47188a47188a47188a47188a4 -7188a47188a47188a47188a47188a47188a47188a47188a47188a47188a47188a4 -7087a37087a37087a37087a37188a47188a47188a47188a47188a47188a47188a4 -7188a47188a47188a47087a37087a37087a37087a37188a47188a47188a47188a4 -7188a47188a47188a47188a47188a47188a47188a47188a47188a47188a47188a4 -7188a47188a47087a37087a37087a37188a47188a47188a47087a37087a37087a3 -7188a47188a47188a47188a47188a47188a47188a47188a47188a47188a47188a4 -7188a47188a47188a47188a47188a47188a47188a47188a47188a47188a47188a4 -7188a47188a47188a47188a47188a47188a47188a47188a47188a47188a47188a4 -7188a47188a47188a47188a47188a47188a47289a5748ba77b94b288a4c591aed1 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d691aed185a0c14f82bc5f96db6299e06299e06299e06299e06299e06299e0 -6299e06299e06299e06299e06299e06299e06299e06298e06299e06298e06298e0 -6299e06298e06299e06299e06299e06299e03e618e000000060a0e304c6f36557d -1825373a5b86324e73000000263c57476fa31b2a3e0000004972a76299e0121d2b -080c126299e06299e0121c29090e156299e06299e0111b27090f166299e0335076 -0000000b121b3b5b87152232000000446a9b5484c1000000283f5d6299e0335176 -0000004972a75281bc0101021623334d78b04f7bb4395982588aca5484c1000000 -283f5d6299e06299e0456d9f4369995584c31d2e430000005b8ed16299e06298e0 -6299e06299e06299e06299e06299e06299e06298e06299e06298e06298e06299e0 -6298e06299e06299e06299e06299e06299e06299e06299e06299e0588dd15d87b8 -89a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffdfebdb176f00176f00cee1c9afcda6176f004b9039ffffffffffffffffff -307f1b176f00b5d1adffffffa5c79b176f0040892dffffffffffffffffffffffff -88b67c176f005f9c4fffffffffffffffffff267910176f00c2d9bbffffffffffff -68a158176f0082b275fffffffdfefc91bb8640892d24770e176f00176f00176f00 -bdd6b6ffffffa5c79b176f0040892dffffffffffffffffffffffffffffffb8d3b0 -176f0024770effffffffffffffffffc1d9ba176f001a7103fefefdffffff307f1b -176f00b5d1adffffffffffffb5d1ad176f001e7307ffffffcde0c8176f00197102 -ffffffbbd5b4176f00176f00176f00176f00176f00176f00176f00b7d2afb9d4b2 -176f0021750afdfefcfffffffffffffffffffffffffdfefc176f00176f00d4e4cf -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc8 -6e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c35784bb5a8fd46097df -6097df6097df6097df6097df6097df6097df6097df6097df6098df6097df6098df -6098df6098df6098df6098df6098df6097df6098df6097df6097df6097df6097df -6097df6097df6097df6097df6097df6097df6098df6097df6098df6098df6097df -6098df6097df4973aa111b2800000000000004070b263c595b8fd46098df436b9d -080d14000000000000101a274c78b16097df6097df6097df6098df34527a000000 -4974ab5d92d80f1823020406588acc5c91d722354f0001010000000000001e2f45 -6097df34527a0000004974ab6097df6097df34537a0000004974ab6098df3e6392 -0000004065946098df395b8605080d0000000000000a0f175485c45484c3000000 -2941616097df6097df6097df6098df6097df6098df6098df6097df6098df6097df -6097df6097df6097df6097df6097df6098df6097df6098df6098df6097df6098df -6097df6097df6097df6097df6097df6097df6098df6097df6098df6098df6097df -6098df6097df6097df5c92d85383bc86a2c292afd295b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d690aed18ba7c987a2c385a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c185a0c1 -85a0c186a1c189a5c68faccf93b0d495b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14f81bc5d94da6097df -6097df6097df6097df6097df6097df6097df6097df6097df6098df6097df6098df -6098df6098df6098df6098df6098df6097df6098df6097df6097df6097df6097df -6097df385984080d13000000000000111b28507fbb5c91d622364f000101000000 -05080c36567f6097df6097df141f2f090f166097df6098df131e2d0a11196098df -6097df121d2b0b121b6097df324f760000001a2a3e000101000000253b575f97de -5485c30000002942616097df34527a0000004974ab6097df395b8605080d000000 -0000000a0f175485c45484c30000002941616098df6097df3f6493020305000000 -0304063452796098df6097df6098df6097df6097df6097df6097df6097df6097df -6097df6097df6097df6097df6098df6097df6098df6098df6097df6098df6097df -6097df6097df6097df578cd05d87b889a5c692b0d395b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff458c32176f0085b37866a056 -176f009ac08fffffffffffffffffff307f1b176f00b5d1adffffffa5c79b176f00 -40892dffffffffffffffffffffffff88b67c176f005f9c4fffffffffffffffffff -277911176f00bcd6b5ffffffffffff68a158176f0082b275ffffff83b276176f00 -37832396be8ba9caa0287a12176f00bdd6b6ffffffa5c79b176f0040892dffffff -ffffffffffffffffffffffffbed7b7176f001d7306fffffeffffffffffffb7d2af -176f002a7b14ffffffffffff307f1b176f00b5d1adffffffffffffaacaa1176f00 -2e7e19ffffffcde0c8176f00197102ffffffc3dabc176f00207509afcea7afcea7 -afcea7afcea7b5d1adf8fbf7bcd6b5176f001e7307fffffeffffffffffffffffff -fffffffdfefc176f00176f00d4e4cfffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d7 -92afd287a2c35784ba588fd35e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5a90d55385c5 -5d95dd5e96de5e96de5e96de5e96de5d95dd5284c3568acd5e96de5e96de5e96de -5e96de5e96de5e95dd5e96de5b90d65e95dd5e96de5d94dc5b92d85e96de5e96de -5e96de5b91d75182c1588dd15e96de5e96de5e96de5b91d75e96de5e96de5e96de -5e96de5b91d75e96de5e96de5e96de5b91d75e96de5e96de5e96de5d95dd5385c5 -5587c95e96de5e96de5e96de5b92d85d95dd5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e95dd5e96de5e95dd5e95dd5e96de5e95dd5e96de5e96de5a91d75383bc86a2c2 -92afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d693b0d492afd291aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed191aed191aed191aed191aed191aed1 -91aed191aed191aed191aed191aed191aed192afd292b0d393b1d594b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -91aed185a0c14f81bc5b93da5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5689cb568acd5e96de -5e96de5e96de5e96de5b91d75385c55d95dd5e96de5e96de5e96de5c94db5c93da -5e96de5e96de5c94db5c93da5e96de5e96de5c94db5c93da5e96de314f75000000 -4670a6568acc588cd05e96de5e95dd5e95dd5b92d85d94dc5e96de5e96de5b91d7 -5e96de5e96de5e96de5d95dd5385c55587c95e96de5e96de5e96de5b92d85d95dd -5e96de5e96de5e96de5a90d55182c15b91d75e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de568ccf5d87b889a5c6 -92b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff92bc87176f0038842423770d187001e6f0e3ffffffffffffffffff307f1b -176f00b5d1adffffffa5c79b176f0040892dffffffffffffffffffffffff8eb982 -176f00498e36ffffffffffffffffff398425176f008eb982ffffffd7e7d32b7b15 -176f0082b275ffffff41892e176f00adcca4fffffffbfdfa2c7c16176f00bdd6b6 -ffffffa5c79b176f0040892dffffffffffffffffffffffffffffffe1edde176f00 -176f00bdd6b6ffffffffffff6ca45d176f00569645ffffffffffff307f1b176f00 -5e9b4dfbfdfaffffff5b994a176f00539441ffffffcde0c8176f00197102ffffff -e4efe1176f00176f00d8e7d4ffffffffffffffffffffffffffffffdfebdb176f00 -176f00b9d4b2ffffffffffffb0cea8fffffffffffe1a7103176f00bdd6b6ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c9 -95b3d795b3d795b3d795b3d795b3d792afd287a2c35784ba568dd15a93db5a93dc -5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc -5a93db5a93dc5a93db5a93db5a93db5a93db5a93db5a93db5a93dc5a93db5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc -5a93db5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc -5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc -5a93db5a93db5a93db5a93db5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc578fd55282bc86a2c292afd295b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d691aed185a0c14f81bc5891d75a93db5a93dc -5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc -5a93db5a93dc5a93db5a93db5a93db5a93db5a93db5a93db5a93dc5a93db5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc -5a93db5a93dc5a93dc2f4d74000000436ea45a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc -5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc -5a93db5a93db5a93db5a93db5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc -5a93dc5a93dc548ace5d87b889a5c692b0d395b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffe1ecdd176f00176f00176f004d913b -ffffffffffffffffffffffff307f1b176f00b5d1adffffffa5c79b176f0040892d -ffffffffffffffffffffffffafcda6176f00176f004c903a78ab6affffff6da55e -176f001a7103488d351c72051d7306176f0081b174ffffff5e9b4d176f00448b31 -9bc1904e913c176f00176f00bdd6b6ffffffa5c79b176f0040892dffffffffffff -ffffffffffffffffffffffff619d51176f0023770d6ba35c549543176f00176f00 -cbdfc5ffffffffffff307f1b176f0019710232801d438b30176f00176f00b2cfaa -ffffffcde0c8176f00197102ffffffffffff639e53176f002c7c167fb0728ab77e -67a157317f1cffffffffffff589847176f002075095a99493e872a176f00f9fcf8 -ffffff3a8526176f002b7b1551933fd6e6d1ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd2 -87a2c35684ba548cd15892da5891da5892da5891da5891da5892db5891da5892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db5892db5891da5892db5891da5891da5891da -5891da5891da5891da5892db5891da5892db5892db5892db5892db5892db5892db -5891da5892db5891da5891da5892db5891da5892db5892db5891da5892db5891da -5891da5892db5891da5892db5892db5892db5892db5892db5892db5892da5892db -5892da5892da5891da5892da5891da5891da5892db5891da5892db5892db5892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5891da5892db5891da5891da5891da5891da5891da -5891da5892db5891da5892db5892db5892db5892db5892db5892db5891da5892db -5891da5891da5892db5891da5892db5892db5891da5892db5891da5891da5892db -5891da5892db5892db5892db5892db5892db5892db568ed45282bc86a2c292afd2 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed1 -85a0c14f81bc5690d65892da5891da5892da5891da5891da5892db5891da5892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db5892db5891da5892db5891da5891da5891da -5891da5891da5891da5892db5891da5892db5892db5892db5892db5892db5892db -5891da5892db5891da5891da5892db5891da5892db5892db4776b12f4e755084c7 -5891da5892db5891da5892db5892db5892db5892db5892db5892db5892da5892db -5892da5892da5891da5892da5891da5891da5892db5891da5892db5892db5892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5891da5892db5891da5891da5891da5891da5891da -5891da5892db5891da5892db5892db5892db5892db5389ce5d86b889a5c692b0d3 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e6 -2222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff4d913b176f00176f00a2c598ffffffffffffffffffffffff378323176f00 -bcd6b5ffffffaccca3176f00488d35fffffffffffffffffffffffffafcf9549542 -176f00176f006ba35cffffffe5efe241892e176f00197102609d50a6c89d176f00 -87b57bffffffdbe9d73b8627176f00176f004b90396aa35b176f00c3dabcffffff -accca3176f00488d35fffffffffffffffffffffffffffffffffffff0f6ee6ca45d -1b7204176f00176f00378323bfd7b8ffffffffffffffffff3682211e7307b1cfa9 -267910176f001d73068bb77fffffffffffffcde0c8176f00197102ffffffffffff -eef5ec6ea55f1a7103176f00176f001b7204629e52ffffffffffffeaf2e75b994a -187001176f001c720573a965ffffffffffffb7d2af22760c176f001b7204dce9d8 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d7 -95b3d795b3d795b3d795b3d792afd287a2c35684ba538bd15691da5690da5691da -5690da5690da5691da5690da5691da5691da5690d95691da5690d95690d95690d9 -5690d95690d95690d95690d95690d95690d95690d95690d95690d95690d95690d9 -5690da5690d95690da5690da5691da5690da5691da5691da5690d95691da5690d9 -5690d95690d95690d95690d95690d95690da5690d95690da5690da5690d95690da -5690d95690d95691da5690d95691da5691da5690d95691da5690d95690d95690d9 -5690d95690d95690d95691da5690d95691da5691da5690da5691da5690da5690da -5691da5690da5691da5691da5690d95691da5690d95690d95690d95690d95690d9 -5690d95690d95690d95690d95690d95690d95690d95690d95690d95690da5690d9 -5690da5690da5691da5690da5691da5691da5690d95691da5690d95690d95690d9 -5690d95690d95690d95690da5690d95690da5690da5690d95690da5690d95690d9 -5691da5690d95691da5691da5690d95691da5690d95690d95690d95690d95690d9 -5690d9548dd45282bc86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d693b1d687a9d180a4cd80a3ce80a3ce -80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce -80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce -80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce -80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce -80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce -80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce -80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce80a3ce82a5ce88aad2 -94b2d694b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d691aed185a0c14f81bb548fd65691da5690da5691da -5690da5690da5691da5690da5691da5691da5690d95691da5690d95690d95690d9 -5690d95690d95690d95690d95690d95690d95690d95690d95690d95690d95690d9 -5690da5690d95690da5690da5691da5690da5691da5691da5690d95691da5690d9 -5690d95690d95690d95690d95690d95690da5690d95690da5690da5690d95690da -5690d95690d95691da5690d95691da5691da5690d95691da5690d95690d95690d9 -5690d95690d95690d95691da5690d95691da5691da5690da5691da5690da5690da -5691da5690da5691da5691da5690d95691da5690d95690d95690d95690d95690d9 -5690d95690d95690d95690d95690d95690d95690d95690d95690d95690da5690d9 -5690da5690da5691da5690da5691da5691da5690d95691da5690d95690d95690d9 -5690d95188cc5d86b889a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffef5f9f3f8fbf7ffffffffffff -fffffffffffffffffffdfefcf8fbf7fffffffffffffffffff7faf6fefefdffffff -ffffffffffffffffffffffffffffffeaf2e7e0ecdcfffffeffffffffffffffffff -e5efe2f0f6eefffffffffffff7faf6fffffefffffffffffffefefde1ecddebf3e8 -fffffffffffef7faf6fffffffffffffffffff7faf6fefefdffffffffffffffffff -fffffffffffffffffffffffffffffffbfdfadce9d8eff5edffffffffffffffffff -fffffffffffffbfdfafafcf9fffffff7faf6d9e8d5f8fbf7ffffffffffffffffff -c1d9ba176f00277911fffffffffffffffffffffffffbfdfaddead9dbe9d7f8fbf7 -fffffffffffffffffffffffffffffff5f9f3dae8d6f5f9f3ffffffffffffffffff -fffffff8fbf7deebdaf1f6efffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c3 -5683ba518ad0548fd9548ed8548fd9548ed8548ed8548fd8548ed8548fd8548fd8 -548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9 -548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd8548fd9 -548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9 -548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9 -548fd8548fd9548fd8548fd8548fd8548fd8548fd8548fd8548fd9548fd8548fd9 -548fd9548ed8548fd9548ed8548ed8548fd8548ed8548fd8548fd8548fd9548fd8 -548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd9 -548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd8548fd9548fd8548fd8 -548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9 -548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9 -548fd8548fd8548fd8548fd8548fd8548fd8528bd35282bc86a2c292afd295b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d689a8d06591c5 -4f82be5787c35e8ec95e8dc95e8dca5e8dca5e8dc95e8dca5e8dc95e8dc95e8dca -5e8dc95e8dca5e8dca5e8dca5e8dca5e8dca5e8dca5e8dca5e8dca5e8dca5e8dca -5e8dc95e8dca5e8dc95e8dc95e8dca5e8dc95e8dca5e8dca5e8dc95e8dca5e8dc9 -5e8dc95e8dca5e8dc95e8dca5e8dca5e8dca5e8dca5e8dca5e8dca5e8dc95e8dca -5e8dc95e8dc95e8dc95e8dc95e8dc95e8dc95e8dca5e8dc95e8dca5e8dca5e8dca -5e8dca5e8dca5e8dca5e8dca5e8dca5e8dca5e8dca5e8dc95e8dca5e8dc95e8dc9 -5e8dca5e8dc95e8dca5e8dca5e8dc95e8dca5e8dc95e8dc95e8dca5e8dc95e8dca -5e8dca5e8dca5e8dca5d8cc85486c25284bf6d96c78dadd394b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c1 -4e81bb528dd5548fd9548ed8548fd9548ed8548ed8548fd8548ed8548fd8548fd8 -548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9 -548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd8548fd9 -548fd8548fd8548fd9548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9 -548fd8548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9 -548fd8548fd9548fd8548fd8548fd8548fd8548fd8548fd8548fd9548fd8548fd9 -548fd9548ed8548fd9548ed8548ed8548fd8548ed8548fd8548fd8548fd9548fd8 -548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9548fd9 -548fd9548fd9548fd9548fd9548fd9548fd9548fd9548fd8548fd9548fd8548fd8 -548fd9548fd8548fd9548fd9548fd8548fd95087cc5d86b889a5c692b0d395b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f5 -0000ffb7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff8cb8803b8627176f004d913bffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d7 -95b3d795b3d795b3d792afd287a2c35683ba5088ce528dd7528ed8528dd7528ed8 -528ed8528dd7528ed8528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8 -528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7 -528ed8528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7 -528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -518ad25282bc86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d793b1d5789dca5082be739fdc90b8f798bffd98bffe98bffd98bffe98bffe -98bffe98bffe98bffe98bffe98bffd98bffe98bffd98bffd98befd98bffd98befd -98befd98bffd98befd98bffd98bffd98befd98bffd98befd98befd98bffd98befd -98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd98bffd -98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffe98bffe -98bffe98bffe98bffd98bffe98bffd98bffd98befd98bffd98befd98befd8bb4f2 -6896d34b7fbb8aaad094b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d691aed185a0c14e81bb518bd3528dd7528ed8528dd7528ed8 -528ed8528dd7528ed8528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8 -528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8528dd7 -528ed8528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7 -528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7 -4f86cb5d86b889a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff478d34176f00 -287a12c9dec3ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -efefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c35683ba -4f88ce508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6508cd6 -508cd7508cd6508cd7508cd7508cd6508cd7508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6 -508cd7508cd7508cd6508cd7508cd6508cd6508cd6508cd6508cd6508cd6508cd7 -508cd6508cd7508cd7508cd7508cd7508cd7508cd7508cd6508cd7508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6508cd6508cd7508cd6 -508cd7508cd7508cd6508cd7508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7 -508cd6508cd7508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7 -508cd7508cd7508cd7508cd7508cd74f89d15282bc86a2c292afd295b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d793b1d57ea1ca4a7ebb89b2f096befd96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc -96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd -96befd96befd96befd96bdfc96befd96bdfc96bdfc96befc96bdfc96befc96befc -96befd96befc96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd -96befd96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd -96bdfc96befd96bdfc96bdfc96befd96bdfc7faae94a7ebb84a5cd94b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14e81bb -4f8ad2508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6508cd6 -508cd7508cd6508cd7508cd7508cd6508cd7508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6 -508cd7508cd7508cd6508cd7508cd6508cd6508cd6508cd6508cd6508cd6508cd7 -508cd6508cd7508cd7508cd7508cd7508cd7508cd7508cd6508cd7508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6508cd6508cd7508cd6 -508cd7508cd7508cd6508cd7508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd64e86cb5d86b889a5c692b0d395b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e6e6e62222f50000ff -b7b7e2f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffeef5ecd8e7d4f8fbf7ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d7 -95b3d795b3d792afd287a2c35683ba4c86cc4c89d44c89d44c89d44c89d44c89d4 -4c8ad54c89d44c8ad54c8ad54c8ad44c8ad54c8ad44c8ad44c89d44c8ad44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c8ad44c89d44c8ad44c8ad44c89d4 -4c8ad44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c8ad54c89d4 -4c8ad54c8ad54c8ad44c8ad54c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c8ad44c89d44c8ad44c8ad44c89d44c8ad44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c87cf -5282bb86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d794b2d686a6cd -4b7fbb89b2f194bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc -94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb7aa6e35385bf8eacd094b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d691aed185a0c14e81bb4b88d14c89d44c89d44c89d44c89d44c89d4 -4c8ad54c89d44c8ad54c8ad54c8ad44c8ad54c8ad44c8ad44c89d44c8ad44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c8ad44c89d44c8ad44c8ad44c89d4 -4c8ad44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c8ad54c89d4 -4c8ad54c8ad54c8ad44c8ad54c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c8ad44c89d44c8ad44c8ad44c89d44c8ad44c84ca -5d86b889a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca -85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e6e6e62222f50000ffb7b7e2f5f5f5fdfdfdffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef -92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c35683ba4a85cc -4a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d34a87d24a87d3 -4a87d24a87d24a88d34a87d24a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d3 -4a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d3 -4a87d34a87d34a87d34a87d34a87d34a87d34a88d34a87d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a87d34a88d34a87d34a87d34a87d24a87d34a87d24a87d2 -4a88d34a87d24a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d34a88d34a87d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d3 -4a87d34a87d34a87d34a87d34a86ce5282bb86a2c292afd295b3d795b3d795b3d7 -95b3d795b3d794b2d692afd2628ec16f9dda92bafa92bbfa92bafa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa -92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa92bbfb92bbfa92bbfa92bafa92bbfa -92bafa92bafa92bbfa92bafa92bbfa92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa -92bbfb92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bafa92bbfa92bafa92bafa92bafa92bafa92bafa92bafa92bbfa92bafa92bbfa -92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bbfb -92bbfa92bbfb92bbfb92bbfa92bbfb92bbfa92bbfa6090cd7196c392b0d395b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14e81bb4a87d0 -4a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d34a87d24a87d3 -4a87d24a87d24a88d34a87d24a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d3 -4a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d3 -4a87d34a87d34a87d34a87d34a87d34a87d34a88d34a87d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a87d34a88d34a87d34a87d34a87d24a87d34a87d24a87d2 -4a88d34a87d24a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d34a88d34a87d3 -4a88d34a88d34a88d34a88d34a83c95d86b889a5c692b0d395b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefec2c2fcebebf7e5e5e52222f50000ffb6b6e1 -f3f3f3c1c1fbf1f1fdfefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d7 -95b3d792afd287a2c35583ba4984cb4887d24887d24887d24887d24887d24886d2 -4887d24886d24886d24887d24886d24887d24887d24886d24887d24886d24886d2 -4886d24886d24886d24886d24887d24886d24887d24887d24886d24887d24886d2 -4886d24887d24886d24887d24887d24886d24887d24886d24886d24886d14886d2 -4886d14886d14887d24886d14887d24887d24886d24887d24886d24886d24886d2 -4886d24886d24886d24887d24886d24887d24887d24886d24887d24886d24886d2 -4887d24886d24887d24887d24887d24887d24887d24887d24886d24887d24886d2 -4886d24887d24886d24887d24887d24886d24887d24886d24886d24886d24886d2 -4886d24886d24887d24886d24887d24887d24886d24887d24886d24886d24887d2 -4886d24887d24887d24886d24887d24886d24886d24886d14886d24886d14886d1 -4887d24886d14887d24887d24886d24887d24886d24886d24886d24886d24886d2 -4886d24887d24886d24887d24887d24886d24887d24886d24886d24985ce5182bb -86a2c292afd295b3d795b3d795b3d795b3d795b3d793b1d58caacc4f81be88b3f2 -90baf990b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f9 -90baf990baf990b9f990baf990b9f990b9f990baf990b9f990baf990baf990b9f9 -90baf990b9f990b9f990baf990b9f990baf990baf990b9f990baf990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990baf990b9f990baf990baf990b9f990baf9 -90b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f990baf990baf990b9f9 -90baf990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f990baf990baf9 -90b9f990baf990b9f990b9f990baf990b9f990baf990baf990b9f990baf990b9f9 -90b9f97aa7e55b89c08faccf94b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d691aed185a0c14e81bb4886cf4887d24887d24887d24887d24887d24886d2 -4887d24886d24886d24887d24886d24887d24887d24886d24887d24886d24886d2 -4886d24886d24886d24886d24887d24886d24887d24887d24886d24887d24886d2 -4886d24887d24886d24887d24887d24886d24887d24886d24886d24886d14886d2 -4886d14886d14887d24886d14887d24887d24886d24887d24886d24886d24886d2 -4886d24886d24886d24887d24886d24887d24887d24886d24887d24886d24886d2 -4887d24886d24887d24887d24887d24887d24887d24887d24886d24887d24886d2 -4886d24887d24886d24887d24887d24886d24887d24886d24886d24886d24886d2 -4886d24886d24887d24886d24887d24887d24886d24887d24886d24886d24887d2 -4886d24887d24887d24886d24887d24886d24886d24886d14886d24982c85d86b8 -89a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdb9b9f90000ff -4646fae1e1e12222f50000ffb5b5e09696f30000ff6363fafbfbfbfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc8 -6e98c995b3d795b3d795b3d795b3d795b3d792afd287a2c35583ba4882ca4684d0 -4685d14684d04685d14685d14685d14685d14685d14685d14685d04685d14685d0 -4685d04685d14685d04685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14684d04685d14684d04684d04685d14684d04685d1 -4685d14685d14685d14685d14685d14684d04685d14684d04684d04685d14684d0 -4685d14685d14685d14685d14685d14685d14685d04685d14685d04685d04685d1 -4685d04685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14684d04685d14684d04684d04685d14684d04685d14685d14685d1 -4685d14685d14685d14783cc5182bb86a2c292afd295b3d795b3d795b3d795b3d7 -95b3d792afd2809ec55485c18eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f8 -8eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88ab3f44e82bd8ba7c993b0d495b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d691aed185a0c14e81bb4683cd4684d0 -4685d14684d04685d14685d14685d14685d14685d14685d14685d04685d14685d0 -4685d04685d14685d04685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14684d04685d14684d04684d04685d14684d04685d1 -4685d14685d14685d14685d14685d14684d04685d14684d04684d04685d14684d0 -4685d14685d14685d14685d14685d14685d14685d04685d14685d04685d04685d1 -4685d04685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14882c85c86b889a5c692b0d395b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9dadaee0d0dfc0000ff9797e22121f40000ffa6a6db1414fb -0000ff9595eff6f6f6fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d7 -92afd287a2c35583b94682ca4484d04483cf4484d04483cf4483cf4484d04483cf -4484d04484d04484d04484d04484d04484d04483cf4484d04483cf4483cf4484d0 -4483cf4484d04484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d0 -4483d04484d04483d04483d04483cf4483d04483cf4483cf4483cf4483cf4483cf -4483cf4484d04483cf4484d04484d04483cf4484d04483cf4483cf4484d04483cf -4484d04484d04484d04484d04484d04484d04483cf4484d04483cf4483cf4484d0 -4483cf4484d04484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d0 -4484d04484d04484d04484d04483cf4484d04483cf4483cf4484d04483cf4484d0 -4484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d04483d04484d0 -4483d04483d04483cf4483d04483cf4483cf4483cf4483cf4483cf4483cf4484d0 -4483cf4484d04484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d0 -4484d04484d04484d04484d04483cf4484d04483cf4483cf4683cc5181bb86a2c2 -92afd295b3d795b3d795b3d795b3d794b2d690aed17798bf5a8bc68cb6f78cb6f7 -8cb6f78cb6f78cb6f78cb6f78cb6f68cb6f78cb6f68cb6f68cb6f78cb6f68cb6f7 -8cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f78cb6f7 -8cb6f78cb6f78cb6f78cb6f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f7 -8cb7f78cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f68cb7f78cb6f68cb6f6 -8cb6f78cb6f68cb6f78cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f7 -8cb6f78cb6f68cb6f78cb6f68cb6f68cb6f78cb6f68cb6f78cb6f78cb6f78cb6f7 -8cb6f78cb6f78cb6f68cb6f78cb6f68cb6f68cb6f78cb6f68cb6f78cb6f78cb7f7 -8cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb6f78cb6f78cb6f78cb6f7 -8cb6f74c80bc86a1c392afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -91aed185a0c14e80bb4483cd4484d04483cf4484d04483cf4483cf4484d04483cf -4484d04484d04484d04484d04484d04484d04483cf4484d04483cf4483cf4484d0 -4483cf4484d04484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d0 -4483d04484d04483d04483d04483cf4483d04483cf4483cf4483cf4483cf4483cf -4483cf4484d04483cf4484d04484d04483cf4484d04483cf4483cf4484d04483cf -4484d04484d04484d04484d04484d04484d04483cf4484d04483cf4483cf4484d0 -4483cf4484d04484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d0 -4484d04484d04484d04484d04483cf4484d04483cf4483cf4484d04483cf4484d0 -4484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d04483d04484d0 -4483d04483d04483cf4483d04483cf4483cf4483cf4483cf4781c75c86b889a5c6 -92b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef8f8f8e5e5e57474e30000ff -1d1df71f1ff30000ff4c4ce90000ff2d2df2dcdcddf2f2f2fdfdfdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -d8e7d4ddead9ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff0f6eec5dbbfcde0c8 -fffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c9 -95b3d795b3d795b3d795b3d795b3d792afd287a2c35483ba4580c94382cc4382cc -4382cc4382cc4382cc4382cb4382cc4382cb4382cb4382cb4382cb4382cb4382cb -4382cc4382cb4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc -4382cc4382cb4382cc4382cb4382cb4382cc4382cb4382cc4382cc4382cc4382cc -4382cc4382cc4382cb4382cc4382cb4382cb4383cc4382cb4383cc4383cc4382cc -4383cc4382cc4382cc4382cc4382cc4382cc4382cc4382cb4382cc4382cb4382cb -4382cc4382cb4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc -4382cc4382cb4382cc4382cb4382cb4382cb4382cb4382cb4382cb4382cc4382cb -4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cb -4382cc4382cb4382cb4382cc4382cb4382cc4382cc4382cc4382cc4382cc4382cc -4382cb4382cc4382cb4382cb4383cc4382cb4383cc4383cc4382cc4383cc4382cc -4382cc4382cc4382cc4382cc4382cc4382cb4382cc4382cb4382cb4382cc4382cb -4382cc4382cc4481ca5081bb86a2c292afd295b3d795b3d795b3d795b3d794b2d6 -8faccf7495bc5a8ac68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f6 -8ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f5 -8ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f6 -8ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f54c80bc829ec191aed194b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d691aed185a0c14e80bc4382cc4382cc4382cc -4382cc4382cc4382cc4382cb4382cc4382cb4382cb4382cb4382cb4382cb4382cb -4382cc4382cb4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc -4382cc4382cb4382cc4382cb4382cb4382cc4382cb4382cc4382cc4382cc4382cc -4382cc4382cc4382cb4382cc4382cb4382cb4383cc4382cb4383cc4383cc4382cc -4383cc4382cc4382cc4382cc4382cc4382cc4382cc4382cb4382cc4382cb4382cb -4382cc4382cb4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc -4382cc4382cb4382cc4382cb4382cb4382cb4382cb4382cb4382cb4382cc4382cb -4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cc4382cb -4382cc4382cb4382cb4382cc4382cb4382cc4382cc4382cc4382cc4382cc4382cc -4382cb4382cc4580c65b86b889a5c692b0d395b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e9e9e9cacace1f1ff40000ff1010f70000ff0303fd0101fe9e9ed1 -e0e0e0f5f5f5fefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffddead9176f00176f00f7faf6ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffc6dcc024770e176f00176f00bad5b3ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d792afd2 -88a3c46287b44a7ebb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d7fba5c85b686a2c292afd2 -95b3d795b3d795b3d795b3d793b1d58fabce7394bb5989c688b4f588b4f588b3f4 -88b4f588b3f488b3f488b3f488b3f488b3f488b3f488b4f588b3f488b4f588b4f5 -88b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f5 -88b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b3f488b4f5 -88b3f488b3f488b3f488b3f488b3f488b3f488b4f588b3f488b4f588b4f588b3f4 -88b4f588b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f5 -88b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b3f488b4f588b3f4 -88b3f488b3f488b3f488b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f5 -88b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b3f4 -4c80bc829ec090aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d691aed1 -86a1c15784b74c7fbb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb -4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb4d80bb6b8cb38aa6c792b0d3 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcf2f2f2dadada8c8cd10000ff -0101fe0000ff0000ff4848e4d1d1d1eaeaeafafafafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffdce9d8176f00 -176f00f6faf5ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff50933e176f004b903986b479d4e4cf -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff8db88186b479f0f6eeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d7 -95b3d795b3d795b3d795b3d792b0d38aa6c77b94b16e849f697e97687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687d966d839d7891ae89a4c692b0d395b3d795b3d795b3d795b3d793b1d58eabcd -7394ba5989c686b3f486b3f486b2f486b3f486b2f486b2f486b2f486b2f486b2f4 -86b2f486b2f386b2f486b2f386b2f386b2f486b2f386b2f486b2f486b2f486b2f4 -86b2f486b2f486b2f386b2f486b2f386b2f386b2f486b2f386b2f486b2f486b2f4 -86b2f486b2f486b2f486b2f386b2f486b2f386b2f386b3f486b2f386b3f486b3f4 -81abeb688bbe81acec86b2f486b2f386b2f486b2f386b2f386b3f486b2f386b3f4 -86b3f486b2f386b3f486b2f386b2f386b2f386b2f386b2f386b2f386b3f486b2f3 -86b3f486b3f486b2f486b3f454709a4c658b86b2f486b2f486b2f486b2f486b2f3 -86b2f486b2f386b2f386b2f486b2f386b2f486b2f486b2f486b2f486b2f486b2f4 -86b2f386b2f486b2f386b2f386b2f44c7fbc819dbf90aed194b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d692afd288a4c5778fac6c819b687d96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96687c96 -697f987086a17d96b58ca8ca93b0d495b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d7749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e8e8e8cdcdcd3838e70000ff0000ff0808fbb3b3c9e0e0e0f5f5f5 -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffdce9d8176f00176f00f6faf5ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -2b7b15176f00bfd7b8ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfefc176f00176f00d4e4cfffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcefefef92abc86e98c995b3d795b3d795b3d795b3d795b3d793b1d58eabcd -849fbf7b94b1778fac768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab778fac7a93b1839dbd8daacc93b0d495b3d7 -95b3d795b3d795b3d793b1d58eabcd7394ba5889c684b0f284b0f284b1f384b0f2 -84b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f384b1f384b0f2 -84b1f384b0f284b0f284b1f284b0f284b1f284b1f254719b1d273607090d0c1117 -2633466c91c784b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f284b1f3 -84b1f37198d07198d084b1f284b1f24a6287000000506b9484b0f284b1f384b0f2 -84b1f384b1f384b1f284b1f384b1f284b1f284b1f384b1f284b1f384b1f384b1f3 -84b1f384b1f384b1f384b0f284b1f384b0f284b0f284b1f384b0f219222e0a0e14 -84b0f284b1f384b0f284b0f284b1f384b0f284b1f384b1f384b0f284b1f384b0f2 -84b0f284b1f284b0f284b1f284b1f284b1f284b1f284b1f284b1f284b1f34c7fbc -819dbf90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d793b0d48da9cc -829cbc7a92b0778fac768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab768eab -768eab768eab768eab768eab768eab778fac7c95b386a1c18faccf93b1d595b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d7749bca85a3c6edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf3f3f3dddddda6a6c80101fe -0000ff5959dbd3d3d3eeeeeefbfbfbfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbad5b3 -85b37877ab69b0cea8fefefdfffffffffffff3f8f1a5c79b7cae6f80b073a7c99e -f9fcf8fffffffffffffffffff8fbf7a2c59878ab6a9dc393d5e5d0176f00176f00 -f6faf5ffffffffffffebf3e99cc29276aa688db881cee1c9ffffffffffffffffff -ffffffffffffffffffeef5ec9bc1901c7205176f007aac6ca3c699ffffffffffff -f3f8f1a5c79b7cae6f80b073a7c99ef9fcf8ffffffffffffdeebda91bb85d3e4ce -c7dcc172a864b9d4b2ffffffa7c99e9bc190ffffffb6d2ae79ac6b8ab77eeaf2e7 -ffffffbcd6b575aa678cb880e2eddffffffffffffffffffff7faf6afcea77cae6f -72a7638bb77fdae8d6ffffffecf4ea98bf8d176f00176f0081b1749bc190f1f6ef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef92abc86e98c995b3d795b3d7 -95b3d795b3d795b3d794b2d692b0d38eabcd8aa6c788a4c588a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a4c5 -8aa6c78daacc92afd294b2d695b3d795b3d795b3d795b3d793b1d58eabcd7394ba -5889c682aff182aff182aff182aff182aff182aff182aff182aff182aff182aff1 -82b0f282aff182b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f2 -425a7c000000131a243b506e2f40590202030304067097d082aff182aff182aff1 -82aff182aff182b0f282aff182b0f282b0f2131a2510161f82b0f282b0f27198d1 -465f82749cd782aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff1 -82b0f282aff182b0f282b0f282aff282b0f282aff282aff282aff182aff282aff1 -82aff182aff182aff118212e0a0e1382aff182aff182aff182aff182b0f282aff1 -82b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f282b0f282b0f2 -82b0f282b0f282b0f282aff14c7fbc819dbf90aed194b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d692afd28da9cc89a5c688a4c588a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c4 -88a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a3c488a4c5 -8ba7c88fabce93b0d494b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -749bca85a3c6edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefafafaecececd1d1d15757dc1b1bf2c3c3c8e4e4e4f7f7f7fefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff67a157176f00176f00176f00176f009bc191ffffffd4e4cf -33801e176f00176f00176f00176f003d8729ebf3e8fffffffafcf94b9039176f00 -176f00176f0032801d176f00176f00f6faf5ffffffcfe2ca2c7c17176f001c7205 -176f001971029dc393ffffffffffffffffffffffffffffffc4dbbe176f00176f00 -176f00176f00197102fffffed4e4cf33801e176f00176f00176f00176f003d8729 -ebf3e8ffffffa5c79b176f005495431b7204176f006ba35cffffff307f1b176f00 -6aa35b176f00176f00176f0037832375aa67176f00176f00176f002a7b14eef5ec -ffffffffffff438b30176f00176f00176f00176f00197102c7dcc1c0d8b9176f00 -176f00176f00176f00176f00ccdfc6ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -efefef92abc86c96c88cacd48cacd48cacd48cacd48cacd48cacd48babd38aaad2 -89a9d089a9d089a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a9d089a9d08aaad28babd38cacd48cacd48cacd4 -8cacd48cacd48aaad285a4ca6d8fb85788c580aef180aef180aef080aef180aef0 -80aef080aef180aef080aef180aef180aef080aef180aef080aef080adf080aef0 -80adf080adf080aef080adf0749edb0506090f141c78a4e280adf080adf04a648b -00000031435d80aef05f82b4384c696f97d13346612d3e555d7eaf80aef0476085 -080b1007090d374b68374b68374b68384d6a6f97d080aef080aef05878a632445f -2b3a50435c7f7aa7e680aef177a3e1354863688dc44660842a3a504761867eacee -80adf06a8fc7394d6b2734492f40595d7fb080aef080aef118212e0a0e1380aef1 -80aef080aef180aef180aef080aef180aef080aef080adf080aef080adf080adf0 -80aef080adf080aef080aef080adf080aef080adf080adf080aef04c7fbc7a98bc -88a7ce8babd38cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48cacd48babd38aa9d1 -89a9d089a9d089a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf89a8cf -89a8cf89a8cf89a8cf89a8cf89a9d089a9d08aaad28babd38cacd48cacd48cacd4 -8cacd48cacd48cacd48cacd48cacd4719aca84a2c5edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf6f6f6e3e3e3c2c2cd9898d2 -dadadaf0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffb0cea8176f001f74088bb77f -ccdfc676aa68a3c699fffffe478d34176f005a9949d4e4cfc1d9ba307f1b176f00 -76aa68ffffffa6c89d176f001c72059ec394a3c699297a13176f00176f00f5f9f4 -fffffe458c32176f0098bf8dfcfdfbaccca3176f0022760ceff5edffffffffffff -fffffffffffff5f9f4aecda51d7306176f0088b67cb9d3b1fffffe478d34176f00 -5a9949d4e4cfc1d9ba307f1b176f0076aa68ffffffa5c79b176f00176f00378323 -91bb85afcea7ffffff307f1b176f001c72058fb98392bc87176f00176f00176f00 -7daf70a0c4961e7307176f009dc393ffffffffffff67a157a3c699e4efe1ebf3e8 -5c9a4b176f0068a158f5f9f3abcba2176f00176f0091bb85aecda5f7faf6ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefed5e1eea7bfdca7bfdca7bfdca7bfdca7bfdc -a7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdc -a7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdc -a7bfdca7bfdca7bfdca7bfdca6bedba0b8d585a1c4497db95180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb507eb94d7ab24672a85485c4 -7eadf07eadf07eacef7eadf07eacef7eacef7eacef7eacef7eacef7eacef7eadef -7eacef7eadef7eadef7eadef7eadef7eadef7eadef7eadef7eadef587aa8000000 -384d6b7eadef7eadf07eadf075a0de0000001a23317eadef425b7e000000090c11 -161f2b030507010203668dc22b3b52020405020304141c27141c270c1118000000 -5474a07eadf0445d82000000171f2c202c3d0000001e29397eadef6c95ce000000 -0a0e14090d12090c110000004c68907eacef17202c1a24322f415a0f151d010203 -6b92cb7eadf018212d0a0e137eacef7eacef7eacef7eacef7eadef7eacef7eadef -7eadef7eadef7eadef7eadef7eadef7eadef7eadef7eadef7eadef7eadf07eadef -7eadf07eadf07eadef4b7fbc4871a74e7cb5507fba5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb -5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb5180bb4e7fba -7e9dc29eb6d3a5bddaa7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdc -a7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdca7bfdc -a7bfdca5bcd99db4cf94aac392a7c09ab0cba3bad6a6bedba7bfdca7bfdca7bfdc -a7bfdca7bfdca7bfdca7bfdcd9e3effefefeffffffffffffffffffffffffffffff -ffffff66a056176f005e9b4dffffffffffffffffffffffffd8e7d4176f00176f00 -e6f0e3ffffffffffff9cc292176f0034811fffffff639e53176f0070a661ffffff -ffffffc3dabd176f00176f00f5f9f4ddead9176f001e7307ebf3e8edf4ebedf4eb -2b7b15176f00c5dbbfffffffffffffffffffffffffffffffffffff207509176f00 -c7dcc1ffffffd8e7d4176f00176f00e6f0e3ffffffffffff9cc292176f0034811f -ffffffa5c79b176f0024770ee5efe2ffffffffffffffffff307f1b176f009ac08f -ffffffffffff3e872a176f007cae6fffffffffffff5d9a4c176f007fb072ffffff -fffffffffffffffffffffffffffffea1c597176f004c903afffffffdfefc176f00 -176f00d4e4cfffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefafafa4a7ebb -2d806e2a80652a80652a80652a80652a80652a80652a80652a80652a80652a8065 -2a80652a80652a80652a80652a80652a80652a80652a80652a80652a80652a8065 -2a80652a80652a80652a80652a80652a80652a80652a80652a80652a80652a8065 -2a80652a8065297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64287e6327795f2c726f5185bf7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cacef7cabee7cacef7cacef7cabee7cacef7cabee -7cabee7cabee7cabee48638b000000435d817cabee7cabee7cabee7cabee010202 -0e131b7cabee415a7e0000003f577a7cabee4d6b950000003a50707cabee121a24 -10161e7cabee7cabee4b68910000005373a07aa8eb06080c141c277aa8ec7cabef -2b3c540000006389bf6a93cd00000019223076a3e3678ec50000002d3e567cabee -719cd97cabee7cabee52719d0000004f6d997cabee17202d0a0e137cabee7cabee -7cabee7cabee7cacef7cabee7cacef7cacef7cabee7cacef7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee4a7fba25715d277b61 -287e63297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64297f64 -297f64297f64297f64297f642a80652a80652a80652a80652a80652a80652a8065 -2a80652a80652a80652a80652a80652a80652a80652a80652a80652a80652a8065 -2a80652a80652a80652a80652a80652a8065297f64297d63287a61287960287c62 -297e642a80652a80652a80652a80652a80652a80652a80652f80744a7ebbfafafa -fefefeffffffffffffffffffffffffffffff458c32176f0091bb86ffffffffffff -ffffffffffffb8d3b0176f0024770effffffffffffffffffc1d9ba176f001a7103 -fefefd478d34176f009ac08fffffffffffffdce9d8176f00176f00f6faf5bbd5b4 -176f00176f00176f00176f00176f00176f00176f00b7d2afffffffffffffffffff -ffffffffffffffffff207509176f00c7dcc1ffffffb8d3b0176f0024770effffff -ffffffffffffc1d9ba176f001a7103fefefda5c79b176f0040892dffffffffffff -ffffffffffff307f1b176f00b5d1adffffffffffff4f923d176f0098bf8dffffff -ffffff6ea55f176f0079ac6bffffffffffffd2e3cd649f542e7e191b7204176f00 -176f00498e36fffffffdfefc176f00176f00d4e4cfffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfcf1f1f14c81b8047f09008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000007e00007a0012722e4e85b878a9ec -78a9ec78a8ec78a9ec78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec -78a8ec78a8ec78a9ec78a8ec78a9ec78a9ec78a8ec78a9ec4f6e9b000000395171 -78a8ec78a9ec78a9ec709ede0000001a243378a8ec3f587c000000597db078a8ec -668ec80000002b3c5578a8ec1219240f151e78a8ec78a8ec49679000000050719f -6893ce0000002c3e5778a8ec78a8ec435e850000005171a06790cb000000314562 -78a9ec74a3e400000025354a78a9ec5b80b3233246111923080b0f000000496690 -78a9ec17202d090d1378a8ec78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec -78a9ec78a8ec78a9ec78a9ec78a8ec78a9ec78a8ec78a8ec78a9ec78a8ec78a9ec -78a9ec78a8ec4a7fb9037108007c00007f00008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000007f00007e00007e00007f00008000008000008000008000008000008000 -0080000080000780104f83b7f1f1f1fcfcfcffffffffffffffffffffffffffffff -488d35176f0091bb85ffffffffffffffffffffffffbed7b7176f001d7306fffffe -ffffffffffffb7d2af176f002a7b14ffffff4b9039176f0090ba84ffffffffffff -dce9d8176f00176f00f6faf5c3dabc176f00207509afcea7afcea7afcea7afcea7 -b5d1adf8fbf7ffffffffffffffffffffffffffffffffffff207509176f00c7dcc1 -ffffffbed7b7176f001d7306fffffeffffffffffffb7d2af176f002a7b14ffffff -a5c79b176f0040892dffffffffffffffffffffffff307f1b176f00b5d1adffffff -ffffff4f923d176f0098bf8dffffffffffff6ea55f176f0079ac6bffffffeaf2e7 -24770e176f0072a763a4c69a72a763176f00498e36fffffffdfefc176f00176f00 -d4e4cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefafafae9e9e94c80b8047f09 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -007e00007a0012722e4d84b876a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a6ea76a7eb5f86bd00000018222f75a5e976a7eb76a7eb486690000000314663 -76a6ea3e587c0000005477a876a7eb597fb200000033486676a7eb1219230d131b -76a7eb76a7eb48668f0000004f709e6c99d800000023324676a7eb76a7eb385071 -000000597fb26590ca00000031456176a7eb72a2e4000000253449709fe0040508 -182331597fb244608700000048668f76a7eb16202d090d1376a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a6ea76a7eb -76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb76a6ea4a7fb9037108007c00007f00 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000080000080000080000080000080000780104f83b7e9e9e9fafafa -fefefeffffffffffffffffffffffff6aa35b176f00498e36fcfdfbffffffe4efe1 -cbdfc5e1edde176f00176f00bdd6b6ffffffffffff6ca45d176f00569645ffffff -6ba35c176f004a8f37fefefdffffff7fb072176f00176f00f6faf5e4efe1176f00 -176f00d8e7d4ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff207509176f00c7dcc1ffffffe1edde176f00176f00bdd6b6ffffff -ffffff6ca45d176f00569645ffffffa5c79b176f0040892dffffffffffffffffff -ffffff307f1b176f00b5d1adffffffffffff4f923d176f0098bf8dffffffffffff -6ea55f176f0079ac6bffffffb6d2ae176f00388424ffffffffffff9bc191176f00 -498e36fffffffffffe1a7103176f00bdd6b6ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e5e5e54c80b8047f09008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000007e00007a0012722e4d84b874a6ea74a6ea -74a5ea74a6ea74a5ea74a5ea74a5ea74a5ea74a5ea74a5ea74a5e974a5ea74a5e9 -74a5e974a6ea74a5e974a6ea74a6ea74a5ea74a6ea74a5ea1e2b3d000000233348 -47669038507104050805070a6895d274a6ea3d577b0000000e141c46638d192534 -0000005073a274a6ea19243300010146648d5e87be46648f0000004e6f9d74a5ea -151e2b03040646648e4e6f9d0a0e140d121a70a0e2648fc900000030456174a5e9 -70a0e20000002433496792cf000000223145648fc92a3c5500000046648f74a6ea -161f2c090d1374a5ea74a5ea74a5ea74a5ea74a5e974a5ea74a5e974a5e974a6ea -74a5e974a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea -74a6ea4a7eb9037108007c00007f00008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000780104f83b7e6e6e6f9f9f9fefefeffffffffffffffffffffffffcde0c7 -176f00176f003d87295a994921750a85b378ffffff619d51176f0023770d6ba35c -549543176f00176f00cbdfc5ffffffc2d9bb176f00176f0040892d458c32176f00 -1b7204176f00f5f9f4ffffff639e53176f002c7c167fb0728ab77e67a157317f1c -ffffffffffffffffffffffffffffffffffffffffff207509176f00c7dcc1ffffff -ffffff619d51176f0023770d6ba35c549543176f00176f00cbdfc5ffffffa5c79b -176f0040892dffffffffffffffffffffffff307f1b176f00b5d1adffffffffffff -4f923d176f0098bf8dffffffffffff6ea55f176f0079ac6bffffffd2e3cd176f00 -176f0086b47986b47a1f7408176f00498e36ffffffffffff3a8526176f002b7b15 -51933fd6e6d1ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e4e4e44c80b8047f09008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000007e00 -007a0012722e4d84b872a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e8 -72a4e972a4e86895d32738500304060000000102031924335e87c072a4e872a4e8 -3c567b0000001f2d400001010000002c405b71a3e872a4e9486893010203000000 -43618a4767930000004e71a072a4e95d86be131c28000000000000121b265a81b7 -72a4e96490cc00000031476572a4e96fa0e301010226364d72a4e92d405c000000 -00000026374f00000047669172a4e91822310b101772a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e872a4e972a4e8 -72a4e872a4e972a4e872a4e972a4e972a4e84a7eb9037108007c00007f00008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000080000080000080000080000780104e83b6e5e5e5f9f9f9fefefe -ffffffffffffffffffffffffffffffaacaa1277911176f00176f00378323cde0c7 -fffffff0f6ee6ca45d1b7204176f00176f00378323bfd7b8ffffffffffffffffff -92bc871f7408176f00287a12abcba2458c321a7103f8fbf7ffffffeef5ec6ea55f -1a7103176f00176f001b7204629e52ffffffffffffffffffffffffffffffffffff -ffffff277911176f00cde0c8fffffffffffff0f6ee6ca45d1b7204176f00176f00 -378323bfd7b8ffffffffffffaccca3176f00488d35ffffffffffffffffffffffff -378323176f00bcd6b5ffffffffffff569645176f009fc495ffffffffffff75aa67 -176f0080b073ffffffffffff86b47a1b7204176f0020750993bc881a71034e913c -ffffffffffffb7d2af22760c176f001b7204dce9d8ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e4e4e44c80b8047f09008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000007e00007a0012722e4c84b870a2e770a2e770a3e8 -70a2e770a3e870a3e870a3e870a3e870a3e870a3e870a2e770a3e870a2e770a2e7 -70a3e870a2e770a3e870a3e870a3e870a3e870a3e870a3e870a3e86fa1e66390cd -6c9ee170a2e770a3e870a2e770a2e73b567a000000537aad6796d5699adb70a3e8 -70a3e870a3e870a3e86b9bdd6593d170a3e870a3e86c9ee170a3e870a3e870a3e8 -70a3e86796d66796d670a2e770a3e870a2e770a2e76d9ee16fa1e670a2e770a2e7 -6d9fe36fa0e570a3e870a3e86795d46898d970a2e76d9ee270a3e870a2e76ea1e5 -6ea0e470a3e870a3e870a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e7 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a2e7 -4a7eb9037108007c00007f00008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0780104e83b6e5e5e5f9f9f9fefefeffffffffffffffffffffffffffffffffffff -fffffee2eddfe2eddffffffffffffffffffffffffffffffffbfdfadce9d8eff5ed -fffffffffffffffffffffffffffffffffffffafcf9dfebdbfefefdfffffffcfdfb -f9fcf8fffffffffffffffffffffffffbfdfaddead9dbe9d7f8fbf7ffffffffffff -fffffffffffffffffffffffffffffffffffffcfdfbf8fbf7ffffffffffffffffff -fffffffffffffbfdfadce9d8eff5edfffffffffffffffffffffffffffffff7faf6 -fefefdfffffffffffffffffffffffffdfefcf8fbf7fffffffffffffffffffefefd -f6faf5fffffffffffffffffffffffef6faf5fffffffffffffffffffffffff2f7f0 -dbe9d7fbfdfafffffff9fcf8fdfefcfffffffffffffffffff8fbf7deebdaf1f6ef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e4e4e44c80b8047f09008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000007e00007a00 -12722e4c83b76ea2e76ea2e76ea1e66ea2e76ea1e66ea1e66ea1e76ea1e66ea1e7 -6ea1e76ea2e76ea1e76ea2e76ea2e76ea1e66ea2e76ea1e66ea1e66ea2e76ea1e6 -6ea2e76ea2e76ea1e66ea2e76ea1e66ea1e66ea2e76ea1e66ea2e76ea2e73a5579 -0000005278ac6ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e6 -6ea1e76ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea2e76ea1e66ea2e7 -6ea2e76ea1e76ea2e76ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea2e76ea1e6 -6ea2e76ea2e76ea1e66ea2e76ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea2e7 -6ea1e76ea2e76ea2e76ea1e66ea2e76ea1e66ea1e66ea2e76ea1e66ea2e76ea2e7 -6ea1e66ea2e76ea1e66ea1e66ea2e74a7eb9037108007c00007f00008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000080000080000080000780104e83b6e5e5e5f9f9f9fefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -e4e4e44c80b8047f09008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000007e00007a0012722e4c83b76ca0e66ca0e66ca0e66ca0e6 -6ca0e66ca0e66ca0e56ca0e66ca0e56ca0e56ca0e56ca0e56ca0e56ca0e56ca0e6 -6ca0e56ca0e66ca0e66ca0e56ca0e66ca0e56ca0e56ca0e66ca0e56ca0e66ca0e6 -6c9fe56ca0e66c9fe56c9fe55882bb3a557b6292d26ca0e66ca0e66ca0e66ca0e6 -6ca0e66ca0e56ca0e66ca0e56ca0e56ca0e66ca0e56ca0e66ca0e66ca0e56ca0e6 -6ca0e56ca0e56ca0e66ca0e56ca0e66ca0e66c9fe56ca0e66c9fe56c9fe56ca0e6 -6c9fe56ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e6 -6ca0e56ca0e66ca0e56ca0e56ca0e56ca0e56ca0e56ca0e56ca0e66ca0e56ca0e6 -6ca0e66ca0e56ca0e66ca0e56ca0e56ca0e66ca0e56ca0e66ca0e66c9fe54a7eb9 -037108007c00007f00008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000078010 -4e83b6e5e5e5f9f9f9fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefef9f9f9e4e4e44c80b8047f09008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000007e00007a0012722e -4b83b76a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee46a9fe56a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9fe56a9ee4 -6a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee4 -6a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9fe56a9ee46a9fe56a9fe5 -6a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9ee4497eb9037108007c00007f00008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000080000080000780104e83b6e5e5e5f9f9f9fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e4e4e4 -4c80b8047f09008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000007e00007a0012722e4b83b7689de3689de3689de4689de3689de4 -689de4689de4689de4689de4689de4689de3689de4689de3689de3689de3689de3 -689de3689de3689de3689de3689de3689de3689de4689de3689de4689de4689de3 -689de4689de3689de3689de3689de3689de3689de3689de4689de3689de4689de4 -689de3689de4689de3689de3689de3689de3689de3689de3689de4689de3689de4 -689de4689de3689de4689de3689de3689de4689de3689de4689de4689de3689de4 -689de3689de3689de3689de3689de3689de3689de4689de3689de4689de4689de4 -689de4689de4689de4689de3689de4689de3689de3689de3689de3689de3689de3 -689de3689de3689de3689de3689de4689de3689de4689de4689de3497eb9037108 -007c00007f00008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000080000080000080000080000080000080000080000780104e83b6 -e5e5e5f9f9f9fefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef9f9f9e4e4e44c80b8047f09008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000007e00007a0012722e4b82b7 -669ce2669ce2669be2669ce2669be2669be2669be2669be2669be2669be2669ce2 -669be2669ce2669ce2669ce3669ce2669ce3669ce3669be2669ce3669be2669be2 -669ce2669be2669ce2669ce2669be2669ce2669be2669be2669ce2669be2669ce2 -669ce2669be2669ce2669be2669be2669be2669be2669be2669be2669ce3669be2 -669ce3669ce3669be2669ce3669be2669be2669ce2669be2669ce2669ce2669ce2 -669ce2669ce2669ce2669be2669ce2669be2669be2669ce2669be2669ce2669ce2 -669be2669ce2669be2669be2669be2669be2669be2669be2669ce2669be2669ce2 -669ce2669ce3669ce2669ce3669ce3669be2669ce3669be2669be2669ce2669be2 -669ce2669ce2669be2497eb9037108007c00007f00008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000080000780104e83b6e5e5e5f9f9f9fefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefef9f9f9e4e4e44c80b8 -047f09008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000007e00007a0012722e4a82b6649be2649be2649ae1649be2649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649be2 -649ae1649be2649be2649ae1649be2649ae1649ae1649ae1649ae1649ae1649ae1 -649be2649ae1649be2649be2649ae1649be26399e04f7ab35c8dcf649ae1649ae1 -649ae1649be2649ae1649be2649be2649ae1649be2649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1 -649ae1649ae1649ae1649ae1649ae1649ae1649ae1649ae1497eb9037108007c00 -007f00008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000080000080000080000080000080000080000780104e83b6e5e5e5 -f9f9f9fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefef9f9f9e4e4e44c80b8047f09008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000007e00007a0012722e4a82b66298e0 -6298e06299e06298e06299e06299e06298e06299e06298e06298e06299e06298e0 -6299e06299e06298e06299e06298e06298e03e618e0b121b476fa26299e029405d -0d151f5b8ed01927390e17220e17220e17220e17220e17221f30476298e06298e0 -6299e06298e02f4a6c0e17220e17220e17220e17223b5c876298e06299e06298e0 -6298e06299e06298e06299e06299e06299e06299e06299e06299e06299e06299e0 -4f7cb50000002337516299e06299e06299e06298e06299e06298e06298e06299e0 -6298e06299e06299e06298e06299e06298e06298e06299e06298e06299e06299e0 -6298e06299e06298e06298e06299e06298e06299e06299e06299e06299e06299e0 -6299e06299e0497eb9037108007c00007f00008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000780104e83b6e5e5e5f9f9f9fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef9f9f9e4e4e44c80b8047f09 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -007e00007a0012722e4981b66097df6097df6097df6097df6097df6097df6097df -6097df6097df6097df6098df6097df6098df6098df6097df6098df6097df6097df -3452790000003e62916098df1c2d420000005687c82c4567243853141f2f000000 -162334243853304c706097df6097df6098df6097df1c2d42000000263c592a4261 -2a42614771a76097df6098df6097df6097df6098df6097df6098df6098df6097df -6098df6097df6097df6098df6097df5c92d735547b4c77b06098df6097df6097df -6097df6097df6097df6097df6097df6097df6097df6097df6097df6097df6097df -6097df6098df6097df6098df6098df6097df6098df6097df6097df6098df6097df -6098df6098df6097df6098df6097df6097df6097df497eb9037108007c00007f00 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000080000080000080000080000080000780104e83b6e5e5e5f9f9f9 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef9f9f9e4e4e44c80b8047f09008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000007e00007a0012722e4981b65e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e95dd5e96de5e95dd5e95dd3351790000003d61905e96de1c2c41000000 -5485c65e95dd5e96de35547c0000003b5e8c5e96de5e96de5e96de5e96de5e96de -5e96de1c2c420000005589c95e96de5e96dd5e96dd588cd0273e5b4c7ab533527a -1f324934547c5d94db5e96dd5d95dd3a5c8821354f2338532841602b4667588dd0 -273e5d4066985e96de466fa528405f5385c528406021354f4670a65e96de5e96de -598ed32f4c711e30482841605181bf5e96de5e96de5e96de5e96de5e96de5e95dd -5e96de5e95dd5e95dd5e96de5e95dd5e96de5e96de5e95dd5e96de5e95dd5e95dd -5e96de497eb9037108007c00007f00008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000780104e83b6e5e5e5f9f9f9fefefeffffffffffffffffffffffffffffff -ffffffb1cfa98db881edf4ebffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff7faf68fb983 -a5c89cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefef9f9f9e4e4e44c80b8047f09008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000017f01067f0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e057d0d -05780d1571374981b65c95dd5c95dd5c94dc5c95dd5c94dc5c94dc5c94dd5c94dc -5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd325178 -0000003b608f5c95dd1b2c410000005285c65c95dd5c95dd33547c0000003a5e8b -5c94dd5c95dd5c94dd5c94dd5c95dd5c94dd1b2c410000003c6191426b9f446ea4 -5c94dd4f80be000000070c13070b11060b100000003759855c94dd34547d000101 -253c5a101b2800000018273a4f80be000000263d5b5c95dd304e74000000070c13 -0c141e0102030204065386c85b93db121d2c070c12273f5e0a101806090e5588cc -5c95dd5c94dd5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd5c95dd5c94dd5c95dd -5c95dd5c95dd5c95dd5c95dd5c95dd5c95dd497eb9077013057a0d057d0d067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e067e0e -067e0e067e0e057f0d007f00008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -008000008000008000008000008000008000008000008000008000008000008000 -0080000080000080000080000080000080000780104e83b6e5e5e5f9f9f9fefefe -ffffffffffffffffffffffffffffffedf4eb1f74081c7205f2f7f0ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfefc297a13197102e7f0e4ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f9f9f9e4e4e44a7fba197f4019803d19803d19803d19803d19803d19803d19803d -19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d -19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d -19803d19803d187e3c317f754a7ebb4b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84a7fb6477bb04373a64d81c05a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc -5a93db5a93dc5a93db5a93db3150770000003a5f8f5a93dc1a2b410000005084c4 -5a93db5a93db32537b000000385c8a5a93dc5a93db5a93dc5a93dc5a93db5a93dc -1a2b410000000000000000000000005891d94d7ebc000000121d2c568cd14a7ab6 -0000002035505a93dc1b2c420f19265a93db436da300000040699d4d7ebc000000 -253d5b5a93db2f4d740000002c486c5a93dc2c486c0000003f679a40689d000000 -385b895a93db3d64960000003759855a93dc5a93db5a93dc5a93dc5a93db5a93dc -5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93db5a93dc5a93db5a93db5a93db -4a7ebb4272a4487db24a80b74b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b84b81b8 -4b81b84b81b84b81b84b81b84b81b84b81b84b81b84a7ebb247e5c187f3c19803d -19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d -19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d -19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d19803d -1a7f414a7ebbe5e5e5f9f9f9fefefeffffffffffffffffffffffffffffff92bc87 -176f00589847ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff70a661176f00 -92bc87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef9f9f9e5e5e585a3ba638fb1648eb0648eb0 -648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0 -648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0 -648eb0648eb0648eb0648eb0648eb0648eb0638daf618aab5382b3769dcb95b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d793b1d58eabcd -7394ba5184c25892db5892db5891da5892db5891da5891da5892db5891da5892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db2f4f77000000 -395f8e5892db1a2b410000004f83c45892db5892db31527b000000375c8a5892db -5892db5892db5892db5891da5892db1a2b400000004878b44f83c55085c85892db -4b7dbc000000243c5b5892db558cd30000001b2d445891da2c496d000101274162 -1625380204064e81c24b7dbc000000243c5b5892db2e4d73000000416da45892db -375c8a000000385d8d30507900000003050704060a0305080000002f4f765892db -5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db4b7fbc819dbf90aed194b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d76a95c75582af628bac638daf648eb0648eb0648eb0648eb0648eb0648eb0 -648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0648eb0 -648eb0648eb0648eb0648eb0648eb0638cae3b54cd638cae648eb0648eb0648eb0 -648eb0648eb0648eb0648eb0648eb0648eb189a6bbe6e6e6f9f9f9fefefeffffff -ffffffffffffffffffffffff468c33176f00a2c598ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffb9d4b2176f003c8628ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefbfbfb -eaeaead0d0d0bebebeb9b9b9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8 -b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8 -b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8 -b6b6b6aeaeae6d8db2769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d793b1d58eabcd7394ba5083c15690d95690d95690da5690d9 -5690da5690da5691da5690da5691da5691da5691da5691da5691da5691da5690d9 -5691da5690d95690d92d4c73000000385e8e5690d9192a400000004d81c35690da -5690d930517b000000365a895690d95690d95690d95690d95691da5690d9192b40 -0000004e83c65691da5690d95690d94a7cbb000000233b5a5690d9538cd4000000 -1a2d445690da233b590b131d18293e1d3049416ca45690d94a7cbb000000233b5a -5690d92d4c73000000406ba25690da365b89000000375d8d33568300000031537d -487ab74879b7487ab8538dd45691da5691da5691da5691da5690d95691da5690d9 -5690d95690d95690d95690d95690d95690da5690d95690da5690da5690d94b7fbc -819dbf90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d76c96c77c93aeb0b0b0b6b6b6b8b8b8 -b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8 -b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7b7b7b5b5b57f7fc7 -0000ff8383c5b5b5b5b7b7b7b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9b9b9bebebe -d0d0d0ebebebfbfbfbfefefeffffffffffffffffffffffffebf3e8176f00176f00 -e5efe2fffffffffffffffffff3f8f1a5c79b7cae6f80b073a7c99ef9fcf8ffffff -ffffffdeebda91bb85d5e5d0e5efe289b67d79ac6bafcda6fffffeffffffffffff -ffffffffffffbfd7b886b47a7aac6ca3c699f7faf6ffffffffffffdeebda91bb85 -d3e4cee7f0e495bd8a7aac6cb2cfaafffffffffffffffffff8fbf71c7205176f00 -d8e7d4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf3f3f3e4e4e4d9d9d9d4d4d4d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0d0d0c4c4c47293b8769dcb95b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d793b1d58eabcd7394ba -5083c1548fd9548fd9548fd8548fd9548fd8548fd8548fd8548fd8548fd8548fd8 -548ed8548fd8548ed8548ed8548fd9548ed84474b029476c101b29000000416fa7 -548fd8192a400000004b80c2548fd9548fd92f507a000000355a89548fd8548fd9 -548fd8548fd8548fd8548fd8192a400000002d4d7531547f3154804474b0487bba -000000223b59548fd8518bd30000001a2c44548fd9101c2a080f162743662c4b72 -385e90528bd3487aba000000223b59548ed82c4b720000003e6ba2548fd8355a89 -000000365c8b4678b60001021321314270aa4373ae31537e4b80c2548ed8548fd8 -548ed8548ed8548fd9548ed8548fd9548fd9548fd8548fd9548fd8548fd8548fd9 -548fd8548fd9548fd9548fd94b7fbc819dbf90aed194b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -6d97c8849bb6c7c7c7d0d0d0d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d1d1d1c6c6cb1010f90000ff1313f8c7c7cbd1d1d1d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d4d4d4d9d9d9e5e5e5f4f4f4fdfdfdffffffffffffffffff -ffffffffffffbdd6b6176f001c7205fffffeffffffffffffd4e4cf33801e176f00 -176f00176f00176f003d8729ebf3e8ffffffa5c79b176f0059984824770e176f00 -176f00176f0078ab6affffffffffffffffff70a661176f001870011a7103176f00 -3c8628f0f6eeffffffa5c79b176f005998482b7b15176f00176f00176f008fb983 -ffffffffffffffffff34811f176f00b6d2aeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefbfbfb -f6f6f6f1f1f1efefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefebebeb -dddddd7a9ac0769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d793b1d58eabcd7394ba4f83c1528ed7528ed7528ed8528ed7528ed8 -528ed8528dd7528ed8528dd7528dd7528ed7528dd7528ed7528ed7528dd7528ed7 -3e6aa20001010000001a2c44518cd6528dd71a2d450001014a81c4528ed7528dd7 -30537e000000355c8c528ed8528dd7528ed8528ed8528dd7528ed81e3550000000 -00000000000000000028456a487cbc000000233d5d528ed75089d10001021b2f47 -528dd7243e5e0103051525390e19260000001a2d44487cbd000000233d5d528ed8 -2d4d760000003f6da5528dd7355c8c000000365e90528ed731558204080c000000 -000000080e16487cbd528ed7528dd7528ed7528ed7528dd7528ed7528dd7528dd7 -528dd7528dd7528dd7528dd7528ed7528dd7528ed7528ed7528dd74b7fbc819dbf -90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d76e97c890a7c2e0e0e0ecececefefefefefef -efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef -efefefefefefefefefefefefefefefefefefeeeeeee9e9e97878eb0000ff0000ff -0000ff7d7deae9e9e9eeeeeeefefefefefefefefefefefefefefeff1f1f1f6f6f6 -fbfbfbfefefeffffffffffffffffffffffffffffff99c08e176f0032801dffffff -fffffffffffe478d34176f005a9949d4e4cfc1d9ba307f1b176f0076aa68ffffff -a5c79b176f00176f0050933eb9d3b168a259176f00197102e1eddeffffffb9d3b1 -176f00398425e9f1e6e5efe24f923d176f0086b479ffffffa5c79b176f00176f00 -498e36abcba2569645176f00287a12ffffffffffffffffff4a8f38176f009ac08f -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcf8f8f8e9e9e97e9fc4769dcb95b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d793b1d58eabcd7394ba4f83c1 -508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6 -508cd7508cd6508cd6508cd6508cd6508cd64a83c84a84c9508cd6508dd7508dd7 -4f8bd54e8ad2508cd6508cd6508cd6508cd64d88d0508cd6508cd6508cd6508cd6 -508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6508cd6508cd74e88d0 -4f8bd6508cd7508cd64e89d24f8ad44981c50001011f3653508cd6508cd609111a -09111a508cd64e88d04f8bd5508cd6508cd64d88d0508cd6508cd6508cd64d88d0 -508cd6508cd6508cd64f8bd5477cbf487ec1508cd7508cd7508cd6508cd7508cd6 -508cd6508cd6508cd6508cd6508cd6508dd7508cd6508dd7508dd7508cd6508dd7 -508cd6508cd6508cd64c7fbc829ebf90aed194b2d695b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c9 -96adc8edededf9f9f9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -f9f9f9d9d9f00b0bfc0000ff0000ff0000ff0e0efcdcdcf0f9f9f9fcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefeffffffffffffffffffffffffffffff -ffffff88b67c176f004a8f37ffffffffffffd8e7d4176f00176f00e6f0e3ffffff -ffffff9cc292176f0034811fffffffa5c79b176f00307f1bf7faf6fffffff8fbf7 -21750a176f00a8c99fffffff68a259176f0086b47aedf4ebedf4eb95bd8a176f00 -51933fffffffa5c79b176f00307f1bf5f9f3ffffffd2e3cd176f00176f00f3f8f1 -ffffffffffff629e52176f007cae6fffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec -7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d793b1d58eabcd7896ba4e81be4c8ad54c8ad54c89d44c8ad54c89d44c89d4 -4c89d44c89d44c89d44c89d44c8ad44c89d44c8ad44c8ad44c89d44c8ad44c89d4 -4c89d44c8ad44c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c8ad44c89d4 -4c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44a85cf -09111a0203051323360e19270000002a4d764c89d44c89d44c89d44c89d44c89d4 -4c89d44c8ad54c89d44c8ad54c8ad54c89d44c8ad54c89d44c89d44c89d44c89d4 -4c89d44c89d44c8ad44c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c8ad4 -4c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d34b7fbb849fbf90aed1 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef8f8f85757f50000ff1919f30000ff1919f3 -0000ff5d5df5f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff82b275176f00549542ffffffffffff -b8d3b0176f0024770effffffffffffffffffc1d9ba176f001a7103fefefda5c79b -176f0040892dffffffffffffffffff3f882b176f0092bc87ffffff478d34176f00 -176f00176f00176f00176f00176f00428a2fffffffa5c79b176f0040892dffffff -ffffffe6f0e3176f00176f00eaf2e7ffffffffffff6da55e176f006ba35cffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d793b1d58fabce7d99bb4c80bc4a87d3 -4a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d34a88d34a87d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a87d34a88d34a87d34a87d34a88d34a87d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34580c72f58882748702c517d3e71b14a88d3 -4a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a87d34a88d34a87d34a87d34a88d34a87d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a86ce4f81bc85a0c090aed194b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcbdbdf2 -0000fe0404fd4747da0000ff4949d90303fd0101fec2c2f2fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -8fb983176f003e872affffffffffffbed7b7176f001d7306fffffeffffffffffff -b7d2af176f002a7b14ffffffa5c79b176f0040892dffffffffffffffffff33801e -176f00a3c699ffffff4e913c176f006ca45dafcea7afcea7afcea7afcea7d5e5d0 -ffffffa5c79b176f0040892dffffffffffffe6f0e3176f00176f00eaf2e7ffffff -ffffff569645176f0077ab69ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5 -769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d68faccf829dbc5282b94984cb4886d24886d24886d24886d24886d24886d1 -4886d24886d14886d14886d24886d14886d24886d24887d24886d24887d24887d2 -4886d24887d24886d24886d24886d24886d24886d24886d24886d24886d24886d2 -4886d24887d24886d24887d24887d24886d24887d24886d24886d24887d24886d2 -4887d24887d24886d14887d24886d14886d14886d24886d14886d24886d24887d2 -4886d24887d24887d24886d24887d24886d24886d24886d14886d24886d14886d1 -4886d24886d14886d24886d24886d24886d24886d24886d24886d14886d24886d1 -4886d14886d24886d14886d24886d24887d24886d24887d24887d24886d24887d2 -4886d24886d24886d24886d24886d24886d24a83c65c83b285a0c191aed194b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef6f6f63333f80000ff5555dc5555d70000ff5959d55050de -0000ff3838f7f7f7f7fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffa5c79b176f00267910ffffffffffffe1edde -176f00176f00bdd6b6ffffffffffff6ca45d176f00569645ffffffa5c79b176f00 -1f7408c3dabdffffffcbdfc5176f00176f00c6dcc0ffffff70a661176f00659f55 -ffffffffffffffffffffffffffffffffffffa5c79b176f0040892dffffffffffff -e6f0e3176f00176f00eaf2e7ffffffffffff3f882b176f008eb982ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d690aed185a0c16787ac4c80be4684d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d04685d14685d04685d04685d14685d04685d14685d14685d14685d1 -4685d14685d14684d04685d14684d04684d04685d14684d04685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d0 -4685d14685d04685d04685d14685d04685d14685d14685d14685d14685d14684cf -4c80bc708cad88a3c492afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcefefef1818fa1616f7 -b1b1bd5a5adc0000ff5e5edaafafbe1313f81d1df9f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcee1c9 -176f00176f00f6faf5ffffffffffff619d51176f0023770d6ba35c549543176f00 -176f00cbdfc5ffffffa5c79b176f00176f001b72044d913b23770d176f003e872a -fffffeffffffd5e5d0197102176f005c9a4b8cb8807daf70458c3298bf8dffffff -a5c79b176f0040892dffffffffffffe6f0e3176f00176f00eaf2e7ffffffffffff -277911176f00b8d3b0ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -92b0d389a4c67891ae5580b34a80c14483cf4484d04483cf4483cf4483cf4483cf -4483cf4483cf4484d04483cf4484d04484d04484d04484d04484d04484d04483cf -4484d04483cf4483cf4484d04483cf4484d04484d04483cf4484d04483cf4483cf -4484d04483cf4484d04484d04483cf4484d04483cf4483cf4483cf4483cf4483cf -4483cf4484d04483cf4484d04484d04483cf4484d04483cf4483cf4484d04483cf -4484d04484d04484d04484d04484d04484d04483cf4484d04483cf4483cf4484d0 -4483cf4484d04484d04483cf4484d04483cf4483cf4483cf4483cf4483cf4483cf -4484d04483cf4484d04484d04484d04484d04484d04484d04483cf4484d04483cf -4483cf4484d04483cf4483ce4a7ebb5d80ab7c95b38ba7c993b0d495b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbecececc8c8d6bdbdc9c8c8c85f5fe10000ff6464e0c8c8c8bdbdca -cacad7edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff9fcf822760c176f00c6dcc0fffffffffffff0f6ee -6ca45d1b7204176f00176f00378323bfd7b8ffffffffffffa5c79b176f00388424 -66a056176f00176f003f882bddead9ffffffffffffffffffb7d2af34811f176f00 -176f00176f00307f1bc2d9bbffffffaccca3176f00488d35ffffffffffffebf3e8 -1a71031a7103edf4ebffffffe0ecdc176f00197102ebf3e8ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d793b1d58daacc819bba7088a54f7fb74a7fbc -4283cc4282cf4282cf4282cf4282cf4282cf4282cf4282ce4282cf4282ce4282ce -4282cf4282ce4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf -4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282ce4282cf -4282ce4282ce4283cf4282ce4283cf4283cf4282cf4283cf4282cf4282cf4282ce -4282cf4282ce4282ce4283cf4282ce4283cf4283cf4282ce4283cf4282ce4282ce -4282ce4282ce4282ce4282ce4283cf4282ce4283cf4283cf4282cf4283cf4282cf -4282cf4282cf4282cf4282cf4282cf4282ce4282cf4282ce4282ce4282cf4282ce -4282cf4282cf4282cf4282cf4282cf4282cf4282cf4381ca4c80be597fac748ca8 -849fbf8faccf94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcf1f1f1e2e2e2dbdbdbdadada -6464e60000ff6868e4dadadadcdcdce2e2e2f2f2f2fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff639e53 -176f007eaf71fffffffffffffffffffffffffbfdfadce9d8eff5edffffffffffff -ffffffffffffa5c79b176f0040892dffffffe5efe2e6f0e3ffffffffffffffffff -ffffffffffffffffffffffffedf4ebd7e6d2e8f1e5ffffffffffffffffffffffff -f7faf6fefefdfffffffffffffffffffafcf9fafcf9ffffffffffff97bf8c176f00 -4b9039ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -92afd289a5c67c95b36f85a0587da84c7fbb4c81c04480c5447fc6447fc7447fc6 -447fc6447fc7447fc6447fc7447fc7447fc6447fc7447fc6447fc6447fc6447fc6 -447fc6447fc6447fc6447fc6447fc6447fc6447fc7447fc6447fc7447fc7447fc6 -447fc7447fc6447fc6447fc7447fc6447fc7447fc7447fc6447fc7447fc6447fc6 -447fc6447fc6447fc6447fc6447fc7447fc6447fc7447fc7447fc6447fc7447fc6 -447fc6447fc7447fc6447fc7447fc7447fc7447fc7447fc7447fc7447fc6447fc7 -447fc6447fc6447fc7447fc6447fc7447fc7447fc6447fc7447fc6447fc6447fc7 -447fc6447fc7447fc7447fc6447fc7447fc6447fc6447fc6447fc6447fc6467fc4 -4b80be4d7fba5d7da37188a47f99b88ca8ca92b0d395b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefafafaf4f4f4efefefe7e7e76565e70000ff6b6be7e7e7e7efefeff4f4f4 -fafafafefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffbcd6b5176f00368322ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffa5c79b176f0040892dffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff4d913b176f00a4c69affffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d690add088a3c47b94b27087a2687e99 -5c7c9f577ba7547eb0537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1 -537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1 -537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1 -537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1 -537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1 -537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1 -537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1537eb1 -537eb1537eb1537eb1547eae567ba65f7b9d697f9a738aa67e98b68aa6c792afd2 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefdfdfdf9f9f9ececec6666e8 -0000ff6c6ce8ecececf9f9f9fdfdfdfefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3e872a -176f00ddead9ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffa6c89d176f00428a2fffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f7f01971022c7c17f8fbf7 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -93b1d590add089a4c67f99b8778fac7188a36f85a06d839d6c829c6c819b6c819b -6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b -6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b -6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b -6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b -6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b -6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c819b -6c819b6c819b6c819b6c819b6c819b6c819b6c819b6c829c6d839d6f85a07289a5 -7891ae819bbb8ba7c891aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -6e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff9fcf8edf4ebffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfdfad7e7d3ebf3e8ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffeff5edf6faf5ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d793b1d591aed18ca9cb87a2c3839dbd -7f99b87d96b57d96b47c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b3 -7c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b3 -7c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b3 -7c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b3 -7c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b3 -7c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b3 -7c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b37c95b3 -7c95b37d96b47e97b6809ab9849ebe89a4c68daacc92afd294b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d693b0d491aed18faccf8daacc8ca9cb8ca8ca8ca8ca8ca8ca8ca8ca -8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca -8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca -8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca -8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca -8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca -8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca -8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca8ca9cb8eabcd90add092afd2 -93b1d594b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c9 -97aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec -7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d694b2d693b1d5 -93b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d4 -93b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d4 -93b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d4 -93b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d4 -93b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d4 -93b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d4 -93b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d493b0d4 -93b0d493b0d493b1d594b2d694b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5 -769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d67fa3ce7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc87a9d194b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d680a4ce7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc8eadd494b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d686a8d07da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc7da1cc -7da1cc8babd294b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb -95b3d795b3d795b3d795b3d795b3d795b3d793b1d5799eca4a7ebb6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd4a7ebb8eadd194b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d793b1d57ca0cb4a7ebb6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -5587c35687c093b0d494b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d68cabd14a7ebb6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd6191cd -6191cd6191cd6191cd6191cd6191cd5a8bc84c80bc92b0d394b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d794b2d6 -91aed16f95c16a99d598bffd98bffd98bffd98bffd98bffd98bffd98bffe98bffd -98bffe98bffe98bffe98bffe98bffe98bffe98bffd98bffe98bffd98bffd98befd -98bffd98befd98befd98bffd98befd98bffd98bffd98befd98bffd98befd98befd -98bffd98befd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd -98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe -98bffe98bffe98bffe98bffe98bffd98bffe98bffd98bffd98befd98bffd98befd -98befd98bffd98befd98bffd98bffd98befd98bffd98befd98befd98bffd98befd -98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd98bffd -98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd4f82be88a6ca93b0d4 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d692afd27398c46694d199bffe98bffd -99bffe98bffd98bffd99bffe98bffd99bffe99bffe99c0fe99bffe99c0fe99c0fe -99bffe99c0fe99bffe99bffe98bffd99bffe98bffd98bffd99c0fe98bffd99c0fe -99c0fe99bffe99c0fe99bffe99bffe99bffe99bffe99bffe99bffe99c0fe99bffe -99c0fe99c0fe99bffe99c0fe99bffe99bffe99bffe99bffe99bffe99bffe99c0fe -99bffe99c0fe99c0fe99c0fe99c0fe99c0fe99c0fe99bffe99c0fe99bffe99bffe -98bffd99bffe98bffd98bffd99bffe98bffd99bffe99bffe98bffd99bffe98bffd -98bffd99bffe98bffd99bffe99bffe99c0fe99bffe99c0fe99c0fe99bffe99c0fe -99bffe99bffe98bffd99bffe98bffd98bffd99c0fe98bffd99c0fe99c0fe99bffe -99c0fe99bffe99bffe99bffe99bffe99bffe99bffe99c0fe99bffe99c0fe99c0fe -99bffe99c0fe99bffe99bffe99bffe99bffe99bffe99bffe99c0fe99bffe99c0fe -99c0fe99c0fe99c0fe99c0fe99c0fe99bffe99c0fe99bffe99bffe98bffd99bffe -98bffd98bffd99bffe98bffd99bffe99bffe98bffd99bffe98bffd98bffd99bffe -98bffd99bffe99bffe99c0fe99bffe99c0fe99c0fe99bffe99c0fe99bffe99bffe -98bffd99bffe98bffd98bffd99c0fe88b2ef5788c08fabce93b1d595b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d793b0d486a4ca5284c098bffd98bffd98bffd98bffd98bffd98bffd98bffe -98bffd98bffe98bffe98bffe98bffe98bffe98bffe98bffd98bffe98bffd98bffd -98befd98bffd98befd98befd98bffd98befd98bffd98bffd98befd98bffd98befd -98befd98bffd98befd98bffd98bffd98bffe98bffd98bffe98bffe98bffd98bffe -98bffd98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe98bffe98bffd -98bffe98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd -98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffd98bffe98bffd98bffe -98bffe98bffe98bffe98bffe98bffe98bffd98bffe98bffd98bffd98befd8fb7f5 -5283bf8eabcd93b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d7 -95b3d795b3d795b3d795b3d793b1d58eabcd6a8fbb6a98d596befd96befd96bdfc -96befd96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc -96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd -96befd96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc96befc96bdfc -96befc96befc96befd96befc96befd96befd96bdfc96befd96bdfc96bdfc96befd -96bdfc96befd96befd96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc -96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc -96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd96befd96befd -96befd96befd96befd96bdfc96befd96bdfc96bdfc96befc96bdfc96befc96befc -96befd96befc96befd96befd96bdfc96befd96bdfc96bdfc96befd96bdfc96befd -96befd96befd96befd96befd96befd96bdfc96befd96bdfc96bdfc96bdfc96bdfc -96bdfc96bdfc4f82be829fc291aed194b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d793b1d5 -8eabcd6e91bd6594d196befd96befc96befd96befc96befc96bdfc96befc96bdfc -96bdfc96bdfc96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd -96bdfc96bdfc96befd96bdfc96befd96befd96befc96befd96befc96befc95bdfc -96befc95bdfc95bdfc95bdfc95bdfc95bdfc95bdfc96befc95bdfc96befc96befc -96bdfc96befc96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc95bdfc96bdfc95bdfc -95bdfc96befc95bdfc96befc96befc96bdfc96befc96bdfc96bdfc96befd96bdfc -96befd96befd96befc96befd96befc96befc96bdfc96befc96bdfc96bdfc96bdfc -96bdfc96bdfc96bdfc96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc -96befd96bdfc96befd96befd96befc96befd96befc96befc95bdfc96befc95bdfc -95bdfc95bdfc95bdfc95bdfc95bdfc96befc95bdfc96befc96befc96bdfc96befc -96bdfc96bdfc96bdfc96bdfc96bdfc96bdfc95bdfc96bdfc95bdfc95bdfc96befc -95bdfc96befc96befc96bdfc96befc96bdfc96bdfc96befd96bdfc96befd96befd -96befc96befd96befc96befc96bdfc96befc96bdfc96bdfc96bdfc96bdfc96bdfc -96bdfc96befd96bdfc96befd96befd96bdfc96befd96bdfc96bdfc96befd86b0ee -5686bf89a5c692b0d395b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d691aed1819ec25283c094bcfc94bcfc -94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb -94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb -94bdfc94bcfb94bdfc94bdfc94bcfb94bdfc94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb8bb4f35183be89a4c692b0d394b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca9cb -688cb86998d494bcfb94bcfb94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfc94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb -94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc -94bcfb94bcfc94bcfc94bcfb94bcfc94bcfb94bcfb4e82bd809dbe90aed194b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d682a5cf789dcb779dcb779dcb779dcb -779dcb779dcb779dcb779dcb779cc97398c4668bb85d8ecb79a5e579a5e479a5e5 -79a5e479a5e479a6e579a5e479a6e579a6e579a5e479a6e579a5e479a5e479a5e4 -79a5e479a5e479a5e479a5e579a5e479a5e579a5e579a5e479a5e579a5e479a5e4 -79a5e479a5e479a5e479a5e479a6e579a5e479a6e579a6e579a5e479a6e579a5e4 -79a5e479a5e579a5e479a5e579a5e579a6e579a5e579a6e579a6e579a5e479a6e5 -79a5e479a5e479a5e579a5e479a5e579a5e579a5e479a5e579a5e479a5e479a5e4 -79a5e479a5e479a5e479a5e579a5e479a5e579a5e579a5e479a5e579a5e479a5e4 -79a6e579a5e479a6e579a6e579a5e479a6e579a5e479a5e479a5e479a5e479a5e4 -79a5e479a5e579a5e479a5e579a5e579a5e479a5e579a5e479a5e479a5e479a5e4 -79a5e479a5e479a6e579a5e479a6e579a6e579a5e479a6e579a5e479a5e479a5e5 -79a5e479a5e579a5e579a6e579a5e579a6e579a6e579a5e479a6e579a5e479a5e4 -79a5e579a5e479a5e579a5e579a5e479a5e579a5e479a5e479a5e479a5e479a5e4 -79a5e479a5e579a5e479a5e579a5e579a5e479a5e579a5e479a5e479a6e579a5e4 -79a6e579a6e579a5e48fb8f794bcfb94bcfb94bcfb94bcfb94bcfb94bcfb94bcfc -94bcfb94bcfc94bcfc94bcfb85afee5585be87a2c392afd295b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -90add07e9abe5183c092bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa -92bafa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa -92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa92bafa -92bafa92bbfa92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa -92bbfa92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa92bbfb92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa89b3f25182bd -86a1c191aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d7 -95b3d795b3d795b3d793b0d48ca8ca678bb76897d492bafa92bafa92bbfa92bafa -92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa -92bafa92bbfa92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa92bbfb92bbfa92bbfa -92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa92bbfa92bbfb92bbfa92bbfb -92bbfb92bbfa92bbfb92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bbfa92bbfa92bafa92bbfa92bafa92bafa92bafa92bafa92bafa92bafa92bbfa -92bafa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa92bbfa -92bbfa92bbfa92bbfa92bbfa92bafa92bbfa92bafa92bafa92bbfa92bafa92bbfa -92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa92bbfb92bbfa92bbfa92bafa92bbfa -92bafa92bafa92bbfa92bafa92bbfa92bbfa92bbfb92bbfa92bbfb92bbfb92bbfa -92bbfb92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa92bbfa -92bafa92bbfa92bafa92bafa92bafa92bafa92bafa92bafa92bbfa92bafa92bbfa -92bbfa4e82bd809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d68aaacf -4a7ebb6493d06593d06493d06593d06593d06594d06593d06594d06594d06493d0 -6091cd5e8fcc6594d26594d26594d26594d26594d26594d26594d26594d26594d2 -6594d26594d26594d26594d26594d26594d26594d26594d26594d26594d26594d2 -6594d26594d26594d26594d26594d26494d26594d26494d26494d26594d26494d2 -6594d26594d26594d26594d26594d26594d26494d26594d26494d26494d26594d2 -6494d26594d26594d26594d26594d26594d26594d26494d26594d26494d26494d2 -6594d26494d26594d26594d26594d26594d26594d26594d26594d26594d26594d2 -6594d26594d26594d26594d26594d26594d26594d26594d26594d26594d26594d2 -6594d26594d26594d26594d26594d26594d26594d26594d26594d26594d26594d2 -6594d26594d26594d26494d26594d26494d26494d26594d26494d26594d26594d2 -6594d26594d26594d26594d26494d26594d26494d26494d26594d26494d26594d2 -6594d26594d26594d26594d26594d26494d26594d26494d26494d26594d26494d2 -6594d26594d26594d26594d26594d26594d26594d26594d26594d26594d26594d2 -6594d26594d26594d26594d26594d26594d26594d25385c35c8dcb93bcfb93bcfb -93bbfb93bcfb93bbfb93bbfb93bcfb93bbfb93bcfb93bcfb93bbfb84afed5585bd -86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d690add07d99bd5183c090b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990bafa90b9f990bafa90bafa90b9f990bafa90b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f9 -90baf990baf990b9f990baf990b9f990b9f990baf990b9f990baf990baf990b9f9 -90baf990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990bafa88b2f15182bd85a0c191aed194b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -6e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7 -6796d490baf990baf990b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f9 -90baf990b9f990baf990baf990b9f990baf990b9f990b9f990baf990b9f990baf9 -90baf990b9f990baf990b9f990b9f990baf990b9f990baf990baf990b9f990baf9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f990baf990baf9 -90b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f990baf9 -90baf990b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f9 -90baf990baf990b9f990baf990b9f990b9f990baf990b9f990baf990baf990b9f9 -90baf990b9f990b9f990baf990b9f990baf990baf990b9f990baf990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990baf990b9f990baf990baf990b9f990baf9 -90b9f990b9f990b9f990b9f990b9f990b9f94e82bd809cbd90aed194b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d793b0d484a3c95384c190baf990b9f990baf990b9f990b9f9 -90b9f990b9f990b9f990b9f98fb9f890b9f98fb9f88fb9f890baf98fb9f890baf9 -90baf990b9f990baf990b9f990b9f98fb9f990b9f98fb9f98fb9f990b9f98fb9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990baf9 -90b9f990baf990baf990b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f9 -90baf990b9f990baf990baf990b9f990baf990b9f990b9f990b9f990b9f990b9f9 -90b9f990baf990b9f990baf990baf990b9f990baf990b9f990b9f990b9f990b9f9 -90b9f990b9f98fb9f890b9f98fb9f88fb9f890baf98fb9f890baf990baf990b9f9 -90baf990b9f990b9f98fb9f990b9f98fb9f98fb9f990b9f98fb9f990b9f990b9f9 -90b9f990b9f990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f990baf9 -90baf990b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f990baf990b9f9 -90baf990baf990b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f990baf9 -90b9f990baf990baf990b9f990baf990b9f990b9f990b9f990b9f990b9f990b9f9 -8fb9f890b9f98fb9f88fb9f890baf98fb9f890baf990baf990b9f990baf990b9f9 -90b9f97ca9e85d8ecc8fb9f98fb9f990b9f98fb9f990b9f990b9f990b9f990b9f9 -90b9f990b9f990b9f982adec5585bd86a2c292afd295b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690add0 -7d99bd5183bf8cb7f78cb7f78cb6f68cb7f78cb6f68cb6f68cb6f78cb6f68cb6f7 -8cb6f78cb7f78cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f7 -8cb7f78cb7f78cb6f68cb7f78cb6f68cb6f68cb7f78cb6f68cb7f78cb7f78cb6f7 -8cb7f78cb6f78cb6f78cb6f68cb6f78cb6f68cb6f68cb6f78cb6f68cb6f78cb6f7 -8cb7f78cb6f78cb7f78bb6f66f90c381a8e38cb6f68cb6f68cb7f78cb6f68cb7f7 -8cb7f78cb7f78cb7f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f78cb6f7 -8cb7f78cb7f78cb6f68cb7f78cb6f68cb6f68cb6f78cb6f68cb6f78cb6f78cb7f7 -8cb6f78cb7f78cb7f78cb6f78cb7f78cb6f78cb6f78cb7f784afef5082bd85a0c1 -91aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d7 -95b3d795b3d793b0d48ca8ca678bb76796d38eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f8 -8eb8f88eb7f88eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb7f88eb8f88eb7f8 -8eb7f88eb8f88eb7f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -4e82bd809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690aed17f9cc05384c0 -8eb8f88fb8f88eb8f88fb8f88fb8f88eb8f88fb8f88eb8f88eb8f88fb8f88eb8f8 -8fb8f88fb8f88eb8f88fb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88fb8f8 -8eb8f88fb8f88fb8f88eb8f88fb8f88eb8f88eb8f88fb9f98eb8f88fb9f98fb9f9 -8eb8f88fb9f98eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f8 -8eb8f88fb8f88eb8f88fb8f88fb8f88fb8f88fb8f88fb8f88fb8f88fb8f88fb8f8 -8fb8f88fb8f88eb8f88fb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88fb8f8 -8eb8f88fb8f88fb8f88eb8f88fb8f88eb8f88eb8f88fb8f88eb8f88fb8f88fb8f8 -8eb8f88fb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88fb8f88eb8f88fb8f8 -8fb8f88eb8f88fb8f88eb8f88eb8f88fb9f98eb8f88fb9f98fb9f98eb8f88fb9f9 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88fb8f8 -8eb8f88fb8f88fb8f88fb8f88fb8f88fb8f88fb8f88fb8f88fb8f88fb8f88fb8f8 -8eb8f88fb8f88eb8f88eb8f88eb8f88eb8f88eb8f88eb8f88fb8f88eb8f88fb8f8 -8fb8f88eb8f88fb8f88eb8f88eb8f88fb8f88eb8f88fb8f88fb8f88eb8f88fb8f8 -8eb8f88eb8f88eb8f88eb8f88eb8f88eb8f87ca8e75c8ecc8fb8f88fb8f88eb8f8 -8fb8f88eb8f88eb8f88fb9f98eb8f88fb9f98fb9f98eb8f881adec5585bd86a2c2 -92afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d690add07d99bd5183bf8ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6698abc151c26151b25 -181f2b29364a465c7c83ace98ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f67092c7000000324259 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f6 -8ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f682aeef5082bd85a0c191aed194b2d695b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c9 -97aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec -7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb76595d2 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab4f58ab5f68ab4f58ab4f58ab5f6 -8ab4f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f58ab5f6 -8ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f58ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab4f58ab5f68ab4f58ab4f58ab5f68ab4f58ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f5 -8ab5f68ab5f58ab5f58ab5f68ab5f58ab5f68ab5f68ab5f58ab5f68ab5f58ab5f5 -8ab5f68ab5f58ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f58ab5f68ab5f58ab5f54e82bd809cbd90aed194b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d791b0d57ba0cc7ba0cc7ba0cc7ba0cc7ba0cc7ba0cc7ba0cc7ba0cc -7ba0cc7aa0cb789cc76e91bc4d80bc77a4e377a4e477a4e377a4e477a4e477a4e3 -77a4e477a4e377a4e377a4e377a4e377a4e377a4e377a4e377a4e377a4e377a4e3 -77a4e477a4e377a4e477a4e477a4e377a4e477a4e377a4e377a4e377a4e377a4e3 -77a4e376a4e377a4e376a4e376a4e377a4e376a4e377a4e377a4e377a5e477a4e3 -77a5e477a5e477a4e377a5e477a4e377a4e376a4e377a4e376a4e376a4e377a4e3 -76a4e377a4e377a4e377a4e377a4e377a4e377a4e376a4e377a4e376a4e376a4e3 -77a4e376a4e377a4e377a4e377a4e477a4e377a4e477a4e477a4e377a4e477a4e3 -77a4e377a4e377a4e377a4e377a4e377a4e377a4e377a4e377a4e377a4e477a4e3 -77a4e477a4e477a4e377a4e477a4e377a4e377a4e377a4e377a4e377a4e376a4e3 -77a4e376a4e376a4e377a4e376a4e377a4e377a4e377a5e477a4e377a5e477a5e4 -77a4e377a5e477a4e377a4e376a4e377a4e376a4e376a4e377a4e376a4e377a4e3 -77a4e377a4e377a4e377a4e377a4e376a4e377a4e376a4e376a4e377a4e376a4e3 -77a4e377a4e377a4e477a4e377a4e477a4e477a4e377a4e477a4e377a4e377a4e3 -7ca9e88db7f78db7f78db7f78db7f78db7f78db7f78db7f88db7f78db7f88db7f8 -7aa8e75c8ecc8db7f78db7f78db7f78db7f78db7f78db7f78cb7f78db7f78cb7f7 -8cb7f78db7f77eabea5585bd86a2c292afd295b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd -5183bf88b3f488b3f488b4f588b3f488b4f588b4f588b3f488b4f588b3f488b3f4 -88b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f4 -88b3f488b4f555719a000000222d3d3647611c263300000010151c7ea7e388b3f4 -88b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b3f4 -88b4f588b3f483aceb4b62866b8dc188b3f488b3f488b4f588b3f488b4f588b4f5 -88b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f488b3f488b3f488b3f4 -88b3f488b4f588b3f488b4f588b4f588b3f488b4f588b3f488b3f488b4f588b3f4 -88b4f588b4f588b4f588b4f588b4f588b4f588b3f481adee5082bd85a0c191aed1 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d7 -95b3d793b0d48ca8ca678bb76494d288b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b3f588b4f588b3f588b3f588b3f488b3f588b3f4 -88b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f5 -88b3f488b3f488b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b3f488b4f588b3f488b3f488b4f588b3f488b4f588b4f588b3f588b4f588b3f5 -88b3f588b4f588b3f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b3f588b4f588b3f588b3f588b3f488b3f588b3f488b3f488b4f5 -7499d182acea88b4f588b4f588b4f588b4f588b4f588b3f488b4f588b3f488b3f4 -88b4f588b3f488b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b4f588b3f488b4f5 -88b3f488b3f488b4f588b3f488b4f588b4f588b3f588b4f588b3f588b3f54e82bd -809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d693b0d46490c44c80bd5f8fcd5f8fcd -5f8fcd5f8fcd5f8fcd5f8fcd5f8fcd5f8fcd5f8fcc5f8fcc5e8ecb5587c45e8fcf -5e8fce5e8fcf5e8fce5e8fce5e8fcf5e8fce5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf -5e8fcf5e8fce5e8fcf5e8fce5e8fce5e8fcf5e8fce5e8fcf5e8fcf5e8fcf5e8fcf -5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf -5e8fcf5e8fcf5e8fcf5e8fce5e8fcf5e8fce5e8fce5e8fcf5e8fce5e8fcf5e8fcf -5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf -5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fce5e8fcf -5e8fce5e8fce5e8fcf5e8fce5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fce -5e8fcf5e8fce5e8fce5e8fcf5e8fce5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf -5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf -5e8fcf5e8fce5e8fcf5e8fce5e8fce5e8fcf5e8fce5e8fcf5e8fcf5e8fcf5e8fcf -5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf -5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fcf5e8fce5e8fcf5e8fce5e8fce -5e8fcf5e8fce5e8fcf5e8fcf5e8fcf4a7ebb7daaea8ab5f689b4f58ab5f689b4f5 -89b4f58ab5f689b4f58ab5f68ab5f678a6e65b8dcb8ab5f68ab5f68ab5f68ab5f6 -8ab5f68ab5f68ab5f68ab5f68ab5f68ab5f68ab5f67daae95585bd86a2c292afd2 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d690add07d99bd5083bf84b1f384b1f384b1f384b1f384b1f3 -84b1f384b1f384b1f384b1f384b1f384b1f284b1f384b1f284b1f284b0f284b1f2 -84b0f284b0f284b1f384b0f284b1f384b1f384b1f3536f990000004c668d84b0f2 -84b1f33f547400000036496484b0f284b1f256739e2f3f5731425b5b7aa884b1f3 -6081b03548637198cf84b1f284b1f34056764861867ca6e4374a655b7aa784b1f3 -84b1f354709a2f3f563040596789bc84b1f384b0f256739f2f3f5731425b5b7aa8 -84b1f284b1f284b1f384b1f284b1f384b1f384b1f384b1f384b1f384b1f384b1f3 -84b1f384b1f384b1f384b1f284b1f384b1f284b1f284b0f284b1f284b0f284b0f2 -84b1f37daaeb5082bd85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5 -769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb76393d186b2f4 -86b2f486b2f386b2f486b2f386b2f386b2f386b2f386b2f386b2f386b2f486b2f3 -86b2f486b2f486b3f486b2f486b3f486b3f486b2f386b3f486b2f386b2f386b2f4 -86b2f386b2f486b2f486b2f386b2f486b2f386b2f386b2f486b2f386b2f486b2f4 -86b2f386b2f486b2f386b2f386b2f386b2f386b2f386b2f386b2f486b2f386b2f4 -86b2f486b2f386b2f486b2f386b2f386b2f486b2f386b2f486b2f486b2f486b2f4 -86b2f486b2f486b2f386b2f486b2f386b2f386b2f486b2f386b2f486b2f486b2f3 -86b2f486b2f386b2f386b2f386b2f386b2f386b2f386b2f486b2f354709a4c658b -86b3f486b2f486b3f486b3f45b79a5000000536e9686b2f386b2f486b2f386b2f4 -86b2f486b2f386b2f486b2f386b2f386b2f486b2f386b2f486b2f486b2f386b2f4 -86b2f386b2f386b2f386b2f386b2f386b2f386b2f486b2f386b2f486b2f486b2f3 -86b2f486b2f386b2f386b2f486b2f386b2f486b2f486b2f486b2f486b2f486b2f4 -86b2f386b2f486b2f386b2f34e82bd809cbd90aed194b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d793b1d5 -90add0608dc172a1e089b4f588b4f589b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f589b4f588b4f589b4f589b4f589b4f589b4f589b4f589b4f588b4f589b4f5 -88b4f588b4f589b4f588b4f589b4f589b4f588b4f589b4f588b4f588b4f589b4f5 -88b4f589b4f589b4f588b4f589b4f588b4f588b4f588b3f588b4f588b3f588b3f5 -89b4f588b3f589b4f589b4f588b4f589b4f588b4f588b4f588b4f588b4f588b4f5 -88b4f589b4f588b4f589b4f589b4f588b4f589b4f588b4f588b4f589b4f588b4f5 -89b4f589b4f588b4f589b4f588b4f588b4f588b4f588b4f588b4f588b4f589b4f5 -88b4f589b4f589b4f589b4f589b4f589b4f589b4f588b4f589b4f588b4f588b4f5 -89b4f588b4f589b4f589b4f588b4f589b4f588b4f588b4f589b4f588b4f589b4f5 -89b4f588b4f589b4f588b4f588b4f588b3f588b4f588b3f588b3f589b4f588b3f5 -89b4f589b4f588b4f589b4f588b4f588b4f588b4f588b4f588b4f588b4f589b4f5 -88b4f589b4f589b4f588b4f589b4f588b4f588b4f589b4f588b4f589b4f589b4f5 -88b4f589b4f588b4f588b4f588b4f588b4f588b4f588b4f589b4f588b4f589b4f5 -89b4f589b4f589b4f589b4f589b4f588b4f589b4f588b4f588b4f589b4f55a8bc9 -7aa7e789b4f588b4f589b4f588b4f588b4f589b4f588b4f589b4f589b4f577a5e5 -5b8dcb88b4f588b4f588b3f588b4f588b3f588b3f589b4f588b3f589b4f589b4f5 -88b4f57ca9e95585bd86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd5082bf -82aff182aff182aff182aff182aff182aff182aff182aff182aff182aff182b0f2 -82aff182b0f282b0f282b0f282b0f282b0f282b0f282aff182b0f282aff182aff1 -82aff2526e980000004b658c82aff182aff27ca8e7010202151d2882aff1445c7f -00000030415a1f2a3900000055739e5a79a70000003e547482aff16f97cf000000 -33455f7097d000000036496482aff14157780000000e131a1a23301f293982b0f2 -445b7e00000030425b1f293900000055739e82aff182aff182aff182aff182aff1 -82aff182aff182aff182aff182aff182aff182aff182aff182b0f282aff182b0f2 -82b0f282b0f282b0f282b0f282b0f282aff17baaeb5082bd85a0c191aed194b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d7 -93b0d48ca8ca678bb76393d184b1f384b1f384b1f284b1f384b1f284b1f284b1f3 -84b1f284b1f384b1f384b1f284b1f384b1f284b1f284b1f384b1f284b1f384b1f3 -84b1f384b1f384b1f384b1f384b1f284b1f384b1f284b1f284b1f384b1f284b1f3 -84b1f384b1f384b1f384b1f384b1f384b1f284b1f384b1f284b1f284b1f384b1f2 -84b1f381adee131a2430415984b1f384b1f330405810161e6f95cc84b1f284b1f3 -84b1f284b1f384b1f384b0f284b1f384b0f284b0f284b1f284b0f284b1f284b1f2 -84b1f384b1f284b1f384b1f384b1f284b1f384b1f284b1f284b1f384b1f284b1f3 -84b1f384b1f284b1f319222e0a0e1384b1f384b1f284b1f384b1f32a394f030406 -7ba5e384b1f384b1f284b1f384b1f284b1f284b1f384b1f284b1f384b1f384b1f3 -84b1f384b1f384b1f384b1f284b1f384b1f284b1f284b1f384b1f284b1f384b1f3 -84b1f384b1f384b1f384b1f384b1f284b1f384b1f284b1f284b1f384b1f284b1f3 -84b1f384b0f284b1f384b0f284b0f284b1f284b0f284b1f284b1f24e81bd809cbd -90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d793b0d48ba7c95e8abe71a0e087b3f587b3f487b3f5 -87b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f4 -87b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f4 -87b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f4 -87b3f487b3f587b3f487b3f587b3f587b3f487b3f587b3f487b3f487b3f487b3f4 -87b3f487b3f487b3f587b3f487b3f587b3f587b2f487b3f587b2f487b2f487b3f4 -87b2f487b3f487b3f487b3f587b3f487b3f587b3f587b3f487b3f587b3f487b3f4 -87b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f4 -87b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f4 -87b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f5 -87b3f487b3f587b3f587b3f487b3f587b3f487b3f487b3f487b3f487b3f487b3f4 -87b3f587b3f487b3f587b3f587b2f487b3f587b2f487b2f487b3f487b2f487b3f4 -87b3f487b3f587b3f487b3f587b3f587b3f487b3f587b3f487b3f487b3f487b3f4 -87b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f487b3f4 -87b3f487b3f487b3f487b3f4598bc978a6e687b3f487b3f487b3f487b3f487b3f4 -87b3f487b3f487b3f487b3f476a5e55b8dca87b3f487b3f487b3f587b3f487b3f5 -87b3f587b3f487b3f587b3f487b3f487b3f47aa8e85485bd86a2c292afd295b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d690add07d99bd5082bf80aef180aef180aef080aef180aef080aef0 -80aef080aef080aef080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef180aef080aef180aef180aef0506d980000004a648b80aef180aef0 -80aef10b0f14070a0e7fadf006080c24314480aef07daaeb0506092330427ca9ea -07090d151d2880aef14660840000005d7eaf6e96cf0000003548637eacee050609 -0f141c7ca9e980aef16f97d17facef06080c24314480adf07daaeb050609233042 -80aef080aef180aef080aef180aef180aef080aef180aef080aef080aef080aef0 -80aef080aef080aef080aef080aef080aef080aef080aef080aef080aef080aef1 -79a8e95082bd85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb -95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb76293d182aff182aff1 -82b0f282aff182b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f2 -82b0f282aff182b0f282aff182aff182aff182aff182aff182aff182aff182aff1 -82aff182aff182b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff2 -82aff182aff282aff282aff182aff282aff17da8e80000001f293982aff14e6991 -0000002e3f5682aff182aff182aff182aff182aff182aff182aff282aff182aff2 -82aff282b0f282aff282b0f282b0f282aff182b0f282aff182aff182b0f282aff1 -82b0f282b0f282aff182b0f282aff182aff182b0f282aff118212e0a0e1382aff1 -82b0f282aff17aa4e203040629374c82aff182aff182aff182aff182aff182aff1 -82b0f282aff182b0f282b0f282aff182b0f282aff182aff182aff282aff182aff2 -82aff282aff182aff282aff182aff182aff182aff182aff182aff182aff182aff1 -82aff182aff182aff182aff182aff182aff182aff282aff182aff282aff282b0f2 -82aff282b0f282b0f24e81bd809cbd90aed194b2d695b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d389a4c6 -5c88bb709fdf85b1f386b2f485b1f386b2f486b2f485b1f386b2f485b1f385b1f3 -86b2f485b1f386b2f486b2f485b1f386b2f485b1f385b1f385b2f385b1f385b2f3 -85b2f385b2f385b2f385b2f385b2f386b2f485b2f386b2f486b2f485b1f386b2f4 -85b1f385b1f386b2f385b1f386b2f386b2f385b2f386b2f385b2f385b2f385b1f3 -85b2f385b1f385b1f386b2f385b1f386b2f386b2f385b2f386b2f385b2f385b2f3 -86b2f385b2f386b2f386b2f386b2f486b2f386b2f486b2f485b1f386b2f485b1f3 -85b1f386b2f485b1f386b2f486b2f485b1f386b2f485b1f385b1f386b2f485b1f3 -86b2f486b2f485b1f386b2f485b1f385b1f385b2f385b1f385b2f385b2f385b2f3 -85b2f385b2f385b2f386b2f485b2f386b2f486b2f485b1f386b2f485b1f385b1f3 -86b2f385b1f386b2f386b2f385b2f386b2f385b2f385b2f385b1f385b2f385b1f3 -85b1f386b2f385b1f386b2f386b2f385b2f386b2f385b2f385b2f386b2f385b2f3 -86b2f386b2f386b2f486b2f386b2f486b2f485b1f386b2f485b1f385b1f386b2f4 -85b1f386b2f486b2f485b1f386b2f485b1f385b1f386b2f485b1f386b2f486b2f4 -85b1f386b2f485b1f385b1f385b2f385b1f385b2f385b2f385b2f3598bc977a6e5 -85b2f386b2f485b2f386b2f486b2f485b1f386b2f485b1f385b1f375a4e45a8cca -86b2f386b2f385b2f386b2f385b2f385b2f385b1f385b2f385b1f385b1f386b2f3 -79a7e75485bd86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd5082bf7eacef -7eacef7eadf07eacef7eadf07eadf07eacef7eadf07eacef7eacef7eadef7eacef -7eadef7eadef7eacef7eadef7eacef7eacef7eacef7eacef7eacef7eacef7eacef -4f6c9600000049638a7eadf07eacef7ba9eb010202161f2b709ad5000000020304 -05080b05080b0000001a23317eacef2c3d550000006c94ce1f2a3b090c117ca9eb -6c94ce0000003447636e97d10000002b3b527eadef7eacef7eacef709ad4000000 -02030405080b05080b0000001a23317eadf07eacef7eadf07eacef7eacef7eadf0 -7eacef7eadf07eadf07eacef7eadf07eacef7eacef7eadef7eacef7eadef7eadef -7eacef7eadef7eacef7eacef7eacef78a6e85082bd85a0c191aed194b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d4 -8ca8ca678bb76192d080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef080aef180aef080aef180aef180aef080aef180aef080aef080aef1 -80aef080aef180aef180aef180aef180aef180aef180aef080aef180aef080aef0 -80aef080aef080aef080aef080aef180aef080aef180aef180aef180aef180aef1 -7ba7e80000001e29396e96d006080b151c277aa6e580aef180aef1698fc6364966 -2a3a50445c807ca9ea80aef05f82b4374b676589be29374d5f81b25f82b3374b67 -719ad5374b682d3e555f82b380aef080aef080aef053719d2e3e5630415a5878a6 -80aef180aef018212e0a0e1380aef080aef180aef04e6a920000005675a180aef1 -80aef180aef180aef180aef180aef180aef080aef180aef080aef080aef080aef0 -80aef080aef080aef180aef080aef180aef180aef180aef180aef180aef180aef0 -80aef180aef080aef080aef180aef080aef180aef180aef080aef180aef080aef0 -80aef180aef080aef180aef180aef080aef180aef080aef04e81bd809cbd90aed1 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d792b0d388a4c55c87bb6e9ede82b0f282aff182b0f282aff1 -82aff182b0f282aff182b0f282b0f283b0f282b0f283b0f283b0f283b0f283b0f2 -83b0f283b0f283b0f283b0f283b0f283b0f283b0f283b0f283b0f283b0f282aff1 -83b0f282aff182aff182aff182aff182aff182aff183b0f282aff183b0f283b0f2 -83b0f283b0f283b0f283b0f282b0f183b0f282b0f182b0f183b0f282b0f183b0f2 -83b0f282aff183b0f282aff182aff183b0f282aff183b0f283b0f283b0f283b0f2 -83b0f283b0f282b0f283b0f282b0f282b0f282aff182b0f282aff182aff182b0f2 -82aff182b0f282b0f283b0f282b0f283b0f283b0f283b0f283b0f283b0f283b0f2 -83b0f283b0f283b0f283b0f283b0f283b0f283b0f283b0f282aff183b0f282aff1 -82aff182aff182aff182aff182aff183b0f282aff183b0f283b0f283b0f283b0f2 -83b0f283b0f282b0f183b0f282b0f182b0f183b0f282b0f183b0f283b0f282aff1 -83b0f282aff182aff183b0f282aff183b0f283b0f283b0f283b0f283b0f283b0f2 -82b0f283b0f282b0f282b0f282aff182b0f282aff182aff182b0f282aff182b0f2 -82b0f283b0f282b0f283b0f283b0f283b0f283b0f283b0f283b0f283b0f283b0f2 -83b0f283b0f283b0f2588ac875a4e583b0f282aff183b0f282aff182aff182aff1 -82aff182aff182aff173a2e3598cca83b0f283b0f283b0f283b0f283b0f283b0f2 -82b0f183b0f282b0f182b0f183b0f276a6e55485bd86a2c292afd295b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d690add07d99bd5082bf7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed -7aa9ed7aaaed7aaaed7aaaee7aaaed7aaaee7aaaee7aaaed7aaaee7aaaed7aaaed -7aaaed7aaaed7aaaed7aaaed7aaaed4d6b950000004662897aa9ed7aaaed48648c -0000002f415c729ede000000233145668fc7668ec7668fc7709cda7aaaed5475a3 -0000003a51710101022f425c7aa9ed6991cc0000003246626f9cd9000000243347 -7aaaed7aa9ed7aa9ed729fdf000000233246668fc8668fc7668fc8709cda7aaaed -7aaaed7aaaed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed -7aaaed7aaaee7aaaed7aaaee7aaaee7aaaed7aaaee7aaaed7aaaed7aaaed74a5e7 -5082bd85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d7 -95b3d795b3d795b3d795b3d793b0d48ca8ca678bb76091cf7eadef7eadef7eadef -7eadef7eadef7eadef7eadf07eadef7eadf07eadf07eacef7eadf07eacef7eacef -7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef7eacef -7eacef7eadef7eacef7eadef7eadef7eadf07eadef7eadf07eadf07eacef7eadf0 -7eacef7eacef7eacef7eacef7eacef79a5e60000001c27361d283805080b6a91c9 -7eadef7eacef688ec50305071c26352e405903040628374c7eadf0425b7e000000 -080c1006090d486389425b7e0000000a0e14111720010203030406729dd97eadef -425a7d0000002f41591e293900000053719d7eadf018212d0a0e137eacef7eacef -7eacef202b3c070a0e7aa6e77eacef7eacef7eacef7eacef7eacef7eacef7eadef -7eacef7eadef7eadef7eadf07eadef7eadf07eadf07eacef7eadf07eacef7eacef -7eacef7eacef7eacef7eacef7eadef7eacef7eadef7eadef7eacef7eadef7eacef -7eacef7eadf07eacef7eadf07eadf07eacef7eadf07eacef7eacef7eacef7eacef -7eacef7eacef4e81bd809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c55b87bb -6d9dde81aff181aff181aff181aff181aff181aff181aff181aff181aff181aef1 -81aff181aef181aef181aef081aef181aef081aef081aff181aef081aff181aff1 -81aef081aff181aef081aef081aff181aef081aff181aff182aff181aff182aff1 -82aff181aff182aff181aff181aff181aef081aff181aef081aef081aff181aef0 -81aff181aff181aef181aff181aef181aef181aff181aef181aff181aff181aef1 -81aff181aef181aef181aef081aef181aef081aef081aff181aef081aff181aff1 -81aff181aff181aff181aff181aff181aff181aff181aff181aef181aff181aef1 -81aef181aef081aef181aef081aef081aff181aef081aff181aff181aef081aff1 -81aef081aef081aff181aef081aff181aff182aff181aff182aff182aff181aff1 -82aff181aff181aff181aef081aff181aef081aef081aff181aef081aff181aff1 -81aef181aff181aef181aef181aff181aef181aff181aff181aef181aff181aef1 -81aef181aef081aef181aef081aef081aff181aef081aff181aff181aff181aff1 -81aff181aff181aff181aff181aff181aff181aef181aff181aef181aef181aef0 -81aef181aef081aef081aff181aef081aff181aff181aef0588ac874a3e381aef0 -81aff181aef081aff181aff182aff181aff182aff182aff172a2e2598cca81aff1 -81aff181aef081aff181aef081aef081aff181aef081aff181aff181aef176a5e5 -5484bd86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd5082bf78a9ec78a9ec -78a8ec78a9ec78a8ec78a8ec78a9ec78a8ec78a9ec78a9ec78a8ec78a9ec78a8ec -78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec78a8ec4b6a95 -00000028384e415b802b3c55000101080b0f6c98d478a8ec161f2b06080c5172a1 -638cc45171a0577aac78a8ec74a2e406080c0304060000005779ab78a8ec6790cb -00000031456278a8ec131b25020304435e8548658d293a5178a8ec161f2b06080c -5172a1638bc35171a0577aab78a8eb78a9ec78a8eb78a9ec78a9ec78a8ec78a9ec -78a8ec78a8ec78a9ec78a8ec78a9ec78a9ec78a8ec78a9ec78a8ec78a8ec78a8ec -78a8ec78a8ec78a8ec78a8ec72a3e65081bd85a0c191aed194b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca -678bb75f91cf7cabef7cabef7cabee7cabef7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabef7cabee7cabef7cabef7cabee7cabef7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee77a4e5 -000000090c110000001a25337baaed7cacef7cabee2f415a01020274a0e07cabee -2b3c5400000075a1e0415a7e00000030425c7baaed7baaed415a7e0000003d5475 -7cabef3d54760000005778a77baaed06080c2330447cabee79a7e9040609222f42 -7cabee17202d0a0e137cabee7cabee6e98d40001012f415a7cabee7cabee7cabee -7cabef7cabee7cabef7cabef7cabee7cabef7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cacef7cabee -7cacef7cacef7cabee7cacef7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee4d81bd809cbd90aed194b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d792b0d388a4c55b87bb6c9ddd80aef07fadf080aef07fadf07fadf0 -7fadf07fadf07fadf07fadf080aef07fadf080aef080aef080aef080aef080aef0 -80aef080aef080aef080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef07fadf080aef07fadf07fadf080aef07fadf080aef080aef07fadf0 -80aef07fadf07fadf080aef17fadf080aef180aef180aef080aef180aef080aef0 -80aef080aef080aef080aef080aef080aef080aef080aef07fadf080aef07fadf0 -7fadf080aef07fadf080aef080aef07fadf080aef07fadf07fadf07fadf07fadf0 -7fadf07fadf080aef07fadf080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef080aef080aef080aef080aef080aef080aef080aef080aef080aef0 -7fadf080aef07fadf07fadf080aef07fadf080aef080aef07fadf080aef07fadf0 -7fadf080aef17fadf080aef180aef180aef080aef180aef080aef080aef080aef0 -80aef080aef080aef080aef080aef080aef07fadf080aef07fadf07fadf080aef0 -7fadf080aef080aef07fadf080aef07fadf07fadf07fadf07fadf07fadf07fadf0 -80aef07fadf080aef080aef080aef080aef080aef080aef080aef080aef080aef0 -80aef080aef0588ac873a3e380aef080aef080aef080aef080aef07fadf080aef0 -7fadf07fadf071a1e2588bc980aef080aef07fadf080aef07fadf07fadf080aef1 -7fadf080aef180aef180aef075a4e55484bd86a2c292afd295b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -90add07d99bd5082bf76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb5375a50000000000000305071219232d405a6894d0 -76a7eb76a7eb6088c0141d2900000000000004050849679176a7eb76a7eb2c3f59 -0000000b0f1674a4e776a7eb6792ce00000033486676a7eb5d84ba0e141d000000 -010102364c6b76a7eb6088c0141d2900000000000004050849679176a7eb76a7eb -76a7eb76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb71a2e54f81bc -85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d7 -95b3d795b3d795b3d793b0d48ca8ca678bb75f91cf7aaaed7aaaed7aaaed7aaaed -7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aa9ed -7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed -7aa9ed7aa9ed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed -7aa9ed7aaaed7aa9ed7aaaed75a4e40000001d28382c3e5700000047638a7aa9ed -7aaaed1a253400000005080b05070b0203050000006b94d040597d0000005b7fb1 -7aa9ed7aaaed405a7d0000005b7fb17aaaed4d6b950000004e6e996c97d2000000 -02030405080b05070b0000001923317aa9ed17202d0a0e137aa9ed7aaaed425c81 -000000597dae7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aa9ed7aa9ed -7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed -7aa9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed -7aa9ed7aaaed7aa9ed7aa9ed7aa9ed7aa9ed7aa9ed7aa9ed7aaaed7aa9ed7aaaed -7aaaed4d81bd809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c55b87bb6a9bdc -7cabee7dacef7cabee7dacef7dacef7cabee7dacef7cabee7cabee7dacef7cabee -7dacef7dacef7cabee7dacef7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7cabee7cabee7dacef7cabee7dacef7dacef -7cabee7dacef7cabee7cabee7dacee7cabee7dacee7dacee7cabee7dacee7cabee -7cabee7dacef7cabee7dacef7dacef7cabee7dacef7cabee7cabee7cabee7cabee -7cabee7cabee7dabee7cabee7dabee7dabee7cabee7dabee7cabee7cabee7dacef -7cabee7dacef7dacef7cabee7dacef7cabee7cabee7dacef7cabee7dacef7dacef -7cabee7dacef7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee7cabee -7cabee7cabee7cabee7cabee7cabee7dacef7cabee7dacef7dacef7cabee7dacef -7cabee7cabee7dacee7cabee7dacee7dacee7cabee7dacee7cabee7cabee7dacef -7cabee7dacef7dacef7cabee7dacef7cabee7cabee7cabee7cabee7cabee7cabee -7dabee7cabee7dabee7dabee7cabee7dabee7cabee7cabee7dacef7cabee7dacef -7dacef7cabee7dacef7cabee7cabee7dacef7cabee7dacef7dacef7cabee7dacef -7cabee7cabee7cabee7cabee7cabee7cabee7cabee5789c770a0e27cabee7cabee -7cabee7cabee7cabee7dacef7cabee7dacef7dacef6e9fe0588bc97cabee7cabee -7dacee7cabee7dacee7dacee7cabee7dacee7cabee7cabee7dacef72a2e35484bd -86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d690add07d99bd4f82be72a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e9 -72a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e872a4e972a4e8 -72a4e872a4e872a4e872a4e872a4e872a4e972a4e872a4e972a4e96998d7638fcb -6fa0e372a4e872a4e972a4e872a4e96e9ee171a2e672a4e972a4e872a4e86fa0e3 -71a3e772a4e972a4e972a4e86693d26b9adb72a4e872a4e872a4e872a4e86998d7 -638fcb6fa0e372a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e872a4e972a4e872a4e872a4e972a4e872a4e972a4e972a4e872a4e9 -72a4e872a4e872a4e96d9fe24f81bc85a0c191aed194b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -6e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7 -5d8fce76a7eb76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb71a1e2000000 -1c27386d9ad9090d1305070b6792cd76a6ea1f2c3e020304628ac3638cc6638cc6 -6691cc76a7eb3e587c000000587db076a7eb76a7eb3e587c000000587db076a7eb -4a6a950000004c6c986e9bdb000000223145638bc5638cc6638cc66c99d876a7eb -16202d090d1376a7eb76a7eb161f2c0c111775a5e976a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a6ea76a7eb76a6ea76a6ea76a7eb76a6ea76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb4d81bd809cbd90aed194b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d792b0d388a4c55b87bb699bdc7babee7baaed7babee7baaed7baaed7babee -7baaed7babee7babee7baaee7babee7baaee7baaee7babee7baaee7babee7babee -7babee7babee7babee7babee7cabee7babee7cabee7cabee7baaee7cabee7baaee -7baaee7babee7baaee7babee7babee7baaed7babee7baaed7baaed7babee7baaed -7babee7babee7babee7babee7babee7babee7baaed7babee7baaed7baaed7baaee -7baaed7baaee7baaee7babee7baaee7babee7babee7cabee7babee7cabee7cabee -7babee7cabee7babee7babee7baaed7babee7baaed7baaed7babee7baaed7babee -7babee7baaee7babee7baaee7baaee7babee7baaee7babee7babee7babee7babee -7babee7babee7cabee7babee7cabee7cabee7baaee7cabee7baaee7baaee7babee -7baaee7babee7babee7baaed7babee7baaed7baaed7babee7baaed7babee7babee -7babee7babee7babee7babee7baaed7babee7baaed7baaed7baaee7baaed7baaee -7baaee7babee7baaee7babee7babee7cabee7babee7cabee7cabee7babee7cabee -7babee7babee7baaed7babee7baaed7baaed7babee7baaed7babee7babee7baaee -7babee7baaee7baaee7babee7baaee7babee7babee7babee7babee7babee7babee -7cabee5689c770a0e27cabee7baaee7cabee7baaee7baaee7babee7baaee7babee -7babee6d9ee0578ac97baaed7baaed7babee7baaed7babee7babee7babee7babee -7babee7babee7baaed71a2e35484bd86a2c292afd295b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690add0 -7d99bd4f82be70a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e8 -70a3e870a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e870a3e8 -70a3e870a3e870a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e8 -70a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e770a3e870a3e870a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e86b9ee24f81bc85a0c1 -91aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d7 -95b3d795b3d793b0d48ca8ca678bb75c8fce74a5ea74a5ea74a5ea74a5ea74a5ea -74a5ea74a6ea74a5ea74a6ea74a6ea74a6ea74a6ea74a6ea74a6ea74a5ea74a6ea -74a5ea74a5ea74a5e974a5ea74a5e974a5e974a5ea74a5e974a5ea74a5ea74a5e9 -74a5ea74a5e974a5e974a5ea74a5e974a5ea74a5ea74a6ea74a5ea74a6ea74a6ea -74a5ea74a6ea74a5ea6f9fe10000001b273774a5e94a6a950000001e2b3d73a5e9 -3c567a000000364e6e5f88c1577cb044618974a5ea3d577b000000567caf74a5ea -74a6ea3d577b000000567caf74a5ea4968940000004b6a9774a5ea151e2b05080b -4f709f608ac24e709e5479aa74a6ea161f2c090d1374a5ea608ac2000000334968 -74a5e974a5ea74a5e974a5e974a5ea74a5e974a5ea74a5ea74a5e974a5ea74a5e9 -74a5e974a5ea74a5e974a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a5ea74a6ea -74a5ea74a5ea74a5e974a5ea74a5e974a5e974a6ea74a5e974a6ea74a6ea74a5ea -74a6ea74a5ea74a5ea74a5ea74a5ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea -4d81bd809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c55b87bb689adb79a9ed -7aa9ed79a9ed7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed -7aaaed79a9ed7aaaed79a9ed79a9ed79a9ec79a9ed79a9ec79a9ec7aa9ed79a9ec -7aa9ed7aa9ed79a9ec7aa9ed79a9ec79a9ec79a9ed79a9ec79a9ed79a9ed7aaaed -79a9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed79a9ed7aa9ed79a9ed79a9ed -7aaaed79a9ed7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed79a9ed7aa9ed79a9ed -79a9ed7aaaed79a9ed7aaaed7aaaed79a9ed7aaaed79a9ed79a9ed7aa9ed79a9ed -7aa9ed7aa9ed7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed79a9ed -7aaaed79a9ed79a9ed79a9ec79a9ed79a9ec79a9ec7aa9ed79a9ec7aa9ed7aa9ed -79a9ec7aa9ed79a9ec79a9ec79a9ed79a9ec79a9ed79a9ed7aaaed79a9ed7aaaed -7aaaed7aa9ed7aaaed7aa9ed7aa9ed79a9ed7aa9ed79a9ed79a9ed7aaaed79a9ed -7aaaed7aaaed7aa9ed7aaaed7aa9ed7aa9ed79a9ed7aa9ed79a9ed79a9ed7aaaed -79a9ed7aaaed7aaaed79a9ed7aaaed79a9ed79a9ed7aa9ed79a9ed7aa9ed7aa9ed -7aaaed7aa9ed7aaaed7aaaed7aaaed7aaaed7aaaed7aaaed79a9ed7aaaed79a9ed -79a9ed79a9ec79a9ed79a9ec79a9ec7aa9ed5689c76e9fe17aa9ed79a9ec7aa9ed -79a9ec79a9ec79a9ed79a9ec79a9ed79a9ed6d9ee0578ac97aaaed7aaaed7aa9ed -7aaaed7aa9ed7aa9ed79a9ed7aa9ed79a9ed79a9ed7aaaed6fa0e25484bd86a2c2 -92afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d690add07d99bd4f82be6ea1e66ea1e66ea1e76ea1e6 -6ea1e76ea1e76ea2e76ea1e76ea2e76ea2e76ea2e76ea2e76ea2e76ea2e76ea1e6 -6ea2e76ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e76ea1e66ea1e76ea1e7 -6ea1e66ea1e76ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea2e76ea1e66ea2e7 -6ea2e76ea1e66ea2e76ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e76ea1e6 -6ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e7 -6ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e76ea1e66ea1e76ea1e7 -6ea2e76ea1e76ea2e76ea2e76ea2e76ea2e76ea2e76ea2e76ea1e66ea2e76ea1e6 -6ea1e66ea1e66a9de04f81bc85a0c191aed194b2d695b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c9 -97aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec -7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb75c8ecd -72a4e972a4e972a4e972a4e972a4e972a4e972a4e872a4e972a4e872a4e872a4e8 -72a4e872a4e872a4e872a4e972a4e872a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e872a4e972a4e8 -72a4e872a4e972a4e872a4e972a4e972a4e972a4e972a4e96e9fe20102031d2b3d -72a4e972a4e92131450000005075a56d9fe0283a53000101000000000000233348 -72a4e93e5a7f000000577eb272a4e872a4e83e5a7f000000577eb272a4e94a6b98 -0000004c6d9b72a4e95d86be141c2800000000000004050846658f72a4e8182231 -0b101772a4e9364e6e0000005b83bb72a4e972a4e972a4e972a4e972a4e972a4e9 -72a4e972a4e972a4e972a4e972a4e972a4e972a4e872a4e972a4e872a4e872a4e9 -72a4e872a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e972a4e9 -72a5e972a4e972a5e972a5e972a4e972a5e972a4e972a4e972a4e872a4e972a4e8 -72a4e872a4e872a4e872a4e872a4e84d81bd809cbd90aed194b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -92b0d388a4c55b87bb6799da77a8ec77a7eb77a8ec77a7eb77a7eb76a7eb77a7eb -76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb77a8eb76a7eb77a8eb77a8eb77a7eb -77a8eb77a7eb77a7eb77a8ec77a7eb77a8ec77a8ec77a8ec77a8ec77a8ec77a8ec -76a7eb77a8ec76a7eb76a7eb77a7eb76a7eb77a7eb77a7eb77a8ec77a7eb77a8ec -77a8ec76a7eb77a8ec76a7eb76a7eb77a8ec76a7eb77a8ec77a8ec77a8ec77a8ec -77a8ec77a8ec76a7eb77a8ec76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb77a8ec -76a7eb77a8ec77a8ec77a7eb77a8ec77a7eb77a7eb76a7eb77a7eb76a7eb76a7eb -76a7eb76a7eb76a7eb76a7eb77a8eb76a7eb77a8eb77a8eb77a7eb77a8eb77a7eb -77a7eb77a8ec77a7eb77a8ec77a8ec77a8ec77a8ec77a8ec77a8ec76a7eb77a8ec -76a7eb76a7eb77a7eb76a7eb77a7eb77a7eb77a8ec77a7eb77a8ec77a8ec76a7eb -77a8ec76a7eb76a7eb77a8ec76a7eb77a8ec77a8ec77a8ec77a8ec77a8ec77a8ec -76a7eb77a8ec76a7eb76a7eb76a7eb76a7eb76a7eb76a7eb77a8ec76a7eb77a8ec -77a8ec77a7eb77a8ec77a7eb77a7eb76a7eb77a7eb76a7eb76a7eb76a7eb76a7eb -76a7eb76a7eb77a8eb76a7eb77a8eb77a8eb77a7eb77a8eb77a7eb77a7eb77a8ec -5588c76c9ee077a8ec77a8ec77a8ec77a8ec77a8ec76a7eb77a8ec76a7eb76a7eb -6a9cde5689c877a7eb77a7eb77a8ec77a7eb77a8ec77a8ec76a7eb77a8ec76a7eb -76a7eb77a8ec6d9fe15484bc86a2c292afd295b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd -4f81be6a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee46a9fe56a9ee4 -6a9ee46a9fe56a9ee46a9fe56a9fe56a9fe56a9fe56a9fe56a9fe56a9ee46a9fe5 -6a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee4 -6a9fe56a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9fe56a9fe56a9fe56a9fe5 -6a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9fe56a9ee46a9fe5 -6a9fe56a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee4669be04f81bc85a0c191aed1 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d7 -95b3d793b0d48ca8ca678bb75b8ecd70a3e870a3e870a3e870a3e870a3e870a3e8 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a2e770a3e870a2e7 -70a2e770a2e770a2e770a2e770a2e770a3e870a2e770a3e870a3e870a2e770a3e8 -70a2e770a2e770a3e870a2e770a3e870a3e870a2e770a3e870a2e770a2e770a2e7 -70a2e770a2e770a2e76ea0e46fa0e570a3e870a3e870a2e76c9ee170a2e770a2e7 -70a3e86c9de0618dc9699adb70a3e870a3e870a3e86c9ee170a3e870a3e870a3e8 -70a3e86c9ee170a3e870a3e870a3e86c9ee170a3e870a3e870a3e870a3e86897d7 -618eca6d9fe370a3e870a3e86ea1e56ea0e46fa1e60e141d11192470a2e770a2e7 -70a2e770a2e770a2e770a3e870a2e770a3e870a3e870a2e770a3e870a2e770a2e7 -70a3e870a2e770a3e870a3e870a2e770a3e870a2e770a2e770a2e770a2e770a2e7 -70a2e770a3e870a2e770a3e870a3e870a2e770a3e870a2e770a2e770a3e870a2e7 -70a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e870a3e84d81bd -809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d792b0d388a4c55b87bb6598da75a6eb76a7eb -75a6eb76a7eb76a7eb75a6ea76a7eb75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb -75a6ea75a6eb75a6ea75a6ea75a6ea75a6ea75a6ea75a6ea75a6eb75a6ea75a6eb -75a6eb75a6ea75a6eb75a6ea75a6ea75a7eb75a6ea75a7eb75a7eb75a6ea75a7eb -75a6ea75a6ea75a6ea75a6ea75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb75a6ea -75a6eb75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb76a7eb75a6eb76a7eb76a7eb -75a6ea76a7eb75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb76a7eb75a6eb76a7eb -76a7eb75a6ea76a7eb75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb75a6ea75a6eb -75a6ea75a6ea75a6ea75a6ea75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb75a6ea -75a6eb75a6ea75a6ea75a7eb75a6ea75a7eb75a7eb75a6ea75a7eb75a6ea75a6ea -75a6ea75a6ea75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb75a6ea75a6eb75a6ea -75a6ea75a6eb75a6ea75a6eb75a6eb76a7eb75a6eb76a7eb76a7eb75a6ea76a7eb -75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb76a7eb75a6eb76a7eb76a7eb75a6ea -76a7eb75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb75a6ea75a6eb75a6ea75a6ea -75a6ea75a6ea75a6ea75a6ea75a6eb5588c66b9cdf75a6eb75a6ea75a6eb75a6ea -75a6ea75a7eb75a6ea75a7eb75a7eb699bdd5689c875a6ea75a6ea75a6ea75a6ea -75a6ea75a6ea75a6eb75a6ea75a6eb75a6eb75a6ea6c9ee15384bc86a2c292afd2 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d690add07d99bd4f81be689de3689de3689de4689de3689de4 -689de4689de3689de4689de3689de3689de3689de3689de3689de3689de3689de3 -689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3 -689de3689de3689de3689de4689de3689de4689de4689de3689de4689de3689de3 -689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3 -689de3689de3689de3689de3689de3689de4689de3689de4689de4689de3689de4 -689de3689de3689de3689de3689de3689de3689de4689de3689de4689de4689de3 -689de4689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3 -689de36499de4f81bc85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5 -769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb75a8dcc6ea1e6 -6ea1e66ea1e66ea1e66ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e7 -6ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea2e76ea1e76ea2e76ea2e76ea1e7 -6ea2e76ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e76ea1e66ea1e76ea1e7 -6ea2e76ea1e76ea2e76ea2e76ea1e76ea2e76ea1e76ea1e76ea2e76ea1e76ea2e7 -6ea2e76ea1e76ea2e76ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e66ea1e6 -6ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e6 -6ea1e66ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e76ea1e66ea1e6 -5880b80000003954796ea1e76ea2e76ea1e76ea2e76ea2e76ea1e76ea2e76ea1e7 -6ea1e76ea1e66ea1e76ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea2e76ea1e7 -6ea2e76ea2e76ea1e76ea2e76ea1e76ea1e76ea2e76ea1e76ea2e76ea2e76ea1e7 -6ea2e76ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e66ea1e66ea1e66ea1e6 -6ea1e76ea1e66ea1e76ea1e74d81bd809cbd90aed194b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d3 -88a4c55b87bb6497d873a5e974a5ea73a5e974a5ea74a5ea74a5ea74a5ea74a5ea -74a5ea73a5e974a5ea73a5e973a5e974a5ea73a5e974a5ea74a5ea74a6ea74a5ea -74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a5e974a5ea74a5e974a5e974a5ea -74a5e974a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea -74a6ea74a5ea74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea73a5e974a5ea73a5e9 -73a5e974a5e973a5e974a5e974a5e974a5ea74a5e974a5ea74a5ea73a5e974a5ea -73a5e973a5e974a5ea73a5e974a5ea74a5ea74a5ea74a5ea74a5ea74a5ea73a5e9 -74a5ea73a5e973a5e974a5ea73a5e974a5ea74a5ea74a6ea74a5ea74a6ea74a6ea -74a5ea74a6ea74a5ea74a5ea74a5e974a5ea74a5e974a5e974a5ea74a5e974a5ea -74a5ea74a6ea74a5ea74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea -74a6ea74a6ea74a5ea74a6ea74a5ea74a5ea73a5e974a5ea73a5e973a5e974a5e9 -73a5e974a5e974a5e974a5ea74a5e974a5ea74a5ea73a5e974a5ea73a5e973a5e9 -74a5ea73a5e974a5ea74a5ea74a5ea74a5ea74a5ea74a5ea73a5e974a5ea73a5e9 -73a5e974a5ea73a5e974a5ea74a5ea74a6ea74a5ea74a6ea74a6ea74a5ea5588c6 -6a9cdf74a5ea74a5e974a5ea74a5e974a5e974a5ea74a5e974a5ea74a5ea689bdd -5589c874a6ea74a6ea74a5ea74a6ea74a5ea74a5ea74a6ea74a5ea74a6ea74a6ea -74a5ea6b9ee05384bc86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd4f81be -669be2669be2669be2669be2669be2669be2669ce2669be2669ce2669ce2669be2 -669ce2669be2669be2669ce2669be2669ce2669ce2669ce3669ce2669ce3669ce3 -669ce2669ce3669ce2669ce2669be2669ce2669be2669be2669ce2669be2669ce2 -669ce2669ce3669ce2669ce3669ce3669ce2669ce3669ce2669ce2669ce3669ce2 -669ce3669ce3669ce2669ce3669ce2669ce2669be2669ce2669be2669be2669be2 -669be2669be2669be2669ce2669be2669ce2669ce2669be2669ce2669be2669be2 -669be2669be2669be2669be2669ce2669be2669ce2669ce2669be2669ce2669be2 -669be2669ce2669be2669ce2669ce2669ce36398dd4f81bc85a0c191aed194b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d7 -93b0d48ca8ca678bb7598dcc6ca0e66ca0e66c9fe56ca0e66c9fe56c9fe56ca0e6 -6c9fe56ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66c9fe56ca0e66c9fe56c9fe5 -6ca0e66c9fe56ca0e66ca0e66c9fe56ca0e66c9fe56c9fe56ca0e66c9fe56ca0e6 -6ca0e66ca0e56ca0e66ca0e56ca0e56c9fe56ca0e56c9fe56c9fe56ca0e56c9fe5 -6ca0e56ca0e56ca0e66ca0e56ca0e66ca0e66c9fe56ca0e66c9fe56c9fe56ca0e6 -6c9fe56ca0e66ca0e66ca0e66ca0e66ca0e66ca0e66ca0e56ca0e66ca0e56ca0e5 -6ca0e66ca0e56ca0e66ca0e66c9fe56ca0e66c9fe56c9fe56ca0e66c9fe56ca0e6 -6ca0e66ca0e66ca0e66ca0e66ca0e66c9fe56697d96c9fe56c9fe56ca0e66c9fe5 -6ca0e66ca0e66c9fe56ca0e66c9fe56c9fe56ca0e66c9fe56ca0e66ca0e66ca0e5 -6ca0e66ca0e56ca0e56c9fe56ca0e56c9fe56c9fe56ca0e56c9fe56ca0e56ca0e5 -6ca0e66ca0e56ca0e66ca0e66c9fe56ca0e66c9fe56c9fe56ca0e66c9fe56ca0e6 -6ca0e66ca0e66ca0e66ca0e66ca0e66ca0e56ca0e66ca0e56ca0e54d81bd809cbd -90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d792b0d388a4c55b87ba6396d871a4e870a3e871a4e8 -70a3e870a3e871a3e870a3e871a3e871a3e871a4e871a3e871a4e871a4e870a3e8 -71a4e870a3e870a3e871a3e870a3e871a3e871a3e870a3e871a3e870a3e870a3e8 -71a4e870a3e871a4e871a4e871a3e871a4e871a3e871a3e870a3e871a3e870a3e8 -70a3e870a3e870a3e870a3e870a3e871a3e870a3e871a3e871a3e870a3e871a3e8 -70a3e870a3e871a3e870a3e871a3e871a3e871a3e871a3e871a3e871a3e870a3e8 -71a3e870a3e870a3e871a4e870a3e871a4e871a4e870a3e871a4e870a3e870a3e8 -71a3e870a3e871a3e871a3e871a4e871a3e871a4e871a4e870a3e871a4e870a3e8 -70a3e871a3e870a3e871a3e871a3e870a3e871a3e870a3e870a3e871a4e870a3e8 -71a4e871a4e871a3e871a4e871a3e871a3e870a3e871a3e870a3e870a3e870a3e8 -70a3e870a3e870a3e871a3e870a3e871a3e871a3e870a3e871a3e870a3e870a3e8 -71a3e870a3e871a3e871a3e871a3e871a3e871a3e871a3e870a3e871a3e870a3e8 -70a3e871a4e870a3e871a4e871a4e870a3e871a4e870a3e870a3e871a3e870a3e8 -71a3e871a3e871a4e871a3e871a4e871a4e870a3e871a4e870a3e870a3e871a3e8 -70a3e871a3e871a3e870a3e85487c6679add70a3e871a4e870a3e871a4e871a4e8 -71a3e871a4e871a3e871a3e86599dc5588c770a3e870a3e870a3e870a3e870a3e8 -70a3e871a3e870a3e871a3e871a3e870a3e8699cde5384bc86a2c292afd295b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d690add07d99bd4e81be6299e06299e06298e06299e06298e06298e0 -6299e06298e06299e06299e06299e06299e06299e06299e06298e06299e06298e0 -6298e06299e06298e06299e06299e06298e06299e06298e06298e06096dc345178 -476fa26299e06299e06299e06299e06299e06298e05585c3527fbb6298e06298e0 -6298e06298e06298e06299e06298e06299e06299e06298e06299e06298e06298e0 -6299e06298e06299e06299e06299e06299e06299e06299e06298e06299e06298e0 -6298e06299e06298e06299e06299e06298e06299e06298e06298e06299e06298e0 -6299e06299e06299e06299e06299e06299e06298e06299e06298e06298e06299e0 -5f95db4f81bc85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb -95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7588ccc6a9fe56a9fe5 -6a9fe56a9fe56a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9fe56a9ee46a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9fe56a9ee4 -6a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9fe5 -6a9ee46a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9fe56a9ee46a9fe56a9fe5 -6a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee46a9fe56a9ee46a9fe56a9fe56a9fe56a9fe56a9fe56a9fe56a9fe56a9fe5 -6a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9fe5 -6a9ee46a9fe56a9fe56a9ee46a9fe56a9ee46a9ee46a9fe56a9ee46a9fe56a9fe5 -6a9ee46a9fe56a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9fe56a9ee46a9fe5 -6a9fe56a9ee46a9fe56a9ee46a9ee46a9fe56a9ee46a9fe56a9fe56a9ee46a9fe5 -6a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9fe5 -6a9ee46a9fe56a9fe54d81bd809cbd90aed194b2d695b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c5 -5b87ba6195d76fa2e770a2e86fa2e770a2e870a2e86fa2e770a2e86fa2e76fa2e7 -6fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e7 -6fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e7 -6fa2e76fa2e770a2e76fa2e770a2e770a2e76fa2e770a2e76fa2e76fa2e770a3e8 -6fa2e770a3e870a3e86fa2e770a3e86fa2e76fa2e76fa2e76fa2e76fa2e76fa2e7 -6fa2e76fa2e76fa2e76fa2e770a2e76fa2e770a2e770a2e76fa2e770a2e76fa2e7 -6fa2e770a2e86fa2e770a2e870a2e86fa2e770a2e86fa2e76fa2e76fa2e76fa2e7 -6fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e7 -6fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e7 -70a2e76fa2e770a2e770a2e76fa2e770a2e76fa2e76fa2e770a3e86fa2e770a3e8 -70a3e86fa2e770a3e86fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e7 -6fa2e76fa2e770a2e76fa2e770a2e770a2e76fa2e770a2e76fa2e76fa2e770a2e8 -6fa2e770a2e870a2e86fa2e770a2e86fa2e76fa2e76fa2e76fa2e76fa2e76fa2e7 -6fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e75387c66699dc -6fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76fa2e76598db5488c7 -70a2e770a2e76fa2e770a2e76fa2e76fa2e770a3e86fa2e770a3e870a3e86fa2e7 -689cde5384bc86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd4e81be6097df -6097df6098df6097df6098df6098df6097df6098df6097df6097df6097df6097df -6097df6097df6098df6097df6098df6098df6097df6098df6097df6097df6098df -6097df6098df6098df598dd100000022354f6097df6097df6097df6097df6097df -6098df0d151f0305075f96dd6097df6098df6097df6097df6098df6097df6098df -6098df6097df6098df6097df6097df6097df6097df6097df6097df6097df6097df -6097df6097df6098df6097df6098df6098df6097df6098df6097df6097df6098df -6097df6098df6098df6097df6098df6097df6097df6097df6097df6097df6097df -6098df6097df6098df6098df6097df5d95da4f81bc85a0c191aed194b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d4 -8ca8ca678bb7588bcb689de3689de3689de3689de3689de3689de3689ce3689de3 -689ce3689ce3689de3689ce3689de3689de3689de4689de3689de4689de4689de3 -689de4689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3 -689de4689de3689de4689de4689de3689de4689de3689de3689de3689de3689de3 -689de3689ce3689de3689ce3689ce3689de3689ce3689de3689de3689de4689de3 -689de4689de4689de3689de4689de3689de3689de3689de3689de3689de3689de3 -689de3689de3689de3689de3689de3689de3689de3689ce3689de3689ce3689ce3 -689de3689ce3689de3689de3689de4689de3689de4689de4689de3689de4689de3 -689de3689de3689de3689de3689de3689de3689de3689de3689de3689de4689de3 -689de4689de4689de3689de4689de3689de3689de3689de3689de3689de3689ce3 -689de3689ce3689ce3689de3689ce3689de3689de3689de4689de3689de4689de4 -689de3689de4689de3689de3689de3689de3689de3689de34d81bc809cbd90aed1 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d792b0d388a4c55b87ba6194d76ea1e66ea1e66ea1e66ea1e6 -6ea1e66da1e66ea1e66da1e66da1e66ea1e66da1e66ea1e66ea1e66ea1e76ea1e6 -6ea1e76ea1e76ea1e66ea1e76ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e6 -6ea1e66ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76da1e66ea1e76da1e66da1e6 -6ea1e76da1e66ea1e76ea1e76da1e66ea1e76da1e66da1e66ea1e66da1e66ea1e6 -6ea1e66ea2e76ea1e66ea2e76899db567eb46b9ee26ea1e64565913e5c836ea1e6 -6da1e66da1e66ea1e66da1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66da1e6 -6ea1e66da1e66da1e66ea1e66799db3751745177aa6ea1e76ea1e66ea1e76ea1e7 -6ea1e66ea1e76ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e6 -6ea1e66ea1e76899db3751745177ab6da1e66ea1e76da1e66da1e66ea1e76da1e6 -6ea1e76ea1e76da1e66ea1e76da1e66da1e66ea1e66da1e66ea1e66ea1e66ea2e7 -6ea1e66ea2e76ea2e76ea1e66ea2e76ea1e66ea1e66da1e66ea1e65b87c1385377 -618eca6da1e66ea1e66ea1e66ea1e66ea1e66ea1e66ea1e66da1e66ea1e66da1e6 -6da1e66ea1e66da1e66ea1e66ea1e66ea1e76ea1e66ea1e76ea1e76ea1e66ea1e7 -6ea1e66ea1e66ea1e65387c56599dc6ea1e66ea1e66ea1e66ea1e66ea1e66ea1e7 -6ea1e66ea1e76ea1e76398da5488c76da1e66da1e66ea1e76da1e66ea1e76ea1e7 -6da1e66ea1e76da1e66da1e66ea1e6669add5384bc86a2c292afd295b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d690add07d99bd4e81be5e96de5e96de5e96de5e96de5e96de5e96de5e95dd -5e96de5e95dd5e95dd5e96de5e95dd5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de588cd000000021354f -5e96de5e96de5e96de5e96de5e96de5e96de3f65963a5e8b5e96de5e96de5e96de -5e96de5e96de5e95dd5e96de5e95dd5e95dd5e96de5e95dd5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e95dd5e96de5e95dd5e95dd -5e96de5e95dd5e96de5e96de5e96de5e96de5e96de5e96de5e95dd5e96de5e95dd -5e95dd5e96de5e95dd5e96de5e96de5e96de5e96de5e96de5e96de5e96de5b93d9 -4e81bc85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d7 -95b3d795b3d795b3d795b3d793b0d48ca8ca678bb7578bca669ce2669ce2669ce3 -669ce2669ce3669ce3669ce2669ce3669ce2669ce2669be2669ce2669be2669be2 -669be2669be2669be2669be2669ce2669be2669ce2669ce2669ce3669ce2669ce3 -669ce3669be2669ce3669be2669be2669ce2669be2669ce2669ce2669ce3669ce2 -669ce3669ce3669be2669ce3669be2669be2669ce2669be2669ce2669ce2669ce2 -669ce2669ce2669ce2669be2669ce2669be2669be2669ce3669be2669ce3669ce3 -669be2669ce3669be2669be2669ce2669be2669ce2669ce2669ce3669ce2669ce3 -669ce3669ce2669ce3669ce2669ce2669be2669ce2669be2669be2669be2669be2 -669be2669be2669ce2669be2669ce2669ce2669ce3669ce2669ce3669ce3669be2 -669ce3669be2669be2669ce2669be2669ce2669ce2669ce3669ce2669ce3669ce3 -669be2669ce3669be2669be2669ce2669be2669ce2669ce2669ce2669ce2669ce2 -669ce2669be2669ce2669be2669be2669ce3669be2669ce3669ce3669be2669ce3 -669be2669be24d81bc809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c55a87ba -5f93d66b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe5 -6b9fe56b9fe56b9fe56a9fe46b9fe56a9fe46a9fe46b9fe56a9fe46b9fe5456795 -17223205080b0c121a354f726a9ee46b9fe56a9ee46a9ee46b9fe56a9ee46b9fe5 -6b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe5 -6b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56a9fe56b9fe56a9fe5324b6c000000 -496e9f6b9fe5141e2c080d126b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe5 -6b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe55c89c5000000 -2c425f6a9fe46b9fe56a9fe46a9fe46b9fe56a9fe46b9fe56b9fe56b9fe56b9fe5 -6b9fe56b9fe56a9ee46b9fe56a9ee46a9ee46b9fe55b88c40000002c425f6b9fe5 -6b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe5 -6b9fe56b9fe56b9fe56b9fe56a9fe56b9fe56a9fe56a9fe56b9fe56a9fe56b9fe5 -6b9fe56b9fe56b9fe540608a000000496d9e6b9fe56b9fe56b9fe56b9fe56b9fe5 -6b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56a9fe4 -6b9fe56a9fe46a9fe46b9fe56a9fe46b9fe56b9fe56b9fe55386c56397db6b9fe5 -6a9ee46b9fe56a9ee46a9ee46b9fe56a9ee46b9fe56b9fe56296da5387c66b9fe5 -6b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56b9fe56498dc -5383bc86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd4e81be5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a94dc4f81c2 -263f5e20344e3f679900000020344e5a93db315078385c8a34557f1c2f46568cd2 -32517a2c486b5287ca253c5a3c62925a93dc5a93dc3e6597253c5a548acf5a93dc -3a609020354f2137523e66985a93db5a93dc315078385c8a34557f1c2f46568cd2 -4c7dbb253d5b1b2c432b4669578fd65a93dc5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db -5a93dc5a93db5a93db5a93dc5890d74e81bc85a0c191aed194b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca -678bb75589ca6299e06299e06298e06299e06298e06298e06298e06298e06298e0 -6298e06299e06298e06299e06299e06299e16299e06299e16299e16298e06299e1 -6298e06298e06299e06298e03d608d3857806298e06299e06298e06298e06299e0 -6298e06299e06299e06298e06299e06298e06298e06298e06298e06298e06298e0 -6299e06298e06299e06299e06298e05281bc324e735686c56299e06298e06299e0 -6299e06299e06299e06299e06299e06298e06299e06298e06298e06299e06298e0 -6299e06299e06298e06299e06298e06298e06298e06298e06298e06298e06299e0 -6298e06299e06299e06299e16299e06299e16299e16298e06299e16298e06298e0 -6299e06298e06299e06299e06298e06299e06298e06298e06299e06298e06299e0 -6299e06298e06299e06298e06298e06298e06298e06298e06298e06299e06298e0 -6299e06299e06298e06299e06298e06298e06299e06298e06299e06299e06299e0 -6299e06299e06299e06298e06299e06298e06298e04c81bc809cbd90aed194b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d792b0d388a4c55a87ba5e92d5699ee4699ee4699ee4699ee4699ee4 -699ee4699ee4699ee4699ee46a9ee4699ee46a9ee46a9ee46a9ee46a9ee46a9ee4 -6a9ee4699ee46a9ee438557b0000000a10172b415d23344c0203046497db699ee4 -699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699de4 -699ee4699de4699de46a9ee4699de46a9ee46a9ee4699ee46a9ee4699ee4699ee4 -699ee4699ee4699ee45783be39567c6192d36a9ee4141e2b080c126a9ee4699de4 -699de4699ee4699de4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4 -699ee4699ee46a9ee45a88c40000002c415e6a9ee46a9ee46a9ee46a9ee4699ee4 -6a9ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4 -699ee45a88c40000002b415e699ee4699ee4699ee4699ee4699de4699ee4699de4 -699de46a9ee4699de46a9ee46a9ee4699ee46a9ee4699ee4699ee4699ee4699ee4 -699ee4699ee46a9ee4699ee46a9ee46a9ee4699de46a9ee43f5e89000000486d9d -699de4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4699ee4 -6a9ee4699ee46a9ee46a9ee46a9ee46a9ee46a9ee46a9ee4699ee46a9ee4699ee4 -699ee4699ee45286c56296da699ee4699ee4699ee4699ee4699ee4699ee4699ee4 -699ee4699ee46096d95287c6699ee4699ee4699de4699ee4699de4699de46a9ee4 -699de46a9ee46a9ee4699ee46398db5383bc86a2c292afd295b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -90add07d99bd4e80be5892db5892db5891da5892db5891da5891da5891da5891da -5891da5891da5892db5891da5892db5892db5892db5892db5892db5892db5891da -5892db5891da5891da558ed50a1119000101101a280102040000001f334d5891da -101c2a060a0f00010104060a5083c6101c2a070b11558dd404070b0c151f5891da -5891da101b29060b115690d82e4c730000002136521522340000003960905891da -101c2a060a0f00010104060a4f82c4080e150d15202944671421324d7fc05892db -5891da5892db5892db5891da5892db5891da5891da5891da5891da5891da5891da -5892db5891da5892db5892db5892db5892db5892db5892db5891da568fd74e80bc -85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d7 -95b3d795b3d795b3d793b0d48ca8ca678bb75489ca6098df6098df6097df6098df -6097df6097df6097df6097df6097df6097df6097df6097df6097df6097df6097df -6097df6097df6097df6098df6097df6098df6098df6097df6098df121d2a070c12 -6098df6097df6098df6098df6097df6098df6097df6097df6097df6097df6097df -6097df6098df6097df6098df6098df6097df6098df6097df6097df6097df395b86 -0000004268996098df6097df6098df6098df6097de6098df6097de6097de6097df -6097de6097df6097df6098df6097df6098df6098df6097df6098df6097df6097df -6097df6097df6097df6097df6097df6097df6097df6097df6097df6097df6097df -6097df6098df6097df6098df446b9e0b121b0d151f5282c06097df6098df6097df -304d710e17220e1722111c292338535180bd6097df446b9f0c121b3e62926098df -6097df6098df6098df6097df6098df6097df6097df6097df6097df6097df6097df -6098df6097df6098df6098df6097de6098df6097de6097de6097df6097de6097df -6097df4c80bc809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c55a87ba5d92d5 -689de4689de3689de4689de3689de3689de3689de3689de3689de3689de3689de3 -689de3689de3689de3689de3689de3689de3689de45f90d104070a05080b5d8ccb -689de4689de35a88c5689de3689de3486c9d293e5923344c3753786396da689de3 -6193d42b415e547fb838557b2132493b5a826497db344f732133493f608b689de3 -689de339567c426491496ea022334a2c43625c8cca689de44e76ac2a405d5b8ac9 -679ce3131d2b080c12679ce3689de35681bb2c426022344b3753796598dd689de3 -4d75aa2c4361527cb32132484d74a9689de3689de3689de35987c3000000283d59 -36517621314839567d679be1689de45682bc2e46651f3045263a544c73a7689de3 -689de3689de3426491253851263953517ab15987c30000002b415e689de3446896 -2a405c5a88c5689de4689de3689de4689de46395d83550742133492d44625987c3 -689de36193d42b415e5480b939567d22344c3a587f669ae1689de4679ce3496fa2 -2538512d4463365176000000476c9d689de3466b9b24375022334a446897689de3 -689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3689de3 -689de3689de3689de4689de3689de4689de4689de35286c56196d9689de3689de3 -689de3689de3689de3689de3689de3689de3689de36095d85287c6689de3689de3 -689de4689de3689de4689de4689de3689de4689de3689de3689de36297da5383bc -86a2c292afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d794b2d690add07d99bd4e80bd5691da5691da5690d9 -5691da5690d95690d95690da5690d95690da5690da5690d95690da5690d95690d9 -5690da5690d95690da5690da5691da5690da5691da5691da3b6294000000284365 -5690d93c65980000001e334c5691da101b290001013d669a558fd95690d9101b29 -070b115690d91e334d0000004879b64b7fc0000000223956558fd904070b18293e -5690da548dd403050817283c5690d9101b290001013d669a5590d94f84c7000000 -18293e5087cc5690d95690d95691da5690d95691da5691da5690d95691da5690d9 -5690d95690da5690d95690da5690da5690d95690da5690d95690d95690da5690d9 -5690da5690da5691da548ed64e80bc85a0c191aed194b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -6e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7 -5488c95e96de5e96de5e96de5e96de5e96de5e96de5e95dd5e96de5e95dd5e95dd -5e96de5e95dd5e96de5e96de5e96dd5e96de5e96dd5e96dd5e96de5e96dd5e96de -5e96de5e96de5e96de121c2a070c125e96de5e96de5e96de5e96de5e95dd5e96de -5e95dd5e95dd5e96de5e95dd5e96de5e96de5e96de5e96de5e96de5e96de5e95dd -5e96de5e95dd5e95dd5e96de3859850000004067995e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e95dd5e96de5e95dd5e95dd5e96de5e95dd -5e96de5e96de5e96dd5e96de5e96dd5e96dd5e96de5e96dd5e96de1d2f45000101 -0000002f4b705e96de5e96de5e96de1c2c42000000273d5b21354f000101070b11 -588cd03b5e8b00000035547d5e96de5e96de5e96de5e96de5e95dd5e96de5e95dd -5e95dd5e96de5e95dd5e96de5e96de5e96de5e96de5e96de5e96de5e96de5e96de -5e96de5e96de5e96de5e96de5e96de5e96de4c80bc809cbd90aed194b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d792b0d388a4c55a86ba5b90d3659ae1659be2659ae1659be2659be2649ae1 -659be2649ae1649ae1659be2649ae1659be2659be2649ae1659be2649ae1649ae1 -659be1486fa2000000253953659be2659be1659be2659be2659be237547b000000 -121c2919273a000000172435649ae15785c2000000080d13080d1305090d000000 -0d141d090d1405080c000000476da0649ae1131d2b070c11030608111a26000000 -111a26649ae03552770000004b74a8659be2131d2b080c12659be25380bb030407 -162232253954020406203148659be2355177000000070a0f05080c3a5982649ae1 -649ae1659be25684c20000000101020b1119090f16000000324d71659be1121c2a -15202f263a550c121b0102035583c0659be2324d710000000b1118141f2d172435 -5785c200000029405d4e78b00102031926386297dc659be1659be2659be16499df -141e2d080c122a41600a1018060a0f5c8ed05785c2000000080d13070c11070b10 -0000003c5d88659be14c74aa00000006090e0e151f000000000000456a9b4c74aa -0000001f2f452b4362203249659be2659be2649ae1659be2649ae1649ae1659be2 -649ae1659be2659be2649ae1659be2649ae1649ae1659be1649ae1659be1659be1 -659be25185c45f94d9659be2659be2659be2659be2659be2649ae1659be2649ae1 -649ae15d93d85186c5659be2659be2659be1659be2659be1659be1649ae1659be1 -649ae1649ae1659be25f94d95383bc86a2c292afd295b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690add0 -7d99bd4d80bd528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7 -528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7 -528dd7528dd72d4d760000003a6498528dd74c85ca0000001d324d528ed80f1b29 -060b11528dd7528dd7528ed70f1b29060b11528ed73861940000002b4a712f517c -0000003b669c487dbf00000001020403060a03060a000000111d2c528dd70f1b29 -060b11528ed7528dd7528ed7203754000000030508243f60508bd4528dd7528ed8 -528dd7528dd7528ed8528dd7528ed8528ed8528dd7528ed8528dd7528dd7528ed8 -528dd7528ed8528ed8528dd7528ed8528dd7528dd7528dd7518bd34e80bc85a0c1 -91aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d7 -95b3d795b3d793b0d48ca8ca678bb75388c95c94dd5c94dd5c94dd5c94dd5c94dd -5c94dd5c94dd5c94dd5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5c95dd5c95dd -5c95dd5c95dd5c95dd5c95dd5c95dd5c95dd5c95dd5c95dd111c2a070c12436ca1 -20344e273f5e5487c95c94dd568bcf3251791e30481e314933527b5991d75c95dd -446fa527405f4876af1d2f47446ea45c95dd41699d21354f2841612f4d73000000 -3f66984773ab253c594b79b45c94dc4d7ebb253c594672a95c95dd5488c9253d5b -426b9f568cd03251791e31481e314933527b5990d75c94dd446ea5273f5f4875af -1d2f47446ea45c94dd4c7bb6263e5d1e3149314f755990d65c95dd5c95dd5c95dd -5c95dd5c95dd568cd002040623395405080d0e17225c95dd5c94dc5c95dd1b2c41 -0000005386c85c94dc20344e00000040699c3a5d8b00000033547c5c95dd5c95dd -5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5c94dc -5c95dd5c94dc5c94dc5c95dd5c94dc5c95dd5c95dd5c95dd5c95dd5c95dd5c95dd -4c80bc809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c55a86ba5a90d3639ae1 -6399e1639ae16399e16399e1639ae16399e1639ae1639ae1649ae1639ae1649ae1 -649ae1639ae1649ae1639ae1639ae1649ae1395983000000304a6d649ae1649ae1 -649ae1649ae16197dd05070b1019246197dd6399e122364f0000004f7bb45684c2 -00000014202e6093d8486fa30000001521306094d9476da10000002f496b6399e1 -131d2b020305517eb8649ae11d2d410000004f7bb43451760000004a72a7649ae1 -131d2b080c12649ae1263a550101025d90d3649ae122364f0000005d90d4345177 -000000263b576299e06298e0639ae1639ae1649ae15584c20000001521305f95d9 -5c8ed00305070d151e649ae15a8ccd649ae1649ae14266950000004063906398df -0306080b121a6094d96399e05685c35584c100000022354e0c121b1019255d90d2 -649ae1649ae1649ae1649ae1476da00000003e608c6399e143699a0000003c5d89 -5684c2000000141f2d5f93d7527fba0000002438526399e023364f000000507bb4 -649ae1243852000000446a9b3a5a8400000038577f6297df639ae16399e16399e1 -639ae16399e1639ae1639ae1649ae1639ae1649ae1649ae1639ae1649ae1639ae1 -639ae1649ae1639ae1649ae1649ae1649ae15185c45e93d8649ae16399e0649ae1 -6399e06399e06399e16399e06399e16399e15d93d75186c5649ae1649ae1649ae1 -649ae1649ae1649ae16399e1649ae16399e16399e1649ae15e94d95283bc86a2c2 -92afd295b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d794b2d690add07d99bd4d80bd508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6 -508cd7508cd6508cd6508cd7508cd6508cd7508cd72f527d000000325887508cd6 -487ec10000001c314c508cd60f1a29060b11508cd6508cd6508cd70f1a29060b11 -508cd74d88d104070a111e2e15263b050a0f4e89d34a83c800000017293e4376b4 -4376b44376b44981c5508cd60f1a29060b11508cd7508cd6508cd7508cd73f6ea8 -16273c000000325887508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6 -508cd6508cd74f8ad24e80bc85a0c191aed194b2d695b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c9 -97aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec -7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb75288c8 -5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93dc5a93db -5a93dc5a93db5a93db5a93db5a93db5a93db5a93db5a93dc5a93db5a93dc5a93dc -5a93db5a93dc111c2a0001010203050c131d00000018273b5a94dc2e4c72090f17 -2035501624370000002f4d745a93dc2f4d73000000060a0f04080c33547e436ea4 -00000005090d0c141e0000000000003e65974571a90000002741615a93dc2d496e -00000020344e5a93dc375b870000003c63932e4c72090f1720354f162437000000 -2f4d745a93dc2f4d74000000060a0f04080c33547e4a79b6020406142031213651 -0204061c2f465a93db5a93db5a93db5a93dc5a93db375b88000000436da3213651 -0000004876b05a93dc5a93db1a2b410000005186c75a93dc20354f0000004470a8 -385d8a00000032537c5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc -5a93db5a93dc5a93db5a93db5a93dc5a93db5a93dc5a93dc5a93dc5a93dc5a93dc -5a93dc5a93db5a93dc5a93db5a93db4c80bc809cbd90aed194b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -92b0d388a4c55a86ba598fd36299e06299e06299e06299e06299e06299e06299e0 -6299e06299e06298e06299e06298e06298e06198df6298e06198df6198df6299e0 -3f6392000000283f5c6198e06299e06198e06198e05585c30000002439536299e0 -6299e037567e0000004267975484c1000000283f5d6299e05281bf000000294160 -6198e05381bd0000002b43626299e0121d2b080c126298e06298e0324f73000000 -446a9c3351760000004972a76298e0121d2b070c126298e015213000000004070a -04070a0203050000005686c43351760000004972a76299e06299e06299e06299e0 -6298e05484c1000000283f5d6198df6298e0121c290204066299e04973a91d2d42 -0e1621060a0e0000003b5c895585c400000021344d6299e06299e06299e05484c1 -000000060a0f0000002c45656299e06299e06198e06299e06198e035547b000000 -03050704070a0306080000003552795483c1000000283f5d6298e05e94d8000000 -1e2f466299e01521310305086198df6298e03a5b8600000043699a588acb0e1621 -0000000b121b4267976299e06299e06299e06299e06299e06299e06298e06299e0 -6298e06298e06198df6298e06198df6198df6299e06198df6299e06299e06198e0 -5085c45c92d76198e06299e06198e06299e06299e06299e06299e06299e06299e0 -5b92d65086c56299e06299e06198e06299e06198e06198e06299e06198e06299e0 -6299e06298e05d94d85283bc86a2c292afd295b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd -4d80bd4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd5 -4e8ad54e8bd54e8ad54e8ad54e8ad54e8ad54e8ad54e8ad54e8ad54e8ad54e8ad5 -4e8ad53f71ae0000000d1723325888111f2f0000001b314b4e8bd50e1a29060b11 -4e8bd64e8bd64e8bd50e1a29060b114e8bd54e8ad51b314b0000000102041e3653 -4e8ad54e8bd50e192703070a355e914072b1345d9038659b4e8ad50e1a28060b11 -4e8ad54e8bd5477ec22a4b744276b62d517d0000002f54824e8bd54e8ad54e8bd5 -4e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8bd54e8ad54e8bd5 -4e8ad54e8ad54e8ad54e8ad54e8ad54e8ad54e8ad54d88d14e80bc85a0c191aed1 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d7 -95b3d793b0d48ca8ca678bb75187c75892db5892db5891da5892db5891da5891da -5891da5891da5891da5891da5892db5891da5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db5892db5892db101c2a0204064674af5791da -0e18240305075891da5288cd568ed55891da568fd60101021b2d435892db2e4d73 -0000002238545791d95791da1f334c0000004674af5892db20354f0000003c6497 -5690d8060a0f0f19255892db152436000000070d135791da1f344e0102045389ce -5287cc568fd65891da568fd60101021b2c435892db2e4c730000002238545790d9 -5790d92137520101025288cd5892db1f334d0000005389ce5892db5892db5892db -5892db17273b070c125690d83d66990000002842645892db5892db1a2b41000000 -2b476a233b590102030d1621558dd4375b8900000031527b5892da5892db5892da -5892da5892db5892da5892db5892db5892db5892db5892db5892db5892db5892db -5892db5892db5892db5892db5892db5892db5891da5892db5891da5891da4c80bc -809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d792b0d388a4c55a86ba578ed25f97df5e96de -5f97df5e96de5e96de5f96de5e96de5f96de5f96de5f97df5f96de5f97df5f97df -5f97de5f97df5f97de5f97de5f97df4e7cb60000000a11195c92d85f97df5f97df -5d94da578bcc0000001c2d435f97de5f96de2d486b0000004872a85182c0000000 -273e5c5f97df5180bd00000028405f5f96de507fbc0000002942615f97df121c2a -05090d5d93da5f96de28405f0000004974ac324f760000004771a75f97de121d2a -070c125f97de19283b0102044f7eba507ebb507fbc5283c25e96de324f76000000 -4670a65f96de5e96de5f96de5f96de5f97df5181bf000000243a555f97de5f97df -0a0f17090f165a90d5030507141f2f4872a93657800000003a5c88578acc000000 -1c2d435f97de5f97de5f96de5182bf000000263c59131e2c0102034d7ab55f97df -5f96de5f97df5f96de395a8600000036567f507fbc507fbc507fbc5c93d95181bf -000000273e5c5f96de5c92d80000001d2f455f97df1725370101025a8fd45f97de -36557e0000004168995f96de5c93d93d61900a1018020305588dd15e96de5f96de -5e96de5f96de5f96de5f97df5f96de5f97df5f97df5f97de5f97df5f97de5f97de -5f97df5f97de5f97df5f97df5f97df5084c45a91d65f97df5f97de5f97df5f97de -5f97de5f96de5f97de5f96de5f96de5990d55085c45f97df5f97df5f96de5f97df -5f95dd5f95dd5e96de5e95dc5e95dd5d95dd5d94db5a91d75282bc86a2c292afd2 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d690add07d99bd4d80bd4a88d34a88d34a87d34a88d34a87d3 -4a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d32240630001020001011b324e -0c17241b324d4a88d30f1c2c070d154a88d34a88d34a88d30f1c2c070d154a88d3 -4a88d334609500000000000036649c4a88d34a88d33c6fac0d1825000000000000 -0204072d54824a88d30f1c2c070d154a88d34a88d3447dc2070d15000000000000 -14263b4781ca4a88d34a87d34a88d34a88d34a87d34a88d34a87d34a87d34a88d3 -4a87d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a87d04e80bb85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5 -769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb75186c75690d9 -5690d95690da5690d95690da5690da5690d95690da5690d95690d95691da5690d9 -5691da5691da5690d95691da5690d95690d95690d95690d95690d95690d95690d9 -5690d9101b29070b115690d95690d9192a40000000548ed64e84c7233b580f1926 -080e1600000017273b5690d92d4c73000000406ba35690da5690d9121f2f030508 -5690d95691da3356830000003b64965690d91e334c0000004a7dbc0203051a2c43 -0000004675b1080e161625395690d94e84c7233a580f1926080e1600000017273b -5690d92d4c73000000406ba25690da5690d9121f2f00000004060a04060a020305 -0000004b7fbf5690d95690d95690d94e83c6010102111d2c33568331537d000000 -091018558fd85690d9192a4000000005090d0d16222037524c80c15690d9365b89 -00000030517a5690da5690d95690da5690da5690d95690da5690d95690d95691da -5690d95691da5691da5690d95691da5690d95690d95690d95690d95690d95690d9 -5690d95690d95690d95690d94c80bc809cbd90aed194b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d3 -88a4c55a86ba568dd15d95dd5e96de5d95dd5e96de5e96de5d95dd5e96de5d95dd -5d95dd5e96de5d95dd5e96de5e96de5d95dd5e96de5d95dd5d95dd5d95dd5d95dd -1c2c42000000131e2d34537b2d496d0a1018578bcf111b28020406385a863f6595 -080c130a11195b91d75080be000000263d5b5d95dd4f80bd00000028405f5d96de -4e7ebb0000002841615d95dd121c2a0000001c2c4238598405080c060a0f588ed3 -314e75000000456fa55d95dd111c2a070c125d95dd304d730000002b46684c7bb7 -4670a63657825e96de314e750000004670a65d95dd5e96de5d95dd5d95dd5e96de -5080be0000000101022e4a6e2942620000002136505284c40000001b2c415081bf -213650000000385b875d95dd0e172301020434547c37598420334c5080be000000 -273e5c4b78b2010102121d2b5b93da5d96de5d95dd5d96de4e7ebb010102152233 -4975ae4b78b23657815386c75181bf000000263d5b5e96de5a90d60000001d2e45 -5d95dd2d486b00000022375237588305090d000000406698426a9e3f66975182c1 -1c2d43000000588cd05e96de5d95dd5e96de5d95dd5d95dd5e96de5d95dd5e96de -5e96de5d95dd5e96de5d95dd5d95dd5d95dd5d95dd5d95dd5d95dd5d95dd4f84c3 -5990d55d95dd5d95dd5d95dd5d95dd5d95dd5e96de5d95dd5e96de5e96de588fd4 -4a7ebb4b7fbb4c7fbb4b7ebb4a7fbb4b7ebb4b7fbb4b7fbb4c7fbb4c7fbb4c7fbc -4c80bb4c7fbb5b85b887a2c392afd295b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd4d80bd -4886d24886d24887d24886d24887d24887d24886d24887d24886d24886d24887d2 -4886d24887d24887d24886d24887d24886d24886d24886d24886d24886d24886d2 -4886d24886d24480c8437ec54886d24683ce4784d04886d24785cf4683ce4887d2 -4887d24886d14785cf4683cd4886d14886d24886d14683cd4683cd4886d24886d2 -4886d24886d24887d2427cc33e76b74684cd4886d24887d24784cf4683ce4886d1 -4886d24886d14785d03f75b8427cc24886d24886d24886d24886d24886d24886d2 -4887d24886d24887d24887d24886d24887d24886d24886d24887d24886d24887d2 -4887d24886d24887d24886d24886d24886d24885cf4e80bb85a0c191aed194b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d7 -93b0d48ca8ca678bb75086c7548fd9548fd9548ed8548fd9548ed8548ed8548fd9 -548ed8548fd9548fd9548fd8548fd9548fd8548fd8548fd9548fd8548fd9548fd9 -548fd9548fd9548fd9548fd9548fd9548fd9101b29060b11548fd8548fd9192b41 -000000528cd51b2e46020406385f904475b102030517273b548fd82c4b72000000 -3e6ba2548fd9548fd91523360001025088cf548ed82f517b000000396295548fd8 -365b8b0000001f35510000004576b20001022037540000002e4f78548fd91b2e46 -020406385f904475b102030517263b548fd92c4b720000003e6ba2548ed8548fd9 -1626390102044677b54678b64678b6497cbc548fd8548fd9548fd9548fd930527d -000000000102010203010203000101000000406da5548fd9192a400000004c81c4 -548fd8548fd9548fd9548fd8355a890000002f5079548fd9548fd8548fd9548fd9 -548fd9548fd9548fd9548fd9548ed8548fd9548ed8548ed8548fd8548ed8548fd8 -548fd8548fd9548fd8548fd9548fd9548fd9548fd9548fd9548fd94c80bc809cbd -90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d792b0d388a4c55a86ba558dd15c95dd5b94dc5c95dd -5b94dc5b94dc5c95dd5b94dc5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd5c95dd -5c94dd5c95dd5c95dd5c95dd5c95dd568bcf2237520305070000000102041f324b -5b92db4b7ab50f19260000000000000f18244876af5c95dd5082c100000028405f -5c94dc5081c00000002943635c95dd4f80be0000002a44655c95dd111c2a04070b -15223300000004060a3d64955c94dd3251790000004671a95c95dd131f2e090f16 -5c95dd588fd520354e0001010000000000001c2e455b94dc3251790000004571a9 -5c95dd5b94dc5c95dd5c95dd5c94dd5082c1000000243a5705090d000000101a27 -5184c35c95dd243b570000000000001f324b000000395c895c95dd4875af0b121b -0000000101022a44655082c20000002840605c94dc2a4567000000385a865c95dd -5c94dc5c95dd5c95dd37598505080d000000000000090f175183c34f82c1000000 -2840605b94dc5990d70101021e31495c94dd558acd14213100000004070b2e4a6e -00000040689b3c62920203050000000204063251785b94dc5b94dc5c95dd5b94dc -5c95dd5c95dd5c94dd5c95dd5c94dd5c94dd5c95dd5c94dd5c95dd5c95dd5c95dd -5c95dd5c95dd5c95dd5c95dd4f84c35890d55c95dd5c94dd5c95dd5c94dd5c94dd -5c95dd5c94dd5c95dd5c95dd578ed35080b8637893647a93667a93667a93667a93 -667b94667b94667b94667b94667b94687c966c819b7891ae89a4c692afd295b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d690add07d99bd4c80bd4685d14685d14685d04685d14685d04685d0 -4685d14685d04685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d04685d14685d04685d04685d1 -4685d04685d14685d14685d14685d14685d14685d14684d04685d14684d04684d0 -4685d14684d04685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d04685d14685d04685d04685d14685d0 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4684ce4d80bb85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb -95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb74f85c6528dd7528dd7 -528dd7528dd7528dd7528dd7528ed8528dd7528ed8528ed8528ed8528ed8528ed8 -528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528dd7528dd7 -0f1b29060b11528dd7528dd7182a40000000508ad3121e2f04070a4475b3335988 -00010116263b528ed82b4a710000003d69a1528dd7528dd72744680000001e3450 -30548005080d000000386295528dd74c83c80001020001020c1520528dd7121e2f -0001020000004577b6528ed7121f2f04070a4476b333598700010116263b528dd7 -2b4a710000003d6aa1528dd7528ed82a4a700000002642654375b23d6aa230527e -528ed8528dd7528dd7528dd71220310306094f88cf528dd7528dd7365c8d000000 -213a58528dd7182a400000004a7fc2528dd7528dd7528dd7528ed8335987000000 -2e5079528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528ed8528dd7 -528ed8528ed8528dd7528ed8528dd7528dd7528dd7528dd7528dd7528dd7528ed7 -528dd7528ed7528ed74c80bc809cbd90aed194b2d695b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c5 -5a86b9538bcf5992db5992db5992db5992db5992db5993dc5992db5993dc5993dc -5993db5993dc5993db5993db5992db5993db5992db5992db5992db5992db5992db -5992db5890d94f81c2558cd35992db5892db5992db5892db5187ca5287ca5892db -5992db5992db5993dc568ed55892db5993dc5992db568fd65891da5992db5992db -568ed55891da5992db111c2a070c125993db4e81c1578fd75993db5992db5992db -568dd45992db5992db5790d8578fd75992db5992db5992db568dd44d7fbe5489ce -5992db5992db5992db568dd45992db5993dc5992db5993dc5993dc5993db5993dc -568fd55993db568dd44f83c35992db5992db5992db5992db5286c95388cd5992db -578fd65992db5992db5892db5992db4f83c55389ce5992db5892db568ed55891da -5993dc5992db568ed55993dc5992db5993dc5992db5992db5992db5891da4f81c2 -5084c65993db5992db5993db568fd55891da5993db5992db578fd65890d95992db -5992db5992db5185c8578fd75992db568ed55992db5992db558cd24d7fbe568dd4 -5992db5992db5992db5993dc5992db5993dc5993dc5993db5993dc5993db5993db -5992db5993db5992db5992db5992db5992db5992db5992db5992db4e83c3568dd3 -5992db5892db5992db5892db5892db5992db5892db5992db5992db558ed35381b8 -6e849f7188a4738aa6738aa6748ba7748ba7748ca8748ca8748ca8748ca8758da9 -7992af829cbc8da9cc93b0d495b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d690add07d99bd4c80bd4282ce -4282ce4282cf4282ce4282cf4282cf4283cf4282cf4283cf4283cf4282cf4283cf -4282cf4282cf4282ce4282cf4282ce4282ce4282ce4282ce4282ce4282ce4282cf -4282ce4282cf4282cf4282ce4282cf4282ce4282ce4282cf4282ce4282cf4282cf -4283cf4282cf4283cf4283cf4282cf4283cf4282cf4282cf4282ce4282cf4282ce -4282ce4282cf4282ce4282cf4282cf4282cf4282cf4282cf4282cf4282ce4282cf -4282ce4282ce4282cf4282ce4282cf4282cf4282ce4282cf4282ce4282ce4282cf -4282ce4282cf4282cf4283cf4282cf4283cf4283cf4282cf4283cf4282cf4282cf -4282ce4282cf4282ce4282ce4282ce4381cb4d80bb85a0c191aed194b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d4 -8ca8ca678bb74e85c6508cd7508cd7508cd6508cd7508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd7508cd6101d2d080e15508cd7508cd7192d45000102 -4f8ad3365f9203060a0000000c16220f1a2817283e508cd62b4c760000003d6ba5 -508cd7508cd64a82c7111f2f00000004070a28466b000000386296508cd7508dd7 -142336000000223b5b508cd72a49700000000d1723508cd6508cd6365f9203060a -0000000c16220f1a2817283e508cd72b4c750000003d6ba4508cd6508cd64d87ce -1c314c000101000000000000192b43508cd6508cd6508cd64a81c60000001b2f49 -508cd6508cd7508cd64c85cd03060a080f17508cd7192c440001014981c5508cd7 -508cd6508cd6508cd6345b8c0000002f527d508cd7508cd6508cd7508cd7508cd6 -508cd7508cd6508cd6508dd7508cd6508dd7508dd7508cd7508dd7508cd7508cd7 -508cd6508cd7508cd6508cd6508cd6508cd6508cd6508cd64c80bc809cbd90aed1 -94b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d792b0d388a4c55986b9538bcf5892db5791da5892db5791da -5791da5791da5791da5791da5791da5791da5791da5791da5791da5892db5791da -5892db5892db5791da5892db5791da5791da5892db5791da5892db5892db5892db -5892db5892db5892db5791da5892db5791da5791da5891da5791da5891da5891da -5892db5891da5892db5892db5791da5892db5791da5791da101c2a070b115892db -5892db5892db5892db5892db5892db5791da5892db5791da5791da5791da5791da -5791da5791da5892db5791da5892db5892db5791da5892db5791da5791da5791da -5791da5791da5791da5791da5791da5791da5791da5892db5791da5892db5892db -5791da5892db5791da5791da5892db5791da5892db5892db5892db5892db5892db -5892db5791da5892db5791da5791da5891da5791da5891da5891da5892db5891da -5892db5892db5791da5892db5791da5791da5892db5791da5892db5892db5892db -5892db5892db5892db5791da5892db5791da5791da5791da5791da5791da5791da -5892db5791da5892db5892db5791da5892db5791da5791da5791da5791da5791da -5791da5791da5791da5791da5791da5892db5791da5892db5892db5791da5892db -5791da5791da5892db4e83c3558dd35892db5892db5892db5892db5892db5791da -5792db5791da5790d9548bd15483ba7c95b3849ebe86a1c186a1c186a2c286a2c2 -86a2c287a2c387a2c387a2c387a2c389a4c68da9cc92afd294b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d690add07d9abd4a7ebb4a81c14a81c14a81c14a81c14a81c14a81c14a80c1 -4a81c14a80c14a80c14a80c14a80c14a80c14a80c14a81c14a80c14a81c14a81c1 -4a81c14a81c14a81c14a81c14a81c14a81c14a81c14a81c14a81c14a81c14a81c1 -4a81c14a80c14a81c14a80c14a80c14a81c14a80c14a81c14a81c14a81c14a81c1 -4a81c14a81c14a81c14a81c14a81c14a81c14a81c14a81c14a81c14a81c14a81c1 -4a81c14a81c14a81c14a80c14a81c14a80c14a80c14a80c14a80c14a80c14a80c1 -4a81c14a80c14a81c14a81c14a81c14a81c14a81c14a81c14a80c14a81c14a80c1 -4a80c14a80c14a80c14a80c14a80c14a81c14a80c14a81c14a81c14a81c14a81c1 -4a7ebb85a0c191aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d7 -95b3d795b3d795b3d795b3d793b0d48ca8ca678bb74d83c54c89d44c89d44c8ad4 -4c89d44c8ad44c8ad44c89d44c8ad44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44b87d1 -4a86d04c89d44c89d44b87d24a86cf4c89d44c89d44984cc437abd4c89d44b87d1 -4b87d14c89d44c89d44985ce4c89d44c89d44c89d44c89d44c89d4457dc14a86d0 -4c89d44a85cf4c89d44c89d44c89d44b88d34984cd4c8ad44c89d44c8ad44986ce -4b87d24c8ad44c89d44c89d44984cc437abd4c89d44b87d14b88d14c89d44c8ad4 -4986ce4c89d44c8ad44c89d44c89d44c89d44985ce4277b84781c84c89d44c89d4 -4c89d44c89d44c89d44985ce4b88d34c89d44c89d44c89d44c89d44a86d04a86cf -4c89d44b88d34a86cf4c89d44c89d44c89d44c89d44c89d44c89d44985ce4c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c8ad44c89d44c8ad44c8ad44c89d44c8ad4 -4c89d44c89d44c80bc809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c55986b9 -518acf5690da5691da5690da5691da5691da5690d95691da5690d95690d95690da -5690d95690da5690da5690d95690da5690d95690d95690d95690d95690d95690d9 -5690da5690d95690da5690da5690d95690da5690d95690d95690da5690d95690da -5690da5690d95690da5690d95690d95690d95690d95690d95690d95690da5690d9 -5690da5690da385e8e3356835690d95690d95690da5690d95690da5690da5691da -5690da5691da5691da5690d95691da5690d95690d95690da5690d95690da5690da -5691da5690da5691da5691da5690d95691da5690d95690d95690da5690d95690da -5690da5690d95690da5690d95690d95690d95690d95690d95690d95690da5690d9 -5690da5690da5690d95690da5690d95690d95690da5690d95690da5690da5690d9 -5690da5690d95690d95690d95690d95690d95690d95690da5690d95690da5690da -5690d95690da5690d95690d95690da5690d95690da5690da5691da5690da5691da -5691da5690d95691da5690d95690d95690da5690d95690da5690da5691da5690da -5691da5691da5690d95691da5690d95690d95690da5690d95690da5690da5690d9 -5690da5690d95690d95690d95690d95690d95690d95690da4a7ebb4a7ebb4d80bd -4c80bc4c80bc4b7fbc4b7ebb4a7ebb4b7ebb4b7fbb4c7fbb4a7ebb5d86b685a0c0 -8fabce92afd292afd292afd292afd292afd292afd292afd292afd292afd292b0d3 -93b0d494b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d794b2d690aed1849fbf6a87ab5d7ca45b7aa1 -5b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa1 -5b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa1 -5a7aa05a7aa05a7aa05b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa1 -5b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa1 -5a7aa05a7aa05a7aa05a7aa05b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa1 -5a7aa05a7aa05a7aa05b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa1 -5b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa15b7aa1 -5b7aa15b7aa15b7aa15b7aa15d7ea46f8aaa86a2c291aed194b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca -678bb74c83c44a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a87d34a88d34a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d3 -4a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d3 -4a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d34a87d3 -4a88d34a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a87d34a88d34a87d34a87d34a88d3 -4a87d34a88d34a88d34a88d34a88d34a88d34a88d34b80bc809cbd90aed194b2d6 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d792b0d388a4c55986b95088cd538ed7538ed8538ed7538ed8538ed8 -538ed8538ed8538ed8538ed8538ed7538ed8538ed7538ed7538ed8538ed7538ed8 -538ed8548fd8538ed8548fd8548fd8538ed8548fd8538ed8538ed8538ed8538ed8 -538ed8538ed8538ed8538ed8538ed8538ed8548fd8538ed8548fd8548fd8538ed8 -548fd8538ed8538ed8538ed8538ed8538ed8538ed8538ed8538ed8538ed8538ed8 -538ed7538ed8538ed7538ed7538ed8538ed7538ed8538ed8538ed8538ed8538ed8 -538ed8538ed7538ed8538ed7538ed7538ed8538ed7538ed8538ed8538ed8538ed8 -538ed8538ed8538ed7538ed8538ed7538ed7538ed8538ed7538ed8538ed8548fd8 -538ed8548fd8548fd8538ed8548fd8538ed8538ed8538ed8538ed8538ed8538ed8 -538ed8538ed8538ed8538ed8548fd8538ed8548fd8548fd8538ed8548fd8538ed8 -538ed8538ed8538ed8538ed8538ed8538ed8538ed8538ed8538ed8538ed7538ed8 -538ed7538ed7538ed8538ed7538ed8538ed8538ed8538ed8538ed8538ed8538ed7 -538ed8538ed7538ed7538ed8538ed7538ed8538ed8538ed8538ed8538ed8538ed8 -538ed7538ed8538ed7538ed7538ed8538ed7538ed8538ed8548fd8538ed8548fd8 -548fd8538ed84e82bf5979a1627896627a94647a94647a94657a94667a93667a93 -667b94687c966c829c7992af89a4c692afd295b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -92afd288a4c57b94b17289a57087a27086a17086a17086a17086a17086a17086a1 -7086a17086a17086a17086a17086a17086a17086a17086a17086a17086a17086a1 -7086a17086a17086a17086a17086a17086a17086a17086a17086a17086a17086a1 -7086a17086a17086a17086a17086a17086a17086a17086a17086a17086a17086a1 -7086a17086a17086a17086a17086a17086a17086a17086a17086a17086a17086a1 -7086a17086a17086a17086a17086a17086a17086a17086a17086a17086a17086a1 -7086a17086a17086a17086a17086a17086a17086a17086a17086a17086a17086a1 -7086a17086a17086a17086a17086a17086a17086a17086a17087a2738aa67c95b3 -8aa6c792b0d394b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d7 -95b3d795b3d795b3d793b0d48ca8ca678bb74b83c44887d24887d24886d24887d2 -4886d24886d24886d24886d24886d24886d24887d24886d24887d24887d24886d2 -4887d24886d24886d24887d24886d24887d24887d24886d14887d24886d14886d1 -4887d24886d14887d24887d24886d24887d24886d24886d24886d14886d24886d1 -4886d14886d24886d14886d24886d24887d24886d24887d24887d24886d24887d2 -4886d24886d24887d24886d24887d24887d24887d24887d24887d24887d24886d2 -4887d24886d24886d24887d24886d24887d24887d24886d24887d24886d24886d2 -4886d24886d24886d24886d24887d24886d24887d24887d24886d24887d24886d2 -4886d24887d24886d24887d24887d24886d14887d24886d14886d14887d24886d1 -4887d24887d24886d24887d24886d24886d24886d14886d24886d14886d14886d2 -4886d14886d24886d24887d24886d24887d24887d24886d24887d24886d24886d2 -4887d24886d24887d24887d24887d24887d24887d24887d24886d24887d24886d2 -4886d24b80bc809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c55986b94f88ce -528ed8518dd7528ed8518dd7518dd7528dd7518dd7528dd7528dd7528ed8528dd7 -528ed8528ed8518dd7528ed8518dd7518dd7528dd7518dd7528dd7528dd7518dd7 -528dd7518dd7518dd7528ed7518dd7528ed7528ed7518dd7528ed7518dd7518dd7 -518dd7518dd7518dd7518dd7518dd7518dd7518dd7518dd7528dd7518dd7528dd7 -528dd7518dd7528dd7518dd7518dd7528dd7518dd7528dd7528dd7528dd7528dd7 -528dd7528dd7518dd7528dd7518dd7518dd7528ed8518dd7528ed8528ed8518dd7 -528ed8518dd7518dd7528dd7518dd7528dd7528dd7528ed8528dd7528ed8528ed8 -518dd7528ed8518dd7518dd7528dd7518dd7528dd7528dd7518dd7528dd7518dd7 -518dd7528ed7518dd7528ed7528ed7518dd7528ed7518dd7518dd7518dd7518dd7 -518dd7518dd7518dd7518dd7518dd7518dd7528dd7518dd7528dd7528dd7518dd7 -528dd7518dd7518dd7528dd7518dd7528dd7528dd7528dd7528dd7528dd7528dd7 -518dd7528dd7518dd7518dd7528ed8518dd7528ed8528ed8518dd7528ed8518dd7 -518dd7528dd7518dd7528dd7528dd7528ed8528dd7528ed8528ed8518dd7528ed8 -518dd7518dd7528dd7518dd7528dd7528dd7518dd75083c16280a27086a17188a4 -738aa6738aa6738aa6738aa6748ba7748ba7758da97992af829dbc8daacc93b0d4 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d793b0d48fabce88a3c4839dbd829cbc829cbc -829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc -829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc -829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc -829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc -829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc -829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc -829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc829cbc -829cbc829cbc829dbc849ebe89a4c68faccf93b1d595b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -6e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb7 -4a82c44685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d04685d14685d04685d04685d14685d0 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d04685d14685d04685d04685d14685d04685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d04685d14685d04685d04685d14685d04685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d04685d1 -4685d04685d04685d14685d04685d14685d14b80bc809cbd90aed194b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d792b0d388a4c55986b94e87cc508cd6508cd7508cd6508cd7508cd7508cd6 -508cd7508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6 -508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7 -508cd6508cd6518cd7508cd6518cd7518cd7508cd6518cd7508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7 -508cd6508cd7508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6 -508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6508cd6508cd6 -508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7508cd6508cd6 -518cd7508cd6518cd7518cd7508cd6518cd7508cd6508cd6508cd6508cd6508cd6 -508cd6508cd6508cd6508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7 -508cd6508cd6508cd7508cd6508cd7508cd7508cd6508cd7508bd5508bd4508bd4 -4f8bd3508ad34f8ad24f8ad24f8ad24f8ad24f8ad14f8ad14f8ad04f8ad04f8ad1 -4f8ad24c80bd6c8bb0819bba85a0c085a0c186a1c186a1c186a1c186a2c286a2c2 -87a2c389a4c68daacc92afd294b2d695b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d6 -93b0d491aed18faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf -8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf -8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf -8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf -8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf -8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf -8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf -8faccf8faccf8faccf8faccf8faccf8faccf8faccf8faccf90add091aed193b1d5 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d7 -95b3d795b3d793b0d48ca8ca678bb74981c34483d04483d04483d04483d04483d0 -4483d04483cf4483d04483cf4483cf4484d04483cf4484d04484d04484d04484d0 -4484d04484d04483cf4484d04483cf4483cf4484d04483cf4484d04484d04483d0 -4484d04483d04483d04484d04483d04484d04484d04483cf4484d04483cf4483cf -4484d04483cf4484d04484d04483cf4484d04483cf4483cf4483d04483cf4483d0 -4483d04484d04483d04484d04484d04484d04484d04484d04484d04483cf4484d0 -4483cf4483cf4483d04483cf4483d04483d04483d04483d04483d04483d04483cf -4483d04483cf4483cf4484d04483cf4484d04484d04484d04484d04484d04484d0 -4483cf4484d04483cf4483cf4484d04483cf4484d04484d04483d04484d04483d0 -4483d04484d04483d04484d04484d04483cf4484d04483cf4483cf4484d04483cf -4484d04484d04483cf4484d04483cf4483cf4483d04483cf4483d04483d04484d0 -4483d04484d04484d04484d04484d04484d04484d04483cf4484d04483cf4483cf -4b80bc809cbd90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c55986b94c86cb4d8ad4 -4d8ad54d8ad44d8ad54d8ad54d89d44d8ad54d89d44d89d44d8ad54d89d44d8ad5 -4d8ad54d8ad54d8ad54d8ad54d8ad54d8ad44d8ad54d8ad44d8ad44d8ad54d8ad4 -4d8ad54d8ad54d8ad44d8ad54d8ad44d8ad44d8ad54d8ad44d8ad54d8ad54d8ad4 -4d8ad54d8ad44d8ad44d8ad54d8ad44d8ad54d8ad54d89d44d8ad54d89d44d89d4 -4d8ad44d89d44d8ad44d8ad44e8ad54d8ad44e8ad54e8ad54d8ad54e8ad54d8ad5 -4d8ad54d8ad44d8ad54d8ad44d8ad44d8ad44d8ad44d8ad44d8ad44d8ad54d8ad4 -4d8ad54d8ad54d89d44d8ad54d89d44d89d44d8ad54d89d44d8ad54d8ad54d8ad5 -4d8ad54d8ad54d8ad54d8ad44d8ad54d8ad44d8ad44d8ad54d8ad44d8ad54d8ad5 -4d8ad44d8ad54d8ad44d8ad44d8ad54d8ad44d8ad54d8ad54d8ad44d8ad54d8ad4 -4d8ad44d8ad54d8ad44d8ad54d8ad54d89d44d8ad54d89d44d89d44d8ad44d89d4 -4d8ad44d8ad44e8ad54d89d24d88d14d88cf4c87cd4d85cc4b85ca4b85ca4b84c7 -4d84c64d84c44e84c34e83c14e82c04e82c04e82be4d81be4c80bc4c80bc4b7fbc -4a7ebb4a7ebb4a7ebb4b7fbb4c7fbb4c7fbb4d7fbb4d80bb4d7fbb4e80bb4f80ba -4f80ba4f80ba5080b95080b95080b95081ba5180ba7c97b88ba7c990aed191aed1 -91aed192afd292afd292afd292afd292afd292b0d393b0d494b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d794b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c9 -97aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec -7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d793b0d48ca8ca678bb74981c3 -4282cf4282cf4283cf4282cf4283cf4283cf4282cf4283cf4282cf4282cf4282cf -4282cf4282cf4282cf4282ce4282cf4282ce4282ce4282cf4282ce4282cf4282cf -4283cf4282cf4283cf4283cf4282ce4283cf4282ce4282ce4282cf4282ce4282cf -4282cf4283cf4282cf4283cf4283cf4282cf4283cf4282cf4282cf4282cf4282cf -4282cf4282cf4282cf4282cf4282cf4282cf4282ce4282cf4282ce4282ce4282cf -4282ce4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf4282cf -4283cf4282cf4283cf4283cf4282cf4283cf4282cf4282cf4282cf4282cf4282cf -4282cf4282ce4282cf4282ce4282ce4282cf4282ce4282cf4282cf4283cf4282cf -4283cf4283cf4282ce4283cf4282ce4282ce4282cf4282ce4282cf4282cf4283cf -4282cf4283cf4283cf4282cf4283cf4282cf4282cf4282cf4282cf4282cf4282cf -4282cf4282cf4282cf4282cf4282ce4282cf4282ce4282ce4282cf4282ce4282cf -4282cf4282cf4282cf4282cf4282cf4b80bc809cbd90aed194b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -92b0d388a4c55986b94b85cb4c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44b89d34c89d44b89d34b89d34c89d4 -4b89d34c89d44c89d44c89d44c89d44c89d44c89d44b88d34c89d44b88d34b88d3 -4c89d44b88d34c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44b89d44c89d4 -4b89d44b89d44c89d44b89d44c89d44c89d44b89d44c89d44b89d44b89d44c89d4 -4b89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d44c89d4 -4c89d44c89d44c89d44c89d44b89d34c89d44b89d34b89d34c89d44b89d34c89d4 -4c89d44c89d44c89d44c89d44c89d44b88d34c89d44b88d34b88d34c89d44b88d3 -4c89d44c89d44c89d44c89d44c89d44c89d44c88d34c87d14c87ce4c86cb4b84c9 -4b84c84d83c54e84c34e83c04e81be4c80bd4b7fbb4b7fbb4d80bb4f80ba5080b8 -527fb5547fb2557eaf567ca9577ba6597ba45a7ba25b7aa05d7a9d5d7a9c5e799b -5f7999617a97627995637a95647a94647a93667a93667a93667b94667b94677c95 -677c95687c96687c96687c96687d96687d96687d96687d96697e97697e976c819b -758da9849ebe8faccf93b1d594b2d694b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d7 -95b3d793b0d48ca8ca6d8eb74a7ebb4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf -4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4c80bf4a7ebb -819cbe90aed194b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d792b0d388a4c55986b94a84ca4a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4b88d44a88d34b88d44b88d44a88d34b88d44a88d34a88d34a88d34a88d34a88d3 -4a88d34a87d34a88d34a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a87d34a88d34a87d34a87d34a88d34a87d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d3 -4a87d34a88d34a87d34a87d34a88d34a87d34a88d34a88d34a88d34a88d34a88d3 -4a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34a88d34b88d44a88d3 -4b88d44b88d44a88d34b88d44a88d34a88d34a88d34a88d34a88d34a88d34a87d3 -4a88d34a87d34a86d14a86ce4a84cc4a84c84b83c64d83c34e82c04c81be4b7fbc -4b7fbb4e80bb507fb8537fb4557dae567ba7597aa35b7a9f5e7b9c607a98627a96 -647a94667b94677c95687d96697e976a7f996b819b6c829c6d839e6e849f6f85a0 -7086a17086a17087a27087a27188a37188a37188a37188a47289a5738aa6738aa6 -738aa6748ba7748ca8748ca8758da9768daa768daa768eab768eab778fac778fac -778fac778fac778fac7890ad7a92b0819bba8ba7c892afd294b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5 -769dcb95b3d795b3d795b3d795b3d795b3d793b0d48da9cc7f99b76785a75f7c9e -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b5e7a9b -5e7a9b5e7a9b5e7a9b607c9f6e89a985a0c090aed194b2d695b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d3 -88a4c55986b94983ca4886d24786d14886d24786d14786d14786d24786d14786d2 -4786d24786d14786d24786d14786d14786d14786d14786d14786d14786d24786d1 -4786d24786d24786d14786d24786d14786d14786d24786d14786d24786d24786d1 -4786d24786d14786d14786d14786d14786d14786d14886d24786d14886d24886d2 -4786d24886d24786d24786d24786d14786d24786d14786d14886d24786d14886d2 -4886d24785d14886d24785d14785d14786d14785d14786d14786d14886d24786d1 -4886d24886d24786d14886d24786d14786d14786d24786d14786d24786d24786d1 -4786d24786d14786d14786d14786d14786d14786d14786d24786d14886d24785cf -4884cc4882c94982c64c82c34d82c04c80bd4a7ebb4c7fbb5080b9527fb4557dac -587ba55b7a9f5e7a9c617a98647a94667b94687c96697f986a809a6c829c6e849f -6f85a07086a17087a27188a37188a4738aa6748ba7768daa778fac7891ae7a92b0 -7b94b27d96b57e98b67f99b8809ab9819bbb829cbc839dbd849ebe849fbf849fbf -85a0c085a0c085a0c185a0c186a1c186a1c186a2c286a2c287a2c387a2c388a3c4 -88a3c488a3c488a4c588a4c588a4c588a4c589a4c689a4c689a4c68aa6c78da9cc -90aed193b1d595b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d7 -93b1d58faccf85a0c17992af738aa67188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a37188a37188a37188a3 -7188a37188a37188a37188a37188a37188a37188a37188a3738aa67b94b289a4c6 -92afd294b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d792b0d388a4c55985b94782c84584d04685d14584d0 -4685d14685d14584d04685d14584d04584d04685d14584d04685d14685d14584d0 -4685d14584d04584d04585d04584d04585d04585d04685d14585d04685d14685d1 -4685d14685d14685d14685d14584d04685d14584d04584d04685d14584d04685d1 -4685d14685d14685d14685d14685d14584d04685d14584d04584d04685d14584d0 -4685d14685d14685d14685d14685d14685d14685d14685d14685d14685d14685d1 -4685d14685d14685d14584d04685d14584d04584d04685d14584d04685d14685d1 -4584d04685d14584d04584d04685d14584d04684d04684cd4683c94782c84881c5 -4b82c24d81bf4c7fbc4b7fbb4d7fba507fb6547eaf567ba65a7aa15e7a9b627a97 -657a94677c95697e976a809a6d839d6f85a07086a17087a27188a4738aa6748ca8 -768eab7891ae7b94b17d96b57f99b7819bba829dbc849ebe849fbf85a0c186a1c1 -86a2c287a2c388a4c589a5c68aa6c78ba7c98ca8ca8da9cc8daacc8eabcd8fabce -8faccf90add090aed190aed191aed191aed191aed191aed191aed192afd292afd2 -92afd292afd292afd292afd292afd292afd292afd292b0d392b0d392b0d392b0d3 -92b0d392b0d392b0d392b0d393b0d494b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb -95b3d795b3d795b3d795b3d795b3d794b2d692b0d38daacc88a3c485a0c0849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf849fbf -849fbf849fbf85a0c189a4c68faccf93b1d595b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d792b0d388a4c5 -5985b94681c74484ce4482cf4484d04483d04483d04484d04483d04484d04484d0 -4584d04484d04584d04584d04484d04584d04484d04484d04584d04484d04584d0 -4584d04484d04584d04484d04484d04483cf4484d04483cf4483cf4483d04483cf -4483d04483d04484d04483d04484d04484d04584d04484d04584d04584d04483d0 -4584d04483d04483d04484d04483d04484d04484d04483d04484d04483d04483d0 -4584d04483d04584d04584d04484d04584d04484d04484d04484d04484d04484d0 -4484d04483d04484cf4582cd4682cb4681c84681c54a82c44c82c04c80bd4b7fbc -4b7fbb4e80ba517fb5547dae577ba45b7aa05f7a9a627b96667b94687c966a7f99 -6c829c6e849f7086a17087a27188a4738aa6768daa7890ad7b94b17d96b5809ab9 -829cbc839dbd849fbf86a1c186a2c288a3c489a5c68ba7c88ca8ca8da9cc8eabcd -8faccf90add091aed191aed191aed192afd292afd292b0d392b0d392b0d393b0d4 -93b0d493b1d593b1d593b1d593b1d594b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d795b3d7 -94b2d693b0d492afd290aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed190aed190aed190aed190aed1 -90aed190aed190aed190aed190aed190aed190aed191aed192afd293b1d595b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d792b0d389a4c6698bb24b7fba4c7fbb4b7ebb4c7fbc4c7fbc -4d80be4c81bf4a82c14981c34681c54580c64580c7447fc74381c94381ca4380ca -4281cc4281cc4180ce4181ce4181ce4181ce4181ce4181ce4181ce4181ce4182ce -4181ce4182ce4182ce4282cf4182ce4282cf4282cf4182ce4282cf4182ce4182ce -4181ce4182ce4181ce4181ce4182ce4181ce4182ce4182ce4181ce4182ce4181ce -4181ce4282cf4181ce4282cf4282cf4181ce4382cd4381cb4381ca4481c94480c7 -457fc64580c54881c34b81c04c81be4c80bd4a7ebb4b7ebb4d7fba517fb7547fb0 -567ba75a7ba25d7a9d607a99637a95667b94687d966a809a6c829c6e849f6f86a1 -7188a37289a5748ba7768eab7a92b07d96b47f99b7829cbc839dbd85a0c086a1c1 -87a2c389a4c68ba7c88ca9cb8daacc8faccf90add091aed191aed192afd292afd2 -92b0d393b0d493b0d493b1d593b1d594b2d694b2d694b2d694b2d694b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d694b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d793b0d48ba7c97d96b4 -6f86a1687d96667a93647a94617996607a9a5e7b9c5b7a9f597aa2587ba5557ca9 -557eaf537fb2517fb55080b84e7fb94d7fba4b7fbb4a7ebb4a7ebb4b7fbc4c80bc -4c80bd4c80be4c81be4b81bf4c81c04c81c14b81c14a81c14981c24981c34880c2 -4880c34780c34780c34781c34781c34680c34680c44780c34880c34881c24981c2 -4981c24a81c14b81c04b81c04c80bf4c81be4c80be4c80bd4b7fbb4b7fbb4a7fbb -4b7fbb4d80bb4f7fb9517fb6527fb2557dad577ba6597ba25c7b9f5f7a9a617997 -637a94667b94687d966a7f996c819b6d839e6f86a17087a27188a4738aa6748ca8 -778fac7a93b17d96b57f99b8829cbc849ebe85a0c186a2c288a4c58aa6c78ca8ca -8daacc8fabce90add091aed192afd292afd292b0d393b0d493b0d493b1d594b2d6 -94b2d694b2d694b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d793b1d58faccf86a1c17c95b3768eab748ba7738aa67188a47188a3 -7087a27086a16f86a16f85a06d839e6c829c6b819b6a809a697f98687d96687c96 -677c95667a93667a94637a95627a95617a97607a995e7a9a5d799b5e7b9d5d7b9e -5b7aa05b7aa15a7aa1597aa2597ba2587ba3587aa3597ba4587ba5587ba5587aa4 -587aa4587aa3587ba3597ba25a7ba25b7aa15b7aa05d7b9e5d7a9d5d7a9c5f7a9b -607a99627a97627a95647a94667a93677c95687c96697e976a7f996b819b6d839d -6e849f6f86a17087a27188a37188a4738aa6748ca8778fac7992af7c95b37e98b6 -819bba839dbd849fbf85a0c187a2c388a4c58aa6c78ca8ca8daacc8faccf90aed1 -91aed192afd292b0d392b0d393b0d493b1d593b1d594b2d694b2d695b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d794b2d693b0d48fabce8ba7c8 -88a3c486a2c285a0c185a0c0849fbf849ebe829dbc819bbb7f99b87e98b67d96b5 -7b94b27a93b17891ae778fac768eab758da9748ba7738aa67289a57188a47188a4 -7188a37188a37188a37087a27087a27086a17086a17086a16f86a16f86a16f86a1 -6f86a16f85a06f85a06f85a06f85a06f85a06f86a16f86a16f86a17086a17086a1 -7086a17087a27087a27087a27188a37188a37188a47289a5738aa6748ba7758da9 -768eab7890ad7a92b07b94b27d96b57f99b7819bba829dbc849ebe85a0c086a1c1 -87a2c388a4c58aa6c78ba7c98da9cc8fabce90add090aed191aed192afd292b0d3 -92b0d393b0d493b1d594b2d694b2d694b2d695b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -6e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d794b2d693b1d592b0d392afd292afd291aed191aed190aed190add0 -8faccf8fabce8daacc8da9cc8ca8ca8ba7c98ba7c889a5c688a4c588a3c487a2c3 -86a2c286a1c185a0c185a0c185a0c085a0c0849fbf849ebe839dbd839dbd829dbc -829cbc819bbb819bbb819bba819bba819bba809ab9809ab9809ab9809ab9809ab9 -819bba819bba819bbb819bbb829cbc829cbc829dbc839dbd849ebe849fbf85a0c0 -85a0c085a0c186a1c186a2c287a2c388a3c489a4c68aa6c78ba7c98ca9cb8daacc -8eabcd8faccf90aed191aed192afd292afd292b0d392b0d393b0d493b1d593b1d5 -94b2d694b2d694b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d694b2d694b2d694b2d694b2d693b1d593b1d593b1d593b0d493b0d4 -93b0d492b0d392b0d392afd292afd292afd292afd291aed191aed191aed191aed1 -90aed190aed190add090add08faccf8faccf8fabce8fabce8eabcd8eabcd8eabcd -8eabcd8eabcd8eabcd8eabcd8eabcd8eabcd8eabcd8fabce8fabce8fabce8faccf -8faccf90add090aed190aed191aed191aed191aed192afd292afd292afd292afd2 -92b0d392b0d393b0d493b0d493b1d593b1d594b2d694b2d694b2d694b2d695b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c9 -97aec9f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec -7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d794b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -93b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d593b1d5 -93b1d593b1d593b1d593b1d594b2d694b2d694b2d694b2d694b2d694b2d694b2d6 -94b2d694b2d695b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9 -f0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbececec7f9fc5 -769dcb95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d76e98c997aec9f0f0f0fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbececec7f9fc5769dcb95b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d7 -95b3d795b3d795b3d795b3d795b3d795b3d795b3d795b3d76e98c997aec9f0f0f0 -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbececec8ba6c74a7ebb -638fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3628fc3 -628fc3638fc34a7ebba6b8cdf0f0f0fcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeeed1d2d49dabbb95a3b392a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b092a0b0 -92a0b092a0b092a0b092a0b092a0b093a1b195a3b3a2afbed9d9d9f2f2f2fcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf3f3f3e0e0e0ccccccc3c3c3 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 -c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c2c2c2 -c4c4c4cfcfcfe4e4e4f6f6f6fdfdfdffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefafafaf1f1f1e7e7e7e3e3e3e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e2e2e2e2e2e2e1e1e1d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4 -d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4dadadae2e2e2e9e9e9eeeeeeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefcfcfcf9f9f9f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8ebebebffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefef2f5f97097c56e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36d93c1618bbd6b93c26e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36690c2ebf0f6fdfdfdfefefefefefefefefefefefefefefefdfdfdc7d6e8 -b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2 -b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b6c9e1b6c9e1b6c9e1b7cae2b7cae2 -b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2 -b7cae2b7cae2b7cae2b7cae2b7cae2b6c9e1b6c9e1b6c9e1b7cae2b7cae2b7cae2 -b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2 -b7cae2b7cae2b7cae2b7cae2b6c9e1b6c9e1b6c9e1b6c9e1b7cae2b7cae2b7cae2 -b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2b7cae2 -b7cae2b7cae2b8cbe3f3f5f9fdfdfdfefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefe -fefefefefefefefefefefefefdfdfde7edf45e8bc06e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c3 -6e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c36e95c382a4cb -fafbfcfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefef1f1f1ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcc9d7e65b85b5727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e717e8c -6e7b894a7eba717f8f727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e6083adb4c8dffcfcfcffffffffffff -fffffffffffffdfdfdccdae94a7ebb6383a96383a96383a96383a96383a96383a9 -6383a96383a96383a96383a96383a96383a96383a96383a96383a96282a86181a7 -5580b45281b85e80a96282a86383a96383a96383a96383a96383a96383a96383a9 -6383a96383a96383a96383a96383a96383a96383a96383a96383a96281a75b80ad -5281b85880b16281a76282a86383a96383a96383a96383a96383a96383a96383a9 -6383a96383a96383a96383a96383a96383a96383a96383a96282a86181a75480b7 -5281b86080a66282a86383a96383a96383a96383a96383a96383a96383a96383a9 -6383a96383a96383a96383a96383a96383a96383a94f7fb87da0c9fcfcfcfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefedce5f04d80bb628dbf628dbf -628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf -628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf -628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf -628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf -628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf628dbf -628dbf5283bce5ecf4fefefefffffffffffffffffffffffffefefefbfbfba4bcd9 -6180a3727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e727f8e -727f8e727f8e727f8e727f8e4b7fbbeff1f4fdfdfdffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -c0cedd5f86b47f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7676764b7eb97c7f827f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6485ababbfd6f7f7f7fefefefffffffffffffefefefafafabecedf5f84af7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7a7a7a567fb04f81bd7079847d7d7d7e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c687b924f81bd5d7ca17b7b7b7e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7979795080ba4f81bd787a7c7d7d7d7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6d7f947a9dc5f6f6f6fdfdfdffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fbfbfb9ab5d5637e9e767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a -767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a -767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a -767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a -767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a767f8a -767f8a767f8a767f8a767f8a767f8a767f8a6282a7aac0dbfbfbfbfefefeffffff -fffffffffffffdfdfdf6f6f69cb4d16580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80bae4e6e9 -fbfbfbfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdfdfdfdfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefbfbfbfbfbfbfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdf5f5f5b9c7d65e85b37f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c737373 -4b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa5b9d0f3f3f3fdfdfdffffffffffff -fefefef6f6f6b5c5d65e83ae7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7d7d7d767676547dae -4f81bd6b75807b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e79797963768d4f81bd -5a799e7777777d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7d7d7d7474745080ba4f81bd -7274777c7c7c7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947598c0efefeffcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf5f5f592adcd657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a5a2b8d3f6f6f6fdfdfdfffffffffffffffffffcfcfcf2f2f296aecb6580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badee0e3f9f9f9fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -fdfdfdd3d3d3c4c4c4ebebebf8f8f8f4f4f4f7f7f7fafafafafafafafafafafafa -fbfbfbfafafafafafaf9f9f9fbfbfbfcfcfcfafafafafafaefefefecececb5b5b5 -a9a9a9e1e1e1f9f9f9fbfbfbfafafafafafafafafafbfbfbfafafafafafaf9f9f9 -fbfbfbfafafafafafaffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d4 -5e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aa -a3b7cef1f1f1fcfcfcfffffffffffffdfdfdf4f4f4b1c1d25d82ad7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c737373547cad4f81bd68727d7a7a7a7e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7d7d7d78787860738a4f81bd58779c7575757d7d7d7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c7272725080b94f81bd6f71747b7b7b7e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6d7f947295bdebebebfbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcf0f0f0 -8ca7c7657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a59cb2cdf2f2f2fcfcfcffffffffffff -fffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcfcfcfcb5b5b58484849b9b9b9999998d8d8d -9c9c9cafafafa4a4a49b9b9ba2a2a2b0b0b0a8a8a8a3a3a39d9d9db3b3b3acacac -9d9d9da0a0a07f7f7fc1c1c17575755e5e5e999999a3a3a3a9a9a9a1a1a19f9f9f -a9a9a9abababa3a3a3a1a1a1999999acacac9f9f9f9f9f9fe6e6e6fdfdfdffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb9 -7c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfd -f3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c727272537bac4f81bd -67717c7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7777776073894f81bd58779d -7575757d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171715080b94f81bd6e7073 -7b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a5 -9ab0cbf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfc -bababa8181816060604a4a4a494949555555696969616161676767606060585858 -4e4e4e4949494848485656564949493838387f7f7f727272bebebe7272726c6c6c -7d7d7d5959596666664242424141416a6a6a4f4f4f4848486262626d6d6d585858 -494949505050d3d3d3fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b3 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cd -f1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7c7c7c727272537cac4f81bd68717d7979797e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7d7d7d7777776073894f81bd58779d7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c717171507fb94f81bd6d70727b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f94 -7295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5 -657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffffffffff -fcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcfafafacececea8a8a8a6a6a6a3a3a3a1a1a1b2b2b2 -b3b3b3b5b5b5bababaafafafb0b0b0a5a5a59a9a9a9e9e9ea8a8a8abababa8a8a8 -bababab8b8b8d0d0d0b1b1b1aeaeaeb2b2b2b3b3b3adadad9b9b9ba1a1a1bdbdbd -9292928e8e8ec4c4c4b0b0b0bababaafafafa1a1a1e7e7e7fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f82 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3 -b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c727272537cac4f81bd68717d -7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7777776073894f81bd58779c747474 -7d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171507fb94f81bd6d70727b7b7b -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afca -f0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefcfcfcfdfdfdfdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff0f0f0f2f2f2fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1 -fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7c7c7c727272537cac4f81bd68717d7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d -77777760738a4f81bd58779c7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -717171507fb94f81bd6d70727b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bd -eaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfc -efefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcffffffc8c8c8cccccc -f5f5f5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d1 -5d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c727272537bab4f81bd67717d797979 -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d77777760738a4f81bd58779c7474747d7d7d -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714f7fb84f81bd6e70737b7b7b7e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0 -fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefeffffffc9c9c9d2d2d2f6f6f6ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfc -fffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c -727272537bab4f81bd67717d7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d777777 -6073894f81bd58779d7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171 -4f7fb84f81bd6e70737b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaea -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef -93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefcfcfcfcfcfcfcfcfcfcfcfcfefefe -fffffffcfcfcfcfcfcfcfcfcfcfcfcfefefefffffffffffffdfdfdfcfcfcfcfcfc -fcfcfcfdfdfdfffffffdfdfdfcfcfcfcfcfcfcfcfcfefefecccccccececef3f3f3 -fcfcfcfcfcfcfcfcfcfcfcfcfffffffdfdfdfcfcfcfcfcfcfbfbfbfcfcfcffffff -fffffffffffffcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfffffffcfcfcfcfcfcfcfcfc -fbfbfbfcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c727272537bab4f81bd67717d7979797e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7d7d7d7777776073894f81bd58779d7474747d7d7d7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c7171714f7fb84f81bd6d70737b7b7b7e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfc -fffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80ba -dcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff2f2f2fffffffffffffffffffefefefefefefefefefefefe -fdfdfdfcfcfcfafafafffffffdfdfdfcfcfcfefefefefefefffffffefefefbfbfb -fefefefffffffffffffefefefafafafefefefefefefefefefcfcfcf9f9f9dbdbdb -bebebebfbfbfbebebec4c4c4e2e2e2e9e9e9c3c3c3c1c1c1bebebec3c3c3e3e3e3 -fcfcfcedededcbcbcbbdbdbdbebebebfbfbfd4d4d4e9e9e9d4d4d4bfbfbfc0c0c0 -bdbdbdd3d3d3bdbdbdd1d1d1d4d4d4c1c1c1c0c0c0bebebebcbcbce3e3e3d7d7d7 -c0c0c0bdbdbdbcbcbcc1c1c1eaeaeafefefeefefefc5c5c5c0c0c0c1c1c1bebebe -c4c4c4ecececccccccbebebebdbdbdbcbcbcc7c7c7f8f8f8fcfcfcfcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffd4d4ffd9d9ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffff -fffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c727272 -547cac4f81bd67717d7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d777777607389 -4f81bd58779d7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171507fb8 -4f81bd6d70737b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc8 -6580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -fffffff2f2f2e0e0e0f8f8f8ebebebdfdfdff2f2f2f8f8f8eaeaeae8e8e8fbfbfb -efefefdadadaecececfbfbfbfefefefffffffffffffffffffcfcfcf8f8f8f7f7f7 -f8f8f8fbfbfbfefefee4e4e48686866c6c6c8c8c8c858585727272888888acacac -5b5b5b8d8d8d8989896969699e9e9ef7f7f7bbbbbb7474747f7f7f8e8e8e7b7b7b -848484a0a0a07e7e7e8484848e8e8e7b7b7b6e6e6eaaaaaad4d4d47e7e7e7b7b7b -8a8a8a8c8c8c5e5e5e9999996b6b6b7878788a8a8a8e8e8e535353afafaff7f7f7 -c5c5c56767678787878c8c8c8e8e8e525252b0b0b05a5a5a8686868b8b8b8d8d8d -555555dfdfdffbfbfbfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffb9b9ff9494ffcacaffffffff -ffffffffffffffffffffffffb9b9ff9595ffdcdcffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd9d9ff0000ff -0000fff6f6ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffbfbfff9696ffd3d3ffffffffffffffd9d9ffa0a0ffa0a0ffa0a0ffacacff -dbdbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4 -b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7c7c7c727272547cac4f81bd67717d7979797e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7d7d7d7777776072884f81bd57779d7474747d7d7d7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c717171507fb84f81bd6d70737b7b7b7e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -898989b9b9b98080807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffff -fffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1 -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2fffffffffffffdfdfdd1d1d1757575cdcdcd9595957d7d7d -a5a5a5e4e4e4888888959595d6d6d6bebebe4a4a4a909090e1e1e1f7f7f7fafafa -f8f8f8fafafaf8f8f8c6c6c6656565969696d7d7d7f1f1f1e0e0e0979797c0c0c0 -fffffff6f6f6c1c1c1888888b4b4b4999999ffffffffffffb0b0b0a6a6a6f5f5f5 -bebebeacacaceeeeeeffffffe1e1e1b1b1b1a0a0a0a2a2a2e9e9e9ffffffe5e5e5 -8b8b8ba9a9a9cfcfcf8a8a8ad7d7d7fefefeffffffaeaeaea5a5a5777777d5d5d5 -ffffffffffff8d8d8dacacacf6f6f6c2c2c2a3a3a3f4f4f4ffffffffffff7f7f7f -adadad818181efefefffffffffffff7e7e7ee0e0e0fafafafcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff5b5bff0000ff2e2efffffffffffffffffffffffffff7f7ff0c0cff0000ff -b6b6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffd8d8ff0000ff0000fff5f5ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff3d3dff0000ff7070ffffffffffffff -4646ff0000ff0000ff0000ff0000ff0000ff4949ffececffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171 -4b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffffffffff -fdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c727272537bab -4f81bd67717d7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7777776072884f81bd -57779d7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171507fb74f81bd -6d70747b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8686869090907f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fbababae8e8e88484848f8f8f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f8080809191918080807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2fffffffffffffefefe -dddddd777777afafaf696969aeaeae767676c5c5c5797979dcdcdc5656567d7d7d -4e4e4e5353537a7a7ac6c6c6abababa2a2a2a7a7a7a4a4a46f6f6f080808040404 -1e1e1e5c5c5ca5a5a5949494b7b7b7fffffff4f4f4b8b8b8868686b0b0b0969696 -fffffff8f8f8a8a8a8a8a8a8f7f7f7bebebea7a7a7e9e9e9fefefedfdfdfb0b0b0 -9f9f9f9c9c9ce6e6e6ffffffdedede868686acacacd3d3d3898989ccccccf9f9f9 -ffffffa5a5a5a2a2a2767676ccccccfbfbfbffffff8a8a8ab2b2b2f7f7f7c0c0c0 -9f9f9ff3f3f3fcfcfcfcfcfc7d7d7dababab7a7a7aeeeeeefefefeffffff787878 -ddddddfdfdfdfafafaffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffaeaeff0000ff0000ffddddffffffff -ffffffffffffb4b4ff0000ff1010fff9f9ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffd8d8ff0000ff0000ff -f5f5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -3d3dff0000ff7070ffffffffffffff3d3dff0000ff4343ff9494ff6e6eff0303ff -0000ff5c5cffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d4 -5e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aa -a2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7c7c7c727272537bab4f81bd67717d7979797e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7d7d7d7777776072884f81bd58779e7474747d7d7d7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c717171507fb74f81bd6d70747b7b7b7e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee -8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -dcdcdcffffffa8a8a87f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe9e9e9 -bababaa1a1a1ffffff9494947f7f7f7f7f7f7f7f7f7f7f7fadadadfafafa848484 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffff -fffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2fffffffffffffdfdfdd2d2d2676767b3b3b3b0b0b0797979a7a7a7 -e4e4e48a8a8aa1a1a16e6e6e8e8e8e4a4a4a585858767676dfdfdfe6e6e6e0e0e0 -e1e1e1dddddd9696961616162b2b2b6b6b6bb5b5b5d5d5d5949494b9b9b9fcfcfc -f0f0f0b7b7b7858585afafaf949494fcfcfcf8f8f8aaaaaaa8a8a8f7f7f7bebebe -a8a8a8e8e8e8fcfcfcddddddafafaf9f9f9f9c9c9ce4e4e4fcfcfce0e0e0878787 -aaaaaad0d0d0898989cdcdcdf8f8f8fdfdfda7a7a7a3a3a3757575ccccccfafafa -fcfcfc8a8a8ab0b0b0f7f7f7c5c5c5a0a0a0f0f0f0fcfcfcf9f9f97f7f7fababab -7e7e7eebebebfcfcfcfcfcfc787878dcdcdcfefefefefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f7f7ff0d0dff0000ff8c8cffffffffffffffffffff6464ff0000ff6060ffffffff -ffffffffffffb8b8ff7a7aff6c6cff9999fff6f6ffffffffffffffdadaff8585ff -ceceffe4e4ff8a8aff6c6cffaaaafffffffffffffffffffffffffff7f7ff9898ff -6a6aff9393ffd0d0ff0000ff0000fff5f5fffffffffffffff1f1ff9b9bff6f6fff -7373ff9e9efff8f8ffffffffffffffdadaff8585ffceceffc1c1ff6464ffb2b2ff -ffffffffffffffffffffffffffffff3d3dff0000ff7070ffffffffffffff3d3dff -0000ff7373ffffffffffffff6c6cff0000ff1010ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb9 -7c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfd -f3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c727272537bab4f81bd -67717d7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7777776073884f81bd58779e -7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171507fb74f81bd6d7074 -7b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f8c8c8cfdfdfde4e4e4d6d6d67f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f979797fdfdfd8c8c8c818181f4f4f4c0c0c07f7f7f7f7f7f -7f7f7f7f7f7fd7d7d7d4d4d47f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a5 -99afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2fffffffffffffffffff8f8f8 -edededf6f6f6fdfdfde8e8e8f7f7f7fdfdfdf3f3f3eeeeeef1f1f1eeeeeeececec -e6e6e6efefeffbfbfbfffffffffffffffffffdfdfdd1d1d1a1a1a1e0e0e0ffffff -ffffffe3e3e38a8a8a909090c6c6c6bababa919191848484b0b0b0777777c5c5c5 -bdbdbd868686a3a3a3f8f8f8bbbbbb8c8c8cb3b3b3c7c7c7ababab9999999f9f9f -8c8c8cb4b4b4c4c4c4ababab787878aaaaaad5d5d5848484a3a3a3c0c0c0c8c8c8 -8282829b9b9b6d6d6d9f9f9fc5c5c5c7c7c76c6c6cb0b0b0f7f7f7c0c0c07d7d7d -bcbcbcc1c1c1c4c4c4666666aeaeae6b6b6bb5b5b5c5c5c5c4c4c4636363dcdcdc -f9f9f9fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff5a5aff0000ff3b3bffffffffffffff -fdfdff1717ff0000ffb7b7ffffffffffffff6161ff0000ff0101ff0303ff0000ff -2828ffeeeeffffffff9b9bff0000ff4848ff1515ff0000ff0000ff0000ff8383ff -fffffffffffff9f9ff3939ff0000ff0000ff0000ff1d1dff0000ff0000fff5f5ff -ffffffcfcfff1e1eff0000ff0000ff0000ff0000ff2929ffe8e8ffffffff9b9bff -0000ff4343ff0404ff0000ff5c5cffffffffffffffffffffffffffffffff3d3dff -0000ff7070ffffffffffffff3d3dff0000ff7373ffffffffffffff8f8fff0000ff -0d0dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b3 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cd -f1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7c7c7c727272537baa4f81bd67717e7979797e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7d7d7d7777776073884f81bd58779e7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c717171517fb84f81bd6d71747b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f94 -7295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5 -657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fb9b9b9e3e3e3 -a8a8a8fbfbfb8888887f7f7f7f7f7f7f7f7f7f7f7f7f7f7fc6c6c6dcdcdc7f7f7f -7f7f7fc9c9c9ebebeb7f7f7f7f7f7f7f7f7f868686fbfbfba7a7a77f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffffffffff -fcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f2f2f2fffffffffffffffffffefefefafafafafafafbfbfbfcfcfcfafafafbfbfb -fcfcfcfcfcfcfcfcfcfefefefefefefefefefcfcfcfcfcfcffffffffffffffffff -f9f9f9fbfbfbfffffffcfcfcf9f9f9ffffffefefefb0b0b06e6e6e535353505050 -7c7c7cbbbbbbd0d0d07676765656565f5f5f7c7c7cc0c0c0fafafad3d3d3909090 -636363555555676767a1a1a1cececea1a1a15b5b5b5050506b6b6b8e8e8ea7a7a7 -c0c0c0a5a5a5747474565656626262707070bfbfbfa4a4a4797979515151565656 -737373d2d2d2fbfbfbe1e1e18484846363634e4e4e676767808080d7d7d78c8c8c -6c6c6c4d4d4d676767868686ebebebfcfcfcfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b0b0ff0000ff0202ffe8e8ffffffffc5c5ff0000ff1212fffafaffffffffb1b1ff -0000ff2525ffe6e6ffe2e2ff3d3dff0000ff7979ffffffff9b9bff0000ff0000ff -3636ffa2a2ff4545ff0000ff1212ffffffffffffff9d9dff0000ff0505ff9494ff -9999ff1313ff0000ff0000fff4f4fffefeff3434ff0000ff4949ffcfcfffbabaff -1b1bff0000ff6868ffffffff9b9bff0000ff0000ff2323ff8585ffa7a7ffffffff -ffffffffffffffffffffffff3d3dff0000ff7070ffffffffffffff3d3dff0000ff -7373fffffffff7f7ff3b3bff0000ff3c3cffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f82 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3 -b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373537baa4f81bd67717e -7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7777776072884f81bd57779d747474 -7d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171517fb84f81bd6d71747b7b7b -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7fe7e7e7b7b7b7838383f7f7f7b2b2b27f7f7f7f7f7f7f7f7f -7f7f7f808080f3f3f3aeaeae7f7f7f7f7f7f9c9c9cffffff9797977f7f7f7f7f7f -acacacf6f6f68282827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afca -f0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff2f2f2fffffffffffffffffffcfcfcfbfbfb -fafafafbfbfbfafafafefefef7f7f7f7f7f7f8f8f8f9f9f9fafafaf8f8f8fbfbfb -fafafafefefefffffffffffffffffffcfcfcfafafafafafafcfcfcfdfdfdfbfbfb -fafafaffffffecececa7a7a7a1a1a1f0f0f0ffffffffffffebebeb9d9d9dbfbfbf -f7f7f7fdfdfdfbfbfbfcfcfcffffffcfcfcfa5a5a5d5d5d5ffffffffffffffffff -b2b2b2959595e5e5e59999993131312d2d2dc9c9c9e7e7e79d9d9db8b8b8f2f2f2 -fffffffffffff3f3f3989898a4a4a4f5f5f5fefefefafafaffffffffffffc5c5c5 -8e8e8ed1d1d1fbfbfbfcfcfcffffffe3e3e38b8b8bd8d8d8fdfdfdfefefefcfcfc -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff8f8ff0e0eff0000ff9a9affffffff7575ff -0000ff6363ffffffffffffff5959ff0000ff7a7affebebffebebff8a8aff0000ff -3f3fffffffff9b9bff0000ff1b1bfff3f3ffffffffcdcdff0000ff0000fff1f1ff -ffffff5353ff0000ff6161ffffffffffffffbdbdff0000ff0000fff4f4ffd4d4ff -0000ff0000ffe3e3ffffffffffffff9292ff0000ff1f1fffffffff9b9bff0000ff -0e0effe2e2ffffffffffffffffffffffffffffffffffffffffffff3d3dff0000ff -7070ffffffffffffff3d3dff0000ff1f1fff4141ff1717ff0000ff0202ffc4c4ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1 -fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7c7c7c737373537baa4f81bd66717e7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d -7777776072884f81bd57779d7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -717171517fb84f81bd6d70747b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bd -eaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f959595fdfdfd8c8c8c7f7f7f -cfcfcfe1e1e17f7f7f7f7f7f7f7f7f7f7f7fa3a3a3f9f9f98585857f7f7f7f7f7f -7f7f7feeeeeec3c3c37f7f7f7f7f7fd7d7d7cdcdcd7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfc -efefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2 -fffffffffffffffffffffffffbfbfbfbfbfbfffffffbfbfbfefefefefefefcfcfc -fcfcfcfefefefefefefcfcfcfffffffffffffefefefffffffffffffffffffefefe -fefefefafafafbfbfbfefefefdfdfdfbfbfbfcfcfce9e9e9a3a3a39a9a9ae5e5e5 -fdfdfdfdfdfde6e6e6949494b7b7b7f3f3f3fdfdfdfcfcfcfbfbfbfbfbfbc7c7c7 -999999cdcdcdfdfdfdfdfdfdf8f8f8ababab909090e0e0e0a2a2a22121212b2b2b -ccccccdedede919191aeaeaeeeeeeefcfcfcfdfdfdeeeeee9292929c9c9cf2f2f2 -fdfdfdfdfdfdfcfcfcfdfdfdc0c0c0888888c6c6c6f7f7f7fdfdfdfdfdfdd9d9d9 -858585d1d1d1fbfbfbfdfdfdfcfcfcfafafafefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -5c5cff0000ff4949ffffffff2626ff0000ffb9b9ffffffffffffff3434ff0000ff -0000ff0000ff0000ff0000ff0000ff2f2fffffffff9b9bff0000ff2d2dffffffff -ffffffe3e3ff0000ff0000ffe7e7ffffffff3434ff0000ff8f8fffffffffffffff -d8d8ff0000ff0000fff5f5ffb0b0ff0000ff0e0effffffffffffffffffffbabaff -0000ff0303fffdfdff9b9bff0000ff2d2dffffffffffffffffffffffffffffffff -ffffffffffffffffff3d3dff0000ff7070ffffffffffffff3d3dff0000ff0000ff -0000ff1414ff4747ffc7c7ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d1 -5d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373547baa4f81bd66717e797979 -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7777776173894f81bd57779d7474747d7d7d -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171507fb74f81bd6d70747b7b7b7e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7fc4c4c4dedede7f7f7f7f7f7fa2a2a2fefefe8f8f8f7f7f7f7f7f7f7f7f7f -d2d2d2d0d0d07f7f7f7f7f7f7f7f7f7f7f7fc2c2c2eeeeee7f7f7f858585fbfbfb -a0a0a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0 -fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbe6e6e6cbcbcbcbcbcb -cdcdcdc4c4c4989898959595c0c0c0cbcbcbcbcbcbbfbfbf8f8f8fa4a4a4c8c8c8 -cccccccccccccbcbcbccccccaeaeae949494b2b2b2ccccccccccccc9c9c99d9d9d -8f8f8fbcbcbcababab3131314b4b4bb3b3b3bebebe8e8e8ea1a1a1c3c3c3cccccc -cbcbcbc1c1c18a8a8a919191c5c5c5cccccccccccccbcbcbcccccca9a9a9888888 -acacaccbcbcbcccccccececeb6b6b6868686b2b2b2cdcdcdcccccccbcbcbd4d4d4 -fafafafefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffb2b2ff0000ff0606ffc8c8ff0000ff1313ff -fbfbffffffffffffff3c3cff0000ff5d5dffa7a7ffa7a7ffa7a7ffa7a7ffd0d0ff -ffffff9b9bff0000ff2d2dffffffffffffffe3e3ff0000ff0000ffe7e7ffffffff -3939ff0000ff8484ffffffffffffffd8d8ff0000ff0000fff5f5ffb7b7ff0000ff -0606fffefeffffffffffffffafafff0000ff1414ffffffff9b9bff0000ff2d2dff -ffffffffffffffffffffffffffffffffffffffffffffffff3d3dff0000ff7070ff -ffffffffffff3d3dff0000ff6c6cfff6f6ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfc -fffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c -737373547baa4f81bd66717e7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d777777 -6173884f81bd57779e7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171 -507fb74f81bd6d70747b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaea -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f808080f1f1f1eeeeeedcdcdcdcdcdcdddddd -ffffffbdbdbd7f7f7f7f7f7f868686fafafaa2a2a27f7f7f7f7f7f7f7f7f7f7f7f -959595ffffff9a9a9aacacacf2f2f28080807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef -93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff5f5f5c2c2c2828282828282848484858585838383848484858585848484 -858585868686838383848484858585858585858585848484858585858585848484 -8585858585858484848888888787878686868484848686865b5b5b717171878787 -868686848484848484838383838383838383848484878787868686868686858585 -858585848484878787888888878787848484858585858585848484858585858585 -818181848484848484818181969696f8f8f8fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f8ff -0f0fff0000ff3232ff0000ff6565ffffffffffffffffffff6161ff0000ff5555ff -ffffffffffffffffffffffffffffffffffff9b9bff0000ff2d2dffffffffffffff -e3e3ff0000ff0000ffe7e7ffffffff5c5cff0000ff3737fffdfdffffffff7272ff -0000ff0000fff5f5ffdedeff0000ff0000ffb6b6ffffffffffffff5d5dff0000ff -4545ffffffff9b9bff0000ff2d2dffffffffffffffffffffffffffffffffffffff -ffffffffffff3d3dff0000ff7070ffffffffffffff3d3dff0000ff7373ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373537baa4f81bd67717e7979797e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7d7d7d7777776173884f81bd57779e7474747d7d7d7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c717171507eb64f81bd6d71757b7b7b7e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fa0a0a0 -fdfdfdaeaeaeabababababababababd8d8d8ebebeb7f7f7f7f7f7fafafaff1f1f1 -8080807f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe8e8e8c5c5c5d6d6d6c6c6c67f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfc -fffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f898989 -8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8686867f7f7f8787878d8d8d8c8c8c -8585857f7f7f7f7f7f7f7f7f7f7f7f8282828c8c8c8080807f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f8484848c8c8c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80ba -dcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff5f5f5c2c2c2858585868686868686 -868686888888878787878787888888878787898989898989868686858585858585 -858585858585858585878787898989888888858585868686858585858585858585 -8484848585858888888d8d8d8989898787878c8c8c898989858585858585868686 -868686878787888888858585858585858585858585838383848484878787848484 -858585858585868686888888898989878787868686858585818181969696f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff5d5dff0000ff0000ff0000ffbbbbffffffff -ffffffffffffd0d0ff0202ff0000ff4b4bff8080ff7070ff3232ff8d8dffffffff -9b9bff0000ff2d2dffffffffffffffe3e3ff0000ff0000ffe7e7ffffffffbbbbff -0000ff0000ff2d2dff3232ff0000ff0404ff0000fff4f4ffffffff5151ff0000ff -0d0dff5c5cff4343ff0000ff0000ffc5c5ffffffff9b9bff0000ff2d2dffffffff -ffffffffffffffffffffffffffffffffffffffffff3d3dff0000ff7070ffffffff -ffffff3d3dff0000ff7373ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffff -fffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373 -537baa4f81bd67717e7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d777777617388 -4f81bd58789f7474747d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171507eb6 -4f81bd6d71757b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7fcececededede7f7f7f7f7f7f7f7f7f7f7f7f9e9e9e -ffffff9999997f7f7fdededec4c4c47f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -bbbbbbf2f2f2fafafa9999997f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc8 -6580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7febebebffffffffffffffffffffffffffffffffffff -d1d1d17f7f7ff8f8f8ffffffffffffffffffe2e2e29494947f7f7f7f7f7fcccccc -ffffffdedede7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f868686f4f4f4ffffffa5a5a5 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefffffffdfdfdfefefefbfbfbffffffffffff -f5f5f5c2c2c2888888888888888888878787848484858585868686848484848484 -828282848484848484878787888888878787868686858585848484848484838383 -868686878787868686888888848484868686888888878787878787878787868686 -8686868787878686868787878a8a8a888888838383868686848484878787878787 -8a8a8a8b8b8b888888868686878787898989898989878787848484838383878787 -868686888888868686989898f5f5f5fbfbfbfefefefefefefefefefefefeffffff -fcfcfcfffffffefefefcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb9b9ff -0101ff0000ff1c1cfffcfcffffffffffffffffffffffffffafafff1f1fff0000ff -0000ff0000ff1b1bffbbbbffffffffa3a3ff0000ff3535ffffffffffffffe8e8ff -0303ff0303ffebebffffffffffffff8787ff0808ff0000ff1212ffa2a2ff3232ff -0303fff7f7ffffffffeeeeff5d5dff0404ff0000ff0000ff2323ffb8b8ffffffff -ffffffa3a3ff0000ff3535ffffffffffffffffffffffffffffffffffffffffffff -ffffff4646ff0000ff7a7affffffffffffff4646ff0000ff7c7cffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4 -b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7b7b7b727272537baa4f81bd66707d7878787d7d7d7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7c7c7c7676766072874f81bd57779e7373737c7c7c7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7d7d7d7b7b7b707070507eb64f81bd6c70747a7a7a7d7d7d7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e6c7e937295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f808080f7f7f7b1b1b1 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fefefefc4c4c48e8e8efefefe9696967f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8e8e8efcfcfceaeaea7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffff -fffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f818181838383 -838383e2e2e2c9c9c98383838383838080807f7f7ffdfdfdacacac7f7f7f909090 -e2e2e2ededed8181817f7f7fd2d2d2e5e5e5ffffff9797977f7f7f7f7f7f7f7f7f -7f7f7fb5b5b5e6e6e6fbfbfba9a9a97f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1 -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffafafae9e9e9 -e3e3e3e2e2e2e4e4e4eaeaeafbfbfbf5f5f5c3c3c3848484888888919191a9a9a9 -a9a9a9a8a8a8a3a3a38d8d8d8c8c8c9f9f9fa7a7a7a6a6a69e9e9e909090878787 -898989999999a8a8a8aaaaaaa8a8a8979797898989979797a6a6a6a5a5a5a8a8a8 -989898888888878787919191a4a4a4a7a7a7a8a8a8a4a4a48c8c8c919191a2a2a2 -a6a6a6a6a6a6a3a3a38a8a8a8686868787879f9f9fa6a6a6a5a5a5aaaaaa9c9c9c -8787879b9b9ba5a5a5a6a6a6a6a6a69c9c9c878787888888949494f3f3f3fcfcfc -f0f0f0e3e3e3e5e5e5e5e5e5e5e5e5f0f0f0fafafafbfbfbfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff9f9fff3f3fffdfdffffffffffffffffffff -ffffffffffffffffffffffffebebffd2d2ffe5e5ffffffffffffffffffffffffff -f6f6fffdfdfffffffffffffffffffff9f9fff9f9ffffffffffffffffffffffffff -f9f9ffdbdbfffdfdfffffffffbfbfff8f8fffffffffffffffffffffffffffafaff -d8d8ffededfffffffffffffffffffffffffffffffff6f6fffdfdffffffffffffff -fffffffffffffffffffffffffffffffffffffefefff5f5ffffffffffffffffffff -fefefff5f5ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171 -4b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffffffffff -fdfdfdf3f3f3aebecf5680b2647f9f647e9e647f9f647f9f637e9f637e9f647fa0 -647fa0637e9f637fa0627e9f627ea0627ea0637fa0637fa0607b9c5872904e7aaf -4f81bd5371955d799a617e9f617ea1617ea1627fa2617ea2617ea2617fa2617fa2 -617ea2617ea2617fa3617fa3607ea3617fa3617fa35e7ca15a76994f739c4f81bd -4e77a95874965e7da15f7ea45f7ea45f7fa55f7fa55f7ea55f7ea55f7fa55e7ea5 -5e7ea55f7fa65f7fa65e7ea65e7ea65e7fa65d7da55b7ba25371944f7fb84f81bd -506f955a7ba15c7ea65d7fa75d7fa85d7fa85c7fa75c7fa75d7fa85d7fa85c7fa8 -5c7fa95c7fa95c7fa85c7fa85c7fa95c7fa95780b06c91bae9e9e9fbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f8282827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f818181 -818181bbbbbbe7e7e77f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -8282828080807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe1e1e1c7c7c77f7f7f7f7f7f7f7f7f -7f7f7ffdfdfdacacac7f7f7f7f7f7fa4a4a4ffffff9393937f7f7fd2d2d2d1d1d1 -dfdfdfcacaca7f7f7f7f7f7f7f7f7f7f7f7feaeaeab2b2b2fafafaa9a9a97f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefee1e1e15454546a6a6a6e6e6e6b6b6b737373e7e7e7f5f5f5 -c2c2c2848484888888acacacf7f7f7ffffffffffffe9e9e99f9f9f9a9a9aededed -ffffffffffffdedede9f9f9f828282909090cdcdcdfbfbfbfefefefafafac5c5c5 -939393c3c3c3fdfdfdffffffffffffbebebe8c8c8c838383adadadedededfcfcfc -fafafae8e8e89d9d9dabababeeeeeeffffffffffffe8e8e89393938585858a8a8a -dededefcfcfcfcfcfcffffffd5d5d58b8b8bc9c9c9fafafaffffffffffffd2d2d2 -898989888888999999f3f3f3ffffff9090905757576b6b6b6c6c6c575757848484 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d4 -5e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aa -a2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf1f1f1abbacb507fb74f81bd4f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd -4f81bd4f81bd4d7eb94774ab4b7bb44f81bd4672a84b7ab44e7fbb4f81bd4f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd -4f81bd4e7fba4a79b14674a94f81bd4978b14876ad4d7eba4f81bd4f81bd4f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd -4e80bc4d7db84672a84e7fb94f81bd4571a74c7cb74e80bc4f81bd4f81bd4f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd -4f81bd688bb5e7e7e7fbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee -8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe9e9e9b8b8b87f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffff -fffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -e1e1e1c7c7c77f7f7f7f7f7f7f7f7f7f7f7ffdfdfdacacac7f7f7f7f7f7fa4a4a4 -ffffff8c8c8c7f7f7fd2d2d2d1d1d1adadadf7f7f78484847f7f7f7f7f7fa0a0a0 -f8f8f8858585fafafaa9a9a97f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfddddddd818181ffffff -ffffffefefef8e8e8ecfcfcfe3e3e3bababa8686868a8a8aa9a9a9f8f8f8ffffff -fcfcfce9e9e9a2a2a29e9e9eedededfcfcfcfdfdfddddddd9f9f9f858585949494 -d1d1d1fcfcfcfcfcfcfcfcfcc6c6c6929292c4c4c4fdfdfdfefefeffffffbdbdbd -8b8b8b808080a7a7a7edededfefefefefefeececec9d9d9dafafafeeeeeeffffff -ffffffececec949494868686888888dfdfdffdfdfdfefefefefefedcdcdc8b8b8b -c9c9c9f9f9f9ffffffffffffd5d5d58a8a8a848484949494e1e1e1efefef7b7b7b -b2b2b2fbfbfbffffffc1c1c1747474fffffffafafafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb9 -7c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfd -f0f0f0a5b4c44f76a35b728e59718d59708c59708c59708b59708b586f8a586f8a -59708b596f8a596f8a5a708a5a708a596f8a596f8a576c8650647c4d78ab4f81bd -4d6685546881586d865a6f885a6f88596e875a6f875a6f875a6e875a6e87596e86 -596e865a6e865a6e865a6e85596d85596d85586c8354677d4c698a4f81bd4d72a0 -526479586b815a6d835a6d835b6d835b6d835a6d825a6d825b6d835b6d825b6d82 -5a6c815a6c815b6d815b6d815b6c81596b7f57697c5160714f7eb64f81bd4f6075 -59687b5b6b7f5b6b7f5b6b7e5b6b7e5c6b7f5c6b7f5b6b7e5b6b7e5b6a7d5c6b7d -5c6b7d5b6a7d5b6a7d5c6b7d5d6c7e57708e6788ade4e4e4fafafaffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -9292928282827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a5 -99afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe1e1e1c7c7c77f7f7f7f7f7f7f7f7f7f7f7f -fdfdfdacacac7f7f7f909090e4e4e4e0e0e07f7f7f7f7f7fd2d2d2d1d1d1838383 -f7f7f7b1b1b17f7f7f7f7f7fd6d6d6cacaca7f7f7ffafafaa9a9a97f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfddddddd818181fbfbfbfefefeeeeeee7575758282828f8f8f8b8b8b -8888888a8a8aa8a8a8f3f3f3fafafae7e7e7c5c5c59292928e8e8eccccccefefef -fefefedededea3a3a3838383949494cfcfcff9f9f9f2f2f2ddddddaeaeae858585 -a7a7a7e7e7e7fbfbfbfefefec0c0c08f8f8f828282adadadeeeeeefcfcfce6e6e6 -cdcdcd8f8f8f9d9d9dcbcbcbf3f3f3fefefee8e8e8929292848484898989dfdfdf -fdfdfdf7f7f7dfdfdfbebebe7f7f7fafafafd9d9d9fafafaffffffcfcfcf888888 -8686868686868e8e8e949494585858b5b5b5fbfbfbffffffc1c1c1757575ffffff -fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b3 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cd -f1f1f1fcfcfcfffffffffffffdfdfdf0f0f0a4b3c34f6f94646464616161616161 -616161616161616161616161616161616161616161616161616161616161616161 -6161615f5f5f5757574e75a34f81bd525d6b5c5c5c606060616161616161616161 -616161616161616161616161616161616161616161616161616161616161616161 -5f5f5f5b5b5b5062764f81bd4f6f975959595f5f5f616161616161626262626262 -626262626262626262626262626262626262626262626262626262626262616161 -5f5f5f5757574e7cb44f81bd55595d5e5e5e616161626262626262626262626262 -6262626262626262626363636363636363636363636363636363636464645b6a7c -6989aee4e4e4fafafaffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5 -657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffffffffff -fcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe1e1e1 -c7c7c77f7f7f7f7f7f7f7f7f7f7f7ffdfdfdfafafaf9f9f9fdfdfdd8d8d88c8c8c -7f7f7f7f7f7fd2d2d2d1d1d17f7f7fcacacae4e4e47f7f7f8d8d8dfdfdfd969696 -7f7f7ffafafaa9a9a97f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfddbdbdb7f7f7ffefefefefefe -eeeeee7777777f7f7f8e8e8e8a8a8a8585858a8a8aa9a9a9f7f7f7edededa4a4a4 -5656565656565454545d5d5db8b8b8fcfcfcdededea1a1a1828282949494d1d1d1 -fdfdfdcfcfcf797979515151535353565656a5a5a5efefeffdfdfdc2c2c28c8c8c -818181adadadedededfcfcfc9e9e9e5e5e5e5656565454545c5c5cc6c6c6f8f8f8 -ededed9494948686868a8a8ae0e0e0fcfcfcf0f0f07878785a5a5a535353575757 -696969e9e9e9fdfdfdd4d4d48989898989898787878c8c8c939393555555b4b4b4 -fbfbfbffffffc3c3c37c7c7cfffffff9f9f9fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f82 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf1f1f1 -aab9ca5678a0717171707070707070707070707070707070707070707070707070 -7070707070707070707070707070707070706d6d6d6565655178a64f81bd5c6775 -6a6a6a6f6f6f707070707070707070707070707070707070707070707070707070 -7070707070707070707070707171716f6f6f6a6a6a5a6b804f81bd53749b676767 -6e6e6e717171717171717171717171717171717171717171717171717171717171 -7171717171717171717171717070706e6e6e6464644f7db54f81bd6165696d6d6d -707070717171717171717171717171717171717171717171717171717171717171 -7171717171717272727272726475886d8fb5e7e7e7fbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afca -f0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7fe1e1e1c7c7c77f7f7f7f7f7f7f7f7f7f7f7ffdfdfd -b9b9b99090908282827f7f7f7f7f7f7f7f7f7f7f7fd2d2d2d1d1d17f7f7f989898 -ffffff979797c1c1c1e1e1e17f7f7f7f7f7ffafafaa9a9a97f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfddedede787878eaeaeae6e6e6dddddd888888ccccccddddddb4b4b4878787 -8a8a8aa2a2a2d3d3d3cccccc8e8e8e505050545454555555575757a2a2a2dadada -c2c2c2979797858585929292b9b9b9d7d7d7b4b4b46e6e6e4f4f4f535353515151 -949494d0d0d0d7d7d7adadad888888838383a2a2a2d0d0d0dbdbdb8d8d8d555555 -505050505050525252aeaeaed6d6d6c9c9c98f8f8f8686868b8b8bc7c7c7d8d8d8 -d1d1d16d6d6d5151515353535252525e5e5ec4c4c4d7d7d7b9b9b98a8a8a858585 -949494dcdcdce9e9e97a7a7aa1a1a1e8e8e8ecececaeaeae767676fffffffcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1 -fcfcfcfffffffffffffdfdfdf3f3f3aebecf5b7faa7b7b7b7b7b7b7b7b7b7b7b7b -7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -7878786f6f6f547aa94f81bd636f7c7575757a7a7a7b7b7b7b7b7b7b7b7b7b7b7b -7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a7a7a -7575756071864f81bd56779e7171717979797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7b7b797979 -6e6e6e507eb54f81bd6a6e737878787b7b7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6b7d917193bb -e9e9e9fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfc -efefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe1e1e1c7c7c7 -7f7f7f7f7f7f7f7f7f7f7f7ffdfdfdacacac7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7fd2d2d2d1d1d17f7f7f7f7f7fe6e6e6cdcdcdf3f3f3adadad7f7f7f7f7f7f -fafafaa9a9a97f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffe7e7e76b6b6b6e6e6e707070717171 -888888edededf6f6f6c6c6c6898989858585848484878787828282686868505050 -515151535353565656727272868686858585848484888888868686858585878787 -7a7a7a5f5f5f5151515353535252526c6c6c838383888888878787878787888888 -8585858585858888886c6c6c545454555555555555535353787878878787828282 -8888888787878787878686868787878484845e5e5e515151545454535353595959 -7a7a7a858585848484888888868686949494f5f5f5ffffffa5a5a56666666f6f6f -6f6f6f6464649b9b9bfefefefefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d1 -5c81ac7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b7b7b727272547aa94f81bd65717e787878 -7d7d7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7c7c7c7777776172874f81bd57779f7373737b7b7b -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7d7d7d7b7b7b707070507eb54f81bd6b6f747a7a7a7d7d7d -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0 -fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7fe1e1e1c7c7c77f7f7f7f7f7f7f7f7f7f7f7ffdfdfdacacac -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fd2d2d2d1d1d17f7f7f7f7f7fb4b4b4 -fffffff5f5f58383837f7f7f7f7f7ffafafaa9a9a97f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbf3f3f3f1f1f1f2f2f2f2f2f2f6f6f6fcfcfcf4f4f4c0c0c0838383888888 -919191acacaca9a9a97b7b7b4f4f4f515151545454585858878787adadada5a5a5 -9090908787878d8d8d9e9e9eaeaeae9696966464644f4f4f5151515050507e7e7e -a4a4a4aeaeae9a9a9a888888858585949494a4a4a4aeaeae797979575757535353 -535353545454909090acacaca4a4a48c8c8c8787878a8a8aa2a2a2aaaaaaa6a6a6 -6666665151514e4e4e4f4f4f5d5d5da3a3a3adadada2a2a28c8c8c838383999999 -f6f6f6fcfcfcf9f9f9f4f4f4f2f2f2f2f2f2f4f4f4f6f6f6fcfcfcfcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfc -fffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c -737373547aa94f81bd66727f7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d787878 -6173874f81bd57779f7474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171 -517fb64f81bd6c70757b7b7b7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaea -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef -93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe0e0e0c6c6c67f7f7f -7f7f7f7f7f7f7f7f7ffcfcfcaaaaaa7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -d1d1d1d0d0d07f7f7f7f7f7f878787f9f9f9c4c4c47f7f7f7f7f7f7f7f7ff9f9f9 -a8a8a87f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefee4e4e45f5f5f5b5b5b5a5a5a5a5a5a7e7e7e -edededf5f5f5c3c3c3868686898989abababfbfbfbf0f0f0a2a2a24e4e4e535353 -515151575757b8b8b8ffffffe0e0e0a1a1a1848484959595d1d1d1ffffffd1d1d1 -7777774e4e4e5252524f4f4f9f9f9fefefefffffffc0c0c08d8d8d848484acacac -eeeeeeffffff9c9c9c5a5a5a505050505050525252c6c6c6fafafaededed949494 -858585898989e3e3e3fdfdfdf7f7f7777777535353525252505050616161e6e6e6 -fefefed4d4d4888888848484999999f6f6f6fefefea1a1a15454545c5c5c5d5d5d -5050509d9d9dfefefefafafafcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373547ba94f81bd66717f7979797e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7d7d7d7878786173874f81bd57779f7474747c7c7c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c717171517eb54f81bd6c71767b7b7b7e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f858585e8e8e89393937f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfc -fffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f8181818080807f7f7f7f7f7f7f7f7f7f7f7f8282827f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8080808080807f7f7f7f7f7f7f7f7f818181 -7f7f7f7f7f7f7f7f7f7f7f7f8282827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80ba -dcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfddedede -707070d7d7d7d8d8d8cfcfcf838383dededef1f1f1c2c2c2878787878787a9a9a9 -f7f7f7f6f6f6c6c6c68a8a8a747474707070939393d1d1d1fdfdfddededea0a0a0 -838383939393d0d0d0ffffffe3e3e3acacac7f7f7f6e6e6e7e7e7ec5c5c5f6f6f6 -ffffffbebebe8d8d8d848484acacaceeeeeefcfcfcbfbfbf909090727272797979 -939393dededefdfdfdeaeaea939393858585898989dfdfdffdfdfdf6f6f6aaaaaa -8a8a8a7171718080809e9e9ef0f0f0ffffffd2d2d2878787848484979797f1f1f1 -fafafa8282829a9a9ad7d7d7dbdbdba5a5a5767676fffffffbfbfbfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffff -fffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373 -547ba94f81bd66717f7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d787878617286 -4f81bd5778a07474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171517eb5 -4f81bd6c71767a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f888888ffffff9a9a9a7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc8 -6580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfddddddd7d7d7dffffffffffffefefef7b7b7b8e8e8e -9e9e9e929292878787888888a9a9a9f7f7f7fefefeffffffebebeba2a2a29e9e9e -f0f0f0fefefefdfdfddfdfdfa0a0a0838383939393cfcfcffffffffffffffefefe -cdcdcd959595c4c4c4fafafaffffffffffffbebebe8d8d8d838383aaaaaaeeeeee -fefefefffffff0f0f0a3a3a3b5b5b5f0f0f0fbfbfbffffffeaeaea939393858585 -898989dfdfdffcfcfcfafafaffffffdedede8f8f8fcfcfcffbfbfbffffffffffff -d2d2d28888888585858989899f9f9f9f9f9f5d5d5db5b5b5fbfbfbffffffc3c3c3 -767676fffffff9f9f9fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4 -b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7c7c7c737373547ba94f81bd6672807979797e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7d7d7d7878786172864f81bd5778a07474747c7c7c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c717171517eb54f81bd6c70767a7a7a7e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -888888ffffff9a9a9a7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffff -fffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1 -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfddcdcdc7f7f7f -fcfcfcfbfbfbeeeeee7575758383838f8f8f8b8b8b8a8a8a8a8a8aaaaaaaf7f7f7 -fdfdfdfcfcfce8e8e89e9e9e9d9d9dedededfdfdfdfefefededede9f9f9f828282 -919191cececefdfdfdfefefefafafac3c3c3909090c2c2c2fbfbfbfbfbfbfdfdfd -bebebe8c8c8c838383adadadecececfcfcfcfdfdfdeaeaea999999aeaeaeeeeeee -fdfdfdfdfdfdececec959595858585898989dededefcfcfcfdfdfdfefefedadada -8f8f8fc8c8c8f9f9f9fdfdfdfefefed1d1d18787878686868787878c8c8c919191 -585858b4b4b4fbfbfbffffffc1c1c1777777fffffffcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171 -4b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffffffffff -fdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373547aa8 -4f81bd6672807979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7878786172864f81bd -5778a07474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171507eb44f81bd -6c70767a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f989898bcbcbc -c0c0c09898987f7f7f7f7f7f7f7f7fa1a1a1bebebebdbdbd9e9e9e7f7f7f7f7f7f -7f7f7f7f7f7f9d9d9dbfbfbfb2b2b28d8d8dffffff9a9a9a7f7f7f7f7f7f868686 -b1b1b1c2c2c2aeaeae8282827f7f7f7f7f7f7f7f7f888888b5b5b5c3c3c3aaaaaa -8080807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefedfdfdf7d7d7df5f5f5f4f4f4e5e5e58b8b8bcececee1e1e1 -b9b9b9858585898989a0a0a0d4d4d4d7d7d7d8d8d8cccccc9a9a9a959595cfcfcf -d8d8d8dadadac4c4c49898988383838e8e8eb9b9b9d8d8d8dadadad5d5d5b1b1b1 -8e8e8eaeaeaed8d8d8d8d8d8dbdbdbb1b1b1898989868686a2a2a2ccccccd8d8d8 -d7d7d7cbcbcb949494a4a4a4d0d0d0d8d8d8d9d9d9cbcbcb919191868686898989 -c1c1c1dadadad7d7d7dbdbdbbdbdbd8c8c8cb4b4b4d7d7d7d8d8d8dbdbdbb9b9b9 -878787858585959595ddddddebebeb7b7b7babababf0f0f0f5f5f5bababa797979 -fffffffcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d4 -5e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aa -a2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7c7c7c737373547aa84f81bd6672807979797e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7d7d7d7878786272864f81bd5778a07474747c7c7c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c717171507eb44f81bd6c70767a7a7a7e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee -8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7faeaeaefdfdfddfdfdfcdcdcdf7f7f79292927f7f7fccccccf5f5f5 -c9c9c9cfcfcffbfbfbbebebe7f7f7f7f7f7fb1b1b1fcfcfcd1d1d1ddddddebebeb -ffffff9a9a9a7f7f7f8b8b8bedededd9d9d9c2c2c2efefefe2e2e28080807f7f7f -8e8e8ef3f3f3f0f0f0c9c9c9ebebebbbbbbb7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffff -fffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefee3e3e35555555f5f5f -6262625d5d5d757575eaeaeaf5f5f5c1c1c1838383868686858585858585838383 -8484848787878888888a8a8a858585858585868686888888888888878787888888 -868686858585858585868686878787878787868686858585858585868686868686 -868686878787848484818181838383838383848484888888868686848484858585 -858585878787858585878787878787858585858585818181858585868686858585 -848484858585858585858585868686888888828282959595f8f8f8ffffff929292 -5151515f5f5f616161505050888888fffffffbfbfbfcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb9 -7c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfd -f3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373547aa74f81bd -6571807979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7878786272864f81bd5778a0 -7474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171517eb54f81bd6c7176 -7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f828282f5f5f5c2c2c27f7f7f7f7f7f -8d8d8d8484849f9f9ffefefe9696967f7f7f7f7f7fafafaffcfcfc8d8d8d818181 -f3f3f3bebebe7f7f7f7f7f7fb9b9b9ffffff9b9b9b7f7f7fc9c9c9dcdcdc7f7f7f -7f7f7f898989fefefea7a7a77f7f7fcececee9e9e98282827f7f7f818181909090 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a5 -99afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbdededed5d5d5d5d5d5d6d6d6e3e3e3f9f9f9f6f6f6c4c4c4 -878787878787878787888888888888878787858585878787868686868686878787 -878787878787878787878787898989888888868686878787878787888888878787 -878787878787878787868686878787858585878787858585868686878787868686 -8787878989898888888787878787878787878787878888888585858a8a8a898989 -878787858585868686898989868686878787888888878787868686858585878787 -828282969696f2f2f2fcfcfcebebebd7d7d7d6d6d6d6d6d6d6d6d6ecececf8f8f8 -fafafafcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b3 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cd -f1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7c7c7c737373547aa74f81bd6571807979797e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7d7d7d7878786272864f81bd5678a07474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c717171517eb54f81bd6c71767a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f94 -7295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5 -657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -959595ffffff9d9d9d7f7f7f7f7f7f7f7f7f7f7f7fc0c0c0e7e7e77f7f7f7f7f7f -7f7f7f848484ffffffa6a6a6919191ffffff9494947f7f7f7f7f7f888888ffffff -9a9a9a7f7f7fe8e8e8d6d6d6b2b2b2b2b2b2b2b2b2f3f3f3bdbdbd7f7f7feaeaea -c8c8c87f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffffffffff -fcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcfefefefdfdfdfdfdfd -fdfdfdfefefefbfbfbf2f2f2c3c3c38484848787878888888a8a8a8989898b8b8b -8a8a8a878787888888888888898989898989888888868686878787878787878787 -8686868888888a8a8a8787878787878787878888888888888a8a8a868686878787 -8686868686868a8a8a8c8c8c8b8b8b8a8a8a888888858585888888898989898989 -8787878787878787878787878888888989898c8c8c8a8a8a878787868686888888 -8989898787878686868b8b8b878787848484979797f3f3f3fcfcfcfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f82 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3 -b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373547aa74f81bd657180 -7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7878786272864f81bd5678a0747474 -7c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171517eb54f81bd6c71767a7a7a -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fa0a0a0ffffff8989897f7f7f7f7f7f7f7f7f -7f7f7fcacacadfdfdf7f7f7f7f7f7f7f7f7f7f7f7ffdfdfdacacac9b9b9bffffff -8d8d8d7f7f7f7f7f7f888888ffffff9a9a9a7f7f7ff2f2f2dededec5c5c5c5c5c5 -c5c5c5c5c5c59a9a9a7f7f7ff5f5f5b4b4b47f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afca -f0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffafafaddddddd6d6d6dadadad9d9d9e4e4e4f9f9f9f2f2f2c3c3c3858585 -888888979797c1c1c1c3c3c3c4c4c4bbbbbb969696929292b9b9b9c5c5c5c5c5c5 -b2b2b2949494868686909090acacacc2c2c2c1c1c1c2c2c2a9a9a98c8c8ca2a2a2 -c3c3c3c4c4c4c5c5c5a4a4a48b8b8b8484849a9a9abebebec4c4c4c4c4c4bcbcbc -9393939c9c9cbbbbbbc5c5c5c5c5c5bbbbbb8c8c8c868686888888b4b4b4c2c2c2 -c5c5c5c4c4c4b2b2b28a8a8aaaaaaac4c4c4c5c5c5c5c5c5aeaeae878787848484 -969696f4f4f4fefefeebebebdadadadadadadadadadadadaebebebfcfcfcfcfcfc -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1 -fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7c7c7c737373547aa84f81bd65717f7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d -7878786272864f81bd5678a07474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -717171517eb44f81bd6c71777a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bd -eaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f929292 -ffffff9a9a9a7f7f7f7f7f7f7f7f7f7f7f7fbcbcbcf1f1f18080807f7f7f7f7f7f -929292ffffff9999998e8e8effffff9e9e9e7f7f7f7f7f7f8f8f8fffffff9a9a9a -7f7f7fe2e2e2c6c6c67f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe7e7e7c5c5c5 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfc -efefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefee4e4e45b5b5b666666666666626262 -767676eaeaeaf5f5f5c1c1c18484848a8a8aa9a9a9f8f8f8ffffffffffffebebeb -a4a4a49c9c9cedededffffffffffffdfdfdfa1a1a1848484939393d1d1d1ffffff -fffffffcfcfcc9c9c9939393c3c3c3fefefeffffffffffffc1c1c18e8e8e828282 -afafafefefefffffffffffffefefef9d9d9daeaeaeefefefffffffffffffededed -9494948888888b8b8be1e1e1fdfdfdffffffffffffdcdcdc898989cbcbcbfafafa -ffffffffffffd9d9d9878787878787999999f4f4f4fefefe939393575757646464 -6565655656568c8c8cfffffffbfbfbfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d1 -5d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373547aa84f81bd65717f797979 -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7878786272864f81bd5779a17474747c7c7c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171517eb44f81bd6c71777a7a7a7e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe8e8e8dcdcdc898989878787c2c2c2979797 -919191fcfcfcbebebe838383898989dadadae3e3e37f7f7f7f7f7fe7e7e7dbdbdb -8787878f8f8fe4e4e4fefefe9b9b9b7f7f7fb5b5b5f5f5f59a9a9a7f7f7f808080 -9f9f9f8989897f7f7fbebebef5f5f59a9a9a828282a8a8a8b7b7b77f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0 -fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -dcdcdc7d7d7df5f5f5f2f2f2e7e7e7888888cccccce2e2e2b7b7b7848484898989 -aaaaaaf7f7f7fbfbfbfbfbfbe4e4e49f9f9f9b9b9be6e6e6fcfcfcfefefedcdcdc -9d9d9d828282929292cececefdfdfdfdfdfdf6f6f6c2c2c28f8f8fc0c0c0fafafa -ffffffffffffbdbdbd8d8d8d848484adadadeeeeeefcfcfcfafafae8e8e89d9d9d -adadade8e8e8fdfdfdffffffe8e8e8969696878787888888e0e0e0fafafafdfdfd -f9f9f9d8d8d88b8b8bc6c6c6f4f4f4f8f8f8ffffffd2d2d2848484888888959595 -dfdfdfeaeaea797979acacacf3f3f3f8f8f8b8b8b8747474fffffffefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfc -fffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c -737373547aa84f81bd6571807979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d787878 -6272864f81bd5779a17474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171 -517eb44f81bd6c71777a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaea -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f959595 -e9e9e9fffffffefefedbdbdb8787877f7f7fa8a8a8f2f2f2fdfdfdfcfcfcdbdbdb -8d8d8d7f7f7f7f7f7f969696edededfdfdfdf3f3f3aaaaaaf4f4f49999997f7f7f -818181c4c4c4fafafaf7f7f7fbfbfbe8e8e88e8e8e7f7f7f848484d1d1d1fdfdfd -fefefeeeeeee9e9e9e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef -93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfddcdcdc7e7e7efcfcfcfefefeeeeeee787878 -8282829494948d8d8d848484878787abababf8f8f8f8f8f8d6d6d6a8a8a87e7e7e -7b7b7babababdededefcfcfcdfdfdfa2a2a2848484939393cececefafafaeaeaea -c2c2c29191917575758d8d8dd5d5d5f8f8f8ffffffc0c0c0919191858585ababab -edededfcfcfcd2d2d2a9a9a97b7b7b848484a9a9a9e4e4e4fdfdfdeaeaea949494 -8888888c8c8ce1e1e1fcfcfcf8f8f8c1c1c1a0a0a07272728f8f8fb7b7b7f2f2f2 -ffffffd2d2d28888888787878888889090909b9b9b5d5d5db2b2b2fbfbfbffffff -c3c3c3787878fffffffcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373547aa74f81bd6571807979797e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7d7d7d7878786272864f81bd5779a17474747c7c7c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c717171507db34f81bd6c71777a7a7a7e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8989898787877f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f8a8a8a8383837f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8a8a8a -7f7f7f7f7f7f8282827f7f7f7f7f7f7f7f7f7f7f7f8080808d8d8d8686867f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f8383838d8d8d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfc -fffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80ba -dcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfddddddd -808080fefefefdfdfdededed7b7b7b8e8e8e9d9d9d929292878787878787a8a8a8 -f3f3f3e7e7e79a9a9a4c4c4c505050515151555555b1b1b1f8f8f8dbdbdba0a0a0 -848484939393cfcfcff8f8f8cacaca7171714c4c4c4f4f4f4b4b4ba0a0a0eaeaea -f8f8f8bdbdbd8d8d8d848484aeaeaee8e8e8f8f8f89898985353534f4f4f4e4e4e -525252c4c4c4f4f4f4e5e5e59393938888888a8a8addddddf6f6f6ebebeb717171 -4e4e4e4e4e4e4e4e4e5f5f5fe1e1e1f7f7f7d2d2d28a8a8a8383838b8b8b9b9b9b -a5a5a55f5f5fb0b0b0fafafafefefec2c2c2777777fffffffcfcfcfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffff -fffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373 -547aa74f81bd6571807979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d787878627285 -4f81bd5678a17474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171507db3 -4f81bd6c71777a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc8 -6580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfddedede767676dcdcdcdbdbdbd1d1d1878787e0e0e0 -f2f2f2c1c1c1848484878787959595bababab4b4b4808080515151525252545454 -5656568f8f8fbcbcbcb0b0b09292928585858d8d8da8a8a8bebebea1a1a1696969 -535353555555515151838383b6b6b6c0c0c0a2a2a2868686848484979797b3b3b3 -bbbbbb8181815757575656565454545454549b9b9bbebebeb5b5b58d8d8d878787 -878787abababbebebeb7b7b76a6a6a5555555656565555555b5b5bafafafbfbfbf -a5a5a5888888848484949494ebebebfefefe8282829b9b9bdbdbdbdfdfdfa7a7a7 -777777fefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4 -b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7c7c7c737373557aa74f81bd6471807979797e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7d7d7d7878786272854f81bd5678a17474747c7c7c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c717171517eb34f81bd6c71787a7a7a7e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffff -fffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1 -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffe5e5e5616161 -6262626262625f5f5f808080edededf5f5f5c4c4c4868686868686868686858585 -8080806b6b6b505050505050535353565656717171868686838383838383878787 -8686868484848585857a7a7a5c5c5c5151515353535353536868687f7f7f858585 -878787888888888888858585858585838383686868535353525252545454555555 -7575758686868484848787878787878686868585858686868383835d5d5d525252 -5353535454545b5b5b808080858585868686858585888888979797f4f4f4ffffff -a3a3a35a5a5a6161616262625757579c9c9cfffffffbfbfbfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171 -4b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffffffffff -fdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373557aa7 -4f81bd6471807979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7d7d7878786272854f81bd -5679a17474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171517eb34f81bd -6c71787a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbececece0e0e0e5e5e5e1e1e1eaeaeafafafaf2f2f2 -c0c0c0848484888888939393aaaaaaa4a4a47e7e7e505050535353545454545454 -878787acacaca1a1a18f8f8f8888888d8d8d9d9d9daaaaaa949494646464505050 -5353535252527d7d7da4a4a4ababab9a9a9a8b8b8b868686909090a5a5a5aeaeae -797979555555525252505050545454909090acacaca8a8a88a8a8a878787888888 -a1a1a1a9a9a9a5a5a56565655252525151515050505e5e5e9d9d9dababab9f9f9f -898989868686979797f6f6f6fbfbfbf5f5f5e6e6e6e4e4e4e4e4e4e5e5e5f4f4f4 -fefefefafafafefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d4 -5e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aa -a2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7c7c7c737373557aa74f81bd6471807979797e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7d7d7d7878786372864f81bd5679a17474747c7c7c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c717171517eb34f81bd6b70777a7a7a7e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee -8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffff -fffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfde6e6e67373737b7b7b -7b7b7b7676768e8e8eeeeeeef4f4f4c1c1c18585858a8a8aabababf7f7f7efefef -a1a1a1515151555555535353595959b8b8b8fdfdfddfdfdfa1a1a1848484969696 -d1d1d1fefefed1d1d1787878515151545454505050a3a3a3f0f0f0fefefec0c0c0 -8e8e8e838383a9a9a9edededffffff9c9c9c5c5c5c565656515151535353c7c7c7 -fafafae8e8e8939393858585898989dcdcdcf9f9f9eeeeee777777545454575757 -515151656565e3e3e3fdfdfdd2d2d2888888848484999999f4f4f4fdfdfdababab -7171717a7a7a7b7b7b707070a1a1a1fefefefafafafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb9 -7c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfd -f3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373547aa64f81bd -6571817979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786372864f81bd5679a1 -7474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171517db34f81bd6a7076 -7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a5 -99afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcdbdbdb717171dedededededed1d1d17f7f7fc9c9c9dfdfdfb5b5b5 -8585858a8a8aabababf7f7f7f6f6f6c7c7c78e8e8e737373717171969696d5d5d5 -fdfdfddfdfdfa0a0a0848484959595d1d1d1ffffffe4e4e4acacac7f7f7f6e6e6e -7e7e7ec6c6c6f6f6f6ffffffc0c0c08e8e8e838383a9a9a9edededfefefec3c3c3 -969696727272787878919191dcdcdcfcfcfceaeaea939393858585888888dedede -fdfdfdf4f4f4afafaf8c8c8c6c6c6c818181a3a3a3eeeeeeffffffd2d2d2888888 -848484959595e2e2e2e9e9e9777777979797dbdbdbe0e0e0a7a7a7747474fcfcfc -f9f9f9fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b3 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cd -f1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7b7b7b727272547aa64f81bd6470807878787d7d7d7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7d7d7d7777776171844f81bd5678a17373737b7b7b7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7d7d -7b7b7b707070517db34f81bd6a70767979797d7d7d7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e6c7e93 -7295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5 -657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffffffffff -fcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcdcdcdc818181fcfcfcfcfcfc -eeeeee7373737d7d7d8b8b8b888888868686888888aaaaaaf7f7f7ffffffffffff -ebebeba2a2a29d9d9defefeffdfdfdfcfcfce0e0e0a0a0a0838383939393cfcfcf -fffffffffffffbfbfbcacaca959595c1c1c1f9f9f9fdfdfdffffffc0c0c08e8e8e -848484adadadeeeeeefefefefbfbfbececec9e9e9eb1b1b1efefeffcfcfcffffff -eaeaea939393858585898989dfdfdffdfdfdfefefeffffffdfdfdf8e8e8ecacaca -f6f6f6fbfbfbffffffd2d2d28888888686868787878d8d8d909090565656b2b2b2 -fbfbfbffffffc3c3c3777777fcfcfcfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f82 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3 -aebecf5780b0697f99697f99687e99687e99687f9a687f9a677e99687f9a687f9a -677e9a677e9a677f9b677f9b677e9a677e9a647c975c728c4f7aac4f81bd567293 -617893657d99667f9c667e9c667e9c667f9d667f9d657e9c657e9c657f9d657f9d -657e9d657f9e657f9e647e9d647e9d647e9c5f78955271974f81bd5079a95b7390 -627b9a647f9f647f9f637e9f637e9f647fa0637e9f637e9f627e9f627e9f627ea0 -627ea0637fa0627ea0627ea0617ea05f7c9d57708f4f7db64f81bd5470925d799b -617ea1627fa2617ea2617ea2617fa2617fa2617ea2617fa3617fa3607ea3607ea3 -617fa3617fa3607ea3607ea3597fac6d92bae0e0e0bbbbbbfefefefafafabebebe -fafafafefefebebebef5f5f5ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afca -f0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93acc84a7ebb647f9e647f9e -647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e -647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e -647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e -647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e -647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e647f9e -647f9e4a7ebbdddfe2f8f8f8fefefefffffff5f5f5bebebefefefefafafabebebe -fafafafefefebebebef5f5f5fffffff2f2f2ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfcdddddd7f7f7ffcfcfcfefefeeeeeee7777778383839595958d8d8d858585 -878787aaaaaaf5f5f5fbfbfbfcfcfce6e6e69d9d9d9b9b9bebebebfbfbfbfcfcfc -dddddda0a0a0838383929292cdcdcdfbfbfbfbfbfbf9f9f9c3c3c3909090c0c0c0 -f9f9f9fcfcfcfcfcfcbfbfbf8f8f8f838383aaaaaaebebebfbfbfbfcfcfce9e9e9 -9e9e9eafafafecececfcfcfcfcfcfce9e9e9939393868686888888dcdcdcf9f9f9 -fbfbfbfbfbfbd8d8d88e8e8ecacacaf7f7f7fcfcfcfcfcfcd0d0d0878787868686 -8888889191919a9a9a585858b4b4b4fbfbfbffffffc4c4c4797979fffffffcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1 -fcfcfcfffffffffffffdfdfdf1f1f1abbacb507fb84f81bd4f81bd4f81bd4f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd -4d7eb94774ab4b7ab34f81bd4673a84b7ab44e7fbb4f81bd4f81bd4f81bd4f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4e7fbb -4a79b24673a94f81bd4a79b14875ac4d7eb94f81bd4f81bd4f81bd4f81bd4f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4e80bc4d7db8 -4673a84d7eb84f81bd4572a74c7cb64e80bc4f81bd4f81bd4f81bd4f81bd4f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd698cb5 -cccccc6f6f6ff6f6f6ebebeb6f6f6febebebf6f6f6707070dfdfdfffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee90a9c74a7ebb -6482a56482a56482a56482a56482a56482a56482a56482a56482a56482a56482a5 -6482a56482a56482a56482a56482a56482a56482a56482a56482a56482a56482a5 -6482a56482a56482a56482a56482a56482a56482a56482a56482a56482a56482a5 -6482a56482a56482a56482a56482a56482a56482a56482a56482a56482a56482a5 -6482a56482a56482a56482a56482a56482a56482a56482a56482a56482a56482a5 -6482a56482a56482a54a7ebb9eb3cbf0f0f0fcfcfcfffffffffffffffffffcfcfc -f0f0f0d7d7d7869fbc7d97b57c96b47c96b47c96b47c96b47c96b47c96b47c96b4 -7c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b4 -7c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b4 -7c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b4 -7c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b47c96b4 -7c96b47c96b47c96b47c96b47c96b47f99b7a5b3c3e5e5e5f8f8f8fefefeffffff -dfdfdf707070f6f6f6ebebeb6f6f6febebebf6f6f6707070dfdfdffffffff2f2f2 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfddddddd7b7b7befefefefefefe0e0e0 -8a8a8acececee2e2e2b5b5b58181818989899f9f9fcececed1d1d1d4d4d4c8c8c8 -9a9a9a979797cbcbcbd5d5d5d5d5d5bebebe979797858585909090b7b7b7d3d3d3 -d3d3d3d2d2d2b0b0b08e8e8eadadadd4d4d4d5d5d5d4d4d4ababab8b8b8b878787 -9c9c9cc7c7c7d6d6d6d3d3d3cacaca979797a1a1a1ccccccd6d6d6d6d6d6c7c7c7 -909090888888888888bbbbbbd3d3d3d5d5d5d4d4d4bebebe8b8b8bb2b2b2d4d4d4 -d5d5d5d6d6d6b9b9b9868686858585969696e0e0e0eaeaea7a7a7aadadadececec -efefefbbbbbb7a7a7afffffffcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf0f0f0a5b4c4 -5078a6597597577395587495587495587394587394597495587394587394587393 -587393587292587292587393587393566f8f5067834d77aa4f81bd4c698c536c89 -57718f59729158729058729058718f58718f59729059729059718f59718f58718e -59718e59718e59718e59718e576f8b5369854c688c4f81bd4c75a550667f566d89 -59708c59708c59708b59708b586f8a59708b59708b596f8a596f8a5a708a5a708a -596f8a596f89596f89596e88576c854f63794e7cb44f81bd4d637e566b83586d86 -596e875a6f875a6f875a6e875a6e87596e865a6e865a6e865a6e855a6e85596d85 -596d855a6e855a6e855672946688ade4e4e4f9f9f9fffffffffffffefefeffffff -fffffffefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcf0f0f0d5d5d68ba1bb849ab48298b28298b28298b28298b28298b2 -8298b28298b28298b28298b28298b28298b28298b28298b28298b28298b28298b2 -8298b28298b28298b28298b28298b28298b28298b28298b28298b28298b28298b2 -8298b28298b28298b28298b28298b28298b28298b28298b28298b28298b28298b2 -8298b28298b28298b28298b28298b28298b28298b28298b28298b28298b28298b2 -8298b28298b28298b28298b28298b28298b28399b3849ab491a5bed9d9d9f1f1f1 -fcfcfcfffffffffffffffffffdfdfdf4f4f4e1e1e1cbcbcbc0c0c0bdbdbdbdbdbd -bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbd -bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbd -bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbd -bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbd -bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbebebec2c2c2 -d2d2d2eaeaeafafafafefefefffffffffffffefefefffffffffffffefefeffffff -fffffffefefefffffffffffff2f2f2ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -e4e4e4646464878787868686838383808080e7e7e7f6f6f6c4c4c4888888878787 -858585858585858585888888878787878787858585848484868686868686878787 -888888888888888888878787868686888888878787868686868686858585858585 -8585858686868787878989898989898888888585858989898a8a8a888888848484 -8585858686868585858585858484848787878787878686868585858a8a8a888888 -848484888888888888858585868686858585858585858585888888868686979797 -f5f5f5ffffff9494946c6c6c8484848686866e6e6e868686fefefefefefefefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfc -fffffffffffffdfdfdf0f0f0a4b3c34f6f93646464616161616161616161616161 -6161616161616161616161616161616161616161616161616161616161615f5f5f -5858584f74a04f81bd515e6e5c5c5c606060616161616161616161616161616161 -6161616161616161616161616161616161616161616161616161616060605b5b5b -5160734f81bd4e719a5858585f5f5f616161616161616161616161616161616161 -6161616161616161616161616161616161616161616161616060605e5e5e565656 -4e7aaf4f81bd545a615d5d5d606060616161616161616161616161616161616161 -6161616161616161616161616161616161616161616363635a697b6888ade4e4e4 -fafafaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf4f4f4e0e0e0cbcbcbc1c1c1 -bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbf -bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbf -bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbf -bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbf -bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbf -bfbfbfc1c1c1cdcdcde2e2e2f5f5f5fdfdfdfffffffffffffffffffefefefafafa -efefefe3e3e3dcdcdcdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb -dbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb -dbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb -dbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb -dbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb -dbdbdbdbdbdbdbdbdbdbdbdbdededee7e7e7f4f4f4fcfcfcffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbddddddd3d3d3d6d6d6d7d7d7e3e3e3 -fafafaf4f4f4c1c1c1858585888888878787868686878787878787878787878787 -868686868686868686878787898989888888888888888888888888878787858585 -858585878787868686868686868686868686868686888888878787858585878787 -878787848484878787868686858585878787868686868686868686878787868686 -878787878787878787888888868686838383878787858585868686868686868686 -8686868686868787877f7f7f959595f8f8f8fbfbfbefefefdcdcdcd6d6d6d6d6d6 -d9d9d9eeeeeefbfbfbfafafafcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf1f1f1a9b9c955779f -7070706e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e -6e6e6e6e6e6e6f6f6f6f6f6f6c6c6c6464645277a34f81bd5a67776969696e6e6e -6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f -6f6f6f6f6f6f6f6f6f6e6e6e68686859687b4f81bd52759f6666666d6d6d707070 -707070707070707070707070707070707070707070707070707070707070707070 -7070707070706f6f6f6d6d6d646464507cb14f81bd5f656c6c6c6c6f6f6f707070 -707070707070707070707070707070707070707070707070707070717171717171 -7171717171716474876d8fb5e7e7e7fbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefafafaf0f0f0e4e4e4dedededddddddddddddddddddddddddddddddddddd -dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd -dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd -dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd -dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd -dddddddddddddddddddddddddddddddddddddededee5e5e5f1f1f1fafafafefefe -fffffffffffffffffffffffffefefefafafaf6f6f6f3f3f3f3f3f3f3f3f3f3f3f3 -f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3 -f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3 -f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3 -f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3 -f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f4f4f4f8f8f8 -fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fdfdfdfdfdfdfefefefcfcfcfdfdfdfefefef5f5f5c1c1c1848484878787898989 -8d8d8d8888888989898a8a8a8686868686868989898b8b8b8a8a8a878787868686 -8686868787878888888a8a8a8a8a8a8a8a8a888888868686888888888888898989 -8a8a8a8888888787878888888787878989898888888787878a8a8a898989888888 -8a8a8a8888888989898a8a8a8787878787878787878787878787878888888a8a8a -8d8d8d8989898787878787878989898989898b8b8b878787868686999999f3f3f3 -fafafafafafafefefefefefefefefefefefefefefefcfcfcfcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffff -fffffffdfdfdf2f2f2aebecf5a7ea87b7b7b7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7777776e6e6e -5479a54f81bd616e7e7373737979797b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a7a7a747474617082 -4f81bd5477a17070707878787b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a7a7a7878786d6d6d517db2 -4f81bd686e757676767a7a7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6a7c917193bbe9e9e9fbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefbfbfbf7f7f7f5f5f5f4f4f4 -f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4 -f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4 -f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4 -f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4 -f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4 -f5f5f5f7f7f7fbfbfbfefefefffffffffffffffffffffffffffffffffffffefefe -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff7f7f7ddddddd9d9d9dcdcdcdbdbdbe4e4e4f9f9f9 -f4f4f4c2c2c2878787898989989898bbbbbbbcbcbcbcbcbcb3b3b39191918f8f8f -b7b7b7bfbfbfbdbdbdaeaeae9292928686868c8c8ca5a5a5bcbcbcbcbcbcb9b9b9 -a2a2a28a8a8aa3a3a3bdbdbdbcbcbcb8b8b8a1a1a18c8c8c858585969696b7b7b7 -bebebebfbfbfb7b7b78e8e8e969696b7b7b7bcbcbcbebebeb0b0b08c8c8c868686 -888888afafafbabababdbdbdbdbdbdb0b0b0898989a2a2a2bbbbbbb9b9b9bfbfbf -a8a8a8898989878787999999f1f1f1fbfbfbedededdbdbdbdcdcdcdcdcdcdcdcdc -ebebebfbfbfbfcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4 -b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15c81ac7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7b7b7b7272725479a54f81bd6471817777777d7d7d7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7d7d7d7777776271834f81bd5578a27373737b7b7b7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7d7d7d7b7b7b707070517db24f81bd696f767979797d7d7d7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefee1e1e1565656 -5e5e5e6262625e5e5e787878eaeaeaf2f2f2bfbfbf848484898989adadadf8f8f8 -ffffffffffffebebeba3a3a39a9a9aedededffffffffffffe1e1e1a5a5a5848484 -959595d3d3d3fffffffffffffdfdfdc7c7c7919191c2c2c2fdfdfdffffffffffff -c0c0c0909090848484abababeeeeeefffffffffffff0f0f0a0a0a0b1b1b1efefef -ffffffffffffececec9393938787878b8b8bdededefdfdfdffffffffffffdfdfdf -8f8f8fcbcbcbfafafaffffffffffffd6d6d6888888828282989898f6f6f6fcfcfc -9a9a9a5454546060606262625151518d8d8dfffffffefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171 -4b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcffffffffffff -fdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7373735479a5 -4f81bd6572827878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786271844f81bd -5679a27474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171527eb34f81bd -6a70777a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfddfdfdf787878eaeaeae9e9e9dbdbdb808080bbbbbbcecece -ababab828282878787abababf6f6f6fbfbfbfbfbfbe4e4e4a0a0a09a9a9ae6e6e6 -f9f9f9fcfcfcdededea2a2a2838383919191cececefcfcfcfdfdfdf9f9f9c6c6c6 -939393c1c1c1f8f8f8fbfbfbfefefec0c0c08e8e8e838383abababeeeeeefafafa -fafafae9e9e99d9d9dabababe9e9e9fcfcfcffffffe8e8e8939393878787888888 -dcdcdcfdfdfdfafafaf9f9f9d8d8d8898989c5c5c5f4f4f4fefefeffffffd1d1d1 -8282828686868f8f8fcfcfcfd5d5d56f6f6fa5a5a5e6e6e6eaeaeab2b2b2747474 -fffffffcfcfcfefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d4 -5e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aa -a2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7c7c7c7373735479a54f81bd6471827878787e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7878786271844f81bd5679a27474747c7c7c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c717171527eb34f81bd6a71787a7a7a7e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfddddddd7e7e7efefefe -fefefeeeeeee767676797979878787878787868686878787a7a7a7f3f3f3f5f5f5 -d8d8d8acacac838383818181b2b2b2e1e1e1fdfdfddddddd9f9f9f848484939393 -cdcdcdfbfbfbeaeaeac4c4c4959595797979929292d5d5d5f4f4f4fefefec1c1c1 -8e8e8e818181a9a9a9eeeeeefcfcfcd6d6d6b0b0b08080808a8a8ab1b1b1e7e7e7 -fcfcfcececec959595858585878787dededefdfdfdf8f8f8c5c5c5a1a1a1767676 -9a9a9abebebef3f3f3ffffffd2d2d28888888989898585858686868a8a8a4e4e4e -b3b3b3fbfbfbffffffc3c3c3797979fffffffafafafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb9 -7c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfd -f3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373557aa54f81bd -6471827878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786271844f81bd5679a2 -7474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c717171527db24f81bd6a7178 -7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfddcdcdc7e7e7efefefefafafaeeeeee7b7b7b8e8e8e9999998e8e8e -8585858a8a8aa8a8a8f3f3f3eaeaea9e9e9e505050515151525252575757b4b4b4 -fafafadadadaa0a0a0868686969696cfcfcff9f9f9cccccc7373734f4f4f525252 -4e4e4ea0a0a0ebebebfafafac2c2c28b8b8b828282adadadeaeaeaf9f9f99a9a9a -565656525252515151535353c4c4c4f5f5f5eaeaea969696888888878787dcdcdc -f6f6f6f0f0f07171715050505151514f4f4f606060e4e4e4f9f9f9d0d0d0888888 -8787878888889797979f9f9f585858b2b2b2fbfbfbffffffc2c2c2777777ffffff -fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b3 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cd -f1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7c7c7c737373557aa54f81bd6471827878787e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7878786372844f81bd5679a37474747c7c7c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c727272527db24f81bd6a71787a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f94 -7295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfddedede777777e1e1e1e2e2e2 -d7d7d7888888d9d9d9e8e8e8bebebe8484848a8a8a9d9d9dc4c4c4bcbcbc878787 -505050525252535353575757969696c6c6c6b5b5b59292928484848e8e8eadadad -c5c5c5a8a8a86a6a6a5050505353535151518d8d8dbdbdbdc7c7c7a4a4a4898989 -8787879d9d9dbcbcbcc5c5c5848484555555525252525252535353a3a3a3c5c5c5 -bababa8d8d8d8686868a8a8ab8b8b8c4c4c4bbbbbb6a6a6a515151525252505050 -606060b5b5b5c8c8c8b1b1b1878787888888959595eaeaeaf1f1f17e7e7e9d9d9d -e1e1e1e5e5e5adadad787878fffffffefefefefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdf4f4f4b7c5d45e85b37f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c7171714b7eb97c7f82 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3 -b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7373735579a54f81bd647282 -7878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786372844f81bd5679a3737373 -7c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272517db14f81bd6a70787a7a7a -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffe4e4e45f5f5f5f5f5f646464606060808080efefeff6f6f6c5c5c5848484 -8888888787878686868585856c6c6c535353515151535353535353707070868686 -8686868787878787878686868686868888887979795c5c5c525252545454525252 -6d6d6d8383838484848787878888888787878888888181818888886a6a6a535353 -545454535353525252787878878787868686878787858585868686838383858585 -8282825d5d5d5252525353535353535959598282828787878282828b8b8b878787 -959595f4f4f4ffffff9d9d9d585858626262636363555555959595fffffffbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf4f4f4b7c5d45e85b37f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c7171714b7eb97c7f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6384aaa2b6cdf1f1f1 -fcfcfcfffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7c7c7c7373735579a54f81bd6472827878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7878786372844f81bd5579a37373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -727272517db14f81bd6a70787a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bd -eaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeb6cae3 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2bbcee5fefefeffffffffffffffffffffffffffffffffffff -fffffffefefeb8cce3b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2 -b5c9e2b5c9e2b5c9e2b5c9e2b5c9e2b6cae3d7e2effefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff8f8f8d4d4d4c8c8c8cacacac8c8c8 -dadadaf9f9f9f2f2f2c1c1c1858585898989989898bdbdbdb7b7b7868686515151 -525252535353555555939393c2c2c2b1b1b19595958585858d8d8daaaaaabfbfbf -a4a4a46a6a6a5252525555554e4e4e858585b9b9b9bebebea1a1a1898989848484 -989898b6b6b6c2c2c2838383575757535353535353525252a3a3a3c0c0c0b9b9b9 -8c8c8c8787878b8b8bb5b5b5bfbfbfbfbfbf6969695151515454545454545e5e5e -b5b5b5c2c2c2afafaf8a8a8a8383839a9a9af5f5f5fcfcfce9e9e9cfcfcfcccccc -cccccccccccce6e6e6fefefefcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf4f4f4b7c5d45783b6677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b677f9b677f9b677f9b667e9a647c975c718a4a7ebb667f9c677f9b -677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b677f9b -677f9b677f9b4a7ebba2b6cdf1f1f1fcfcfcfffffffffffffdfdfdf3f3f3b0c0d1 -5d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7373735579a54f81bd647282787878 -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786472844f81bd5579a37373737c7c7c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272517db14f81bd6a70787a7a7a7e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfda5bdda4a7ebb6484a96484a96484a96484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a96484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a96484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a96484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a96484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a94a7ebbb5c9e0fdfdfd -fffffffffffffffffffffffffffffffdfdfdafc4de4a7ebb6484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a96484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a96484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a96484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a96484a96484a96484a9 -6484a96484a96484a96484a96484a96484a96484a96484a96484a96484a96484a9 -4a7ebbf3f5f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -e2e2e25b5b5b7777777474747070707a7a7aeaeaeaf5f5f5c3c3c38787878a8a8a -aaaaaaf9f9f9efefefa5a5a55656565454545353535d5d5dbcbcbcffffffe1e1e1 -a2a2a2838383929292cfcfcfffffffd4d4d47d7d7d545454555555525252a7a7a7 -f1f1f1ffffffc0c0c08b8b8b828282acacaceeeeeeffffff9e9e9e5e5e5e535353 -575757595959ccccccfbfbfbeeeeee949494858585898989e3e3e3fefefef3f3f3 -7a7a7a575757535353555555686868ecececffffffd2d2d28787878585859a9a9a -f7f7f7ffffff9494945f5f5f7373737575756161618d8d8dfffffffbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf5f5f5dededf8da3be7a96b77894b5 -7793b47793b47793b47793b47793b47793b47793b47793b47793b47793b47793b4 -7793b47793b47793b47793b47793b47793b47793b47793b47793b47793b47793b4 -7793b47793b47793b47793b47793b47793b47793b47793b47793b47793b47793b4 -7793b47793b47793b47793b47793b47793b47793b47793b47793b47793b47793b4 -7793b47793b47793b47793b47793b47793b47793b47793b47793b47793b47692b3 -7590b06e87a56d84a0728eaf7692b37793b47793b47793b47793b47793b47793b4 -7793b47793b47793b47793b47793b47793b47793b47793b47793b47793b47793b4 -7793b47793b47793b47793b47793b47793b47793b47793b47793b47793b47793b4 -7793b47793b47793b47793b47793b47793b47793b47793b47793b47793b47793b4 -7793b47793b47793b47793b47793b47793b47793b47793b47793b47793b47793b4 -7793b47793b47793b47793b47793b47894b57a96b7859fbdd8d9daf2f2f2fcfcfc -fffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c -737373567aa54f81bd6371827878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e787878 -6472844f81bd5579a37373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272 -527db14f81bd6a71797a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaea -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefef8f8f895b0d0657e9c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6582a5a6bcd7f9f9f9fefefefffffffffffffffffffefefef8f8f8 -9fb7d46580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80baeaeceffcfcfcffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcdbdbdb7d7d7dfbfbfbf9f9f9e9e9e98c8c8c -d0d0d0e2e2e2b7b7b78585858a8a8aabababf7f7f7f8f8f8d7d7d7a7a7a7818181 -808080afafafe1e1e1fdfdfde0e0e0a2a2a2848484929292cfcfcffefefeeaeaea -c3c3c39696967b7b7b969696dadadaf7f7f7ffffffbdbdbd8d8d8d828282aaaaaa -eeeeeefcfcfcd2d2d2adadad8282828d8d8db2b2b2eaeaeafdfdfdeaeaea939393 -858585888888dfdfdffdfdfdf7f7f7c5c5c5a2a2a2777777999999bdbdbdf8f8f8 -ffffffd0d0d0878787858585969696e3e3e3ededed787878adadadf7f7f7fafafa -bcbcbc737373fffffffcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -f7f7f7e6e6e6cececec0c0c0bdbdbdbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bcbcbcbcbcbcbcbcbcbcbcbcbbbbbbbababab1b1b1acacacb2b2b2b9b9b9bbbbbb -bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc -bfbfbfcccccce2e2e2f5f5f5fdfdfdfffffffffffffdfdfdf3f3f3b0c0d15d82ad -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373567aa54f81bd6371827878787e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7878786372834f81bd5679a47373737c7c7c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c727272527db14f81bd6a71797a7a7a7e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf2f2f28ea9c9657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a59eb4cff4f4f4fdfdfd -fffffffffffffffffffdfdfdf3f3f398b0cd6580a07f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80ba -e1e3e6f9f9f9fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcdddddd -7f7f7ffefefeffffffeeeeee7575758282829393938a8a8a8484848a8a8aaaaaaa -f7f7f7fefefeffffffeaeaeaa2a2a2a0a0a0efefeffcfcfcfcfcfce0e0e0a2a2a2 -848484929292cfcfcffdfdfdfefefefefefec9c9c9919191c3c3c3fefefefcfcfc -ffffffbdbdbd8d8d8d838383aaaaaaeeeeeefbfbfbfefefef0f0f0a1a1a1b3b3b3 -f0f0f0fefefeffffffeaeaea949494858585888888dcdcdcfdfdfdfefefeffffff -dedede8e8e8ecdcdcdfbfbfbfefefeffffffd2d2d28888888787878787878e8e8e -999999545454b2b2b2fbfbfbffffffc1c1c1777777fffffffefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefbfbfbf1f1f1e4e4e4dbdbdbd9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d7d7d7 -d3d3d3d0d0d0d3d3d3d6d6d6d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dbdbdbe3e3e3f0f0f0fafafafefefeffffff -fffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c737373 -567aa54f81bd6472837878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e787878637283 -4f81bd5679a47373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272527db1 -4f81bd6970787a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfcefefef8ba6c6657e9c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6582a59ab0cbf1f1f1fcfcfcfffffffffffffffffffcfcfcf0f0f094acc9 -6580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f4e80badddfe2f8f8f8fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcdddddd7f7f7ffcfcfcffffffeeeeee787878818181 -8f8f8f8e8e8e878787898989aaaaaaf7f7f7fcfcfcfcfcfce6e6e69f9f9f9e9e9e -eaeaeafcfcfcfcfcfcdededea2a2a2848484939393cfcfcffcfcfcfcfcfcf9f9f9 -c4c4c48f8f8fc2c2c2fafafafbfbfbfcfcfcbdbdbd8d8d8d828282aaaaaaebebeb -fcfcfcfcfcfcebebeb9b9b9badadadecececfcfcfcfcfcfce8e8e8939393858585 -898989ddddddfafafafcfcfcfcfcfcdbdbdb8a8a8ac5c5c5f6f6f6fcfcfcfdfdfd -d1d1d18787878787878989898f8f8f929292535353b0b0b0fbfbfbffffffc0c0c0 -787878fffffffefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fbfbfbf6f6f6f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f0f0f0efefeff1f1f1f1f1f1f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f3f3f3 -f6f6f6fafafafefefefffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7c7c7c7373735579a44f81bd6472837878787e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7878786372834f81bd5679a47373737c7c7c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c727272527db14f81bd6970787a7a7a7e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffff -fffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1 -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefededede777777 -e8e8e8e9e9e9dddddd878787cbcbcbdcdcdcb4b4b4868686898989a1a1a1d8d8d8 -dadadadbdbdbcdcdcd999999989898d2d2d2dbdbdbdcdcdcc5c5c5999999858585 -909090b9b9b9dadadadbdbdbd8d8d8b0b0b08c8c8cb0b0b0dadadadbdbdbdbdbdb -b0b0b08c8c8c878787a1a1a1cfcfcfdadadad8d8d8cbcbcb989898a3a3a3d0d0d0 -dbdbdbdbdbdbcecece9090908888888c8c8cc5c5c5d6d6d6dadadadbdbdbc3c3c3 -8b8b8bb4b4b4d8d8d8dbdbdbdcdcdcbebebe888888868686929292dbdbdbe2e2e2 -797979a3a3a3e8e8e8ebebebb1b1b17a7a7afffffffcfcfcffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefeffffffffffffffffffffffff -fdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7373735579a4 -4f81bd6472837878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786472844f81bd -5579a37373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272527db14f81bd -6970787a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffe6e6e66e6e6e7474747676767676768d8d8deeeeeef5f5f5 -c3c3c38686868787878787878888888787878989898888888989898a8a8a888888 -8989898888888787878686868787878787878888888a8a8a898989888888868686 -8686868888888888888888888a8a8a8686868787878787878787878989898c8c8c -898989888888878787878787888888888888888888888888898989868686878787 -8787878787878d8d8d898989888888888888888888888888888888898989868686 -868686878787949494f8f8f8ffffffa7a7a76b6b6b7676767777776a6a6a9d9d9d -fcfcfcf9f9f9ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7c7c7c7373735579a34f81bd6472847878787e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7878786472844f81bd5579a37373737c7c7c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c727272517cb04f81bd6a71797a7a7a7e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee -8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffff -fffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefef6f6f6f6f6f6 -f5f5f5f4f4f4f9f9f9fbfbfbf4f4f4c2c2c2868686878787858585858585888888 -878787888888888888878787878787878787878787878787878787878787858585 -8585858888888585858484848787878a8a8a888888878787878787878787898989 -888888868686878787878787868686868686868686858585878787878787878787 -878787878787888888878787858585858585858585858585858585868686858585 -8787878787878787878787878585858a8a8a848484969696f2f2f2f9f9f9fbfbfb -f7f7f7f7f7f7f7f7f7f8f8f8fafafaf9f9f9fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7373735579a34f81bd -6472847878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786472844f81bd5579a4 -7373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272517cb04f81bd6a7179 -7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a5 -99afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefefefefefefefefefefefefefcfcfcfcfcfcf4f4f4c1c1c1 -8585858888888888888989898787878989898a8a8a858585838383888888898989 -8989898888888686868686868787878989898686868686868a8a8a878787858585 -8686868989898888888989898787878787878989898a8a8a8686868787878c8c8c -8787878787878787878787878888888888888989898686868787878989898a8a8a -8989898686868787878585858888888888888787878989898989898a8a8a898989 -878787969696f5f5f5fffffffcfcfcfefefefffffffffffffffffffefefefbfbfb -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7c7c7c7373735579a34f81bd6472847878787e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7878786472834f81bd5579a47373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c727272517cb04f81bd6a71797a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f94 -7295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5 -657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffffffffff -fcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcebebebecececececec -e9e9e9efefeffafafaf5f5f5c1c1c1858585878787949494b5b5b5b2b2b2b3b3b3 -acacac9090908d8d8dabababb4b4b4b6b6b6ababab9191918686868d8d8da6a6a6 -b6b6b6b3b3b3b2b2b29f9f9f8a8a8a9c9c9cb2b2b2b1b1b1b7b7b79d9d9d898989 -878787959595afafafb4b4b4b7b7b7afafaf8d8d8d949494acacacb2b2b2b2b2b2 -aaaaaa8c8c8c878787868686a9a9a9b5b5b5b2b2b2b3b3b3a5a5a58a8a8aa1a1a1 -b3b3b3b5b5b5b2b2b2a6a6a6868686888888959595f3f3f3fbfbfbf3f3f3ebebeb -ececececececeaeaeaf2f2f2fcfcfcf9f9f9fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3 -b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7373735679a44f81bd637283 -7878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786472834f81bd5579a4737373 -7c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272527db04f81bd6a717a7a7a7a -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afca -f0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffe4e4e4626262737373747474707070808080eaeaeaf3f3f3c4c4c4878787 -868686aaaaaaf8f8f8fefefefcfcfceaeaea9f9f9f999999eaeaeaffffffffffff -dddddd9e9e9e828282949494d1d1d1fffffffffffffbfbfbc7c7c7939393c2c2c2 -fcfcfcfcfcfcfefefec1c1c18b8b8b828282b0b0b0f0f0f0fcfcfcffffffededed -9c9c9cb0b0b0efefefffffffffffffeaeaea959595878787898989e3e3e3fafafa -ffffffffffffdcdcdc8a8a8acbcbcbfafafafbfbfbffffffcdcdcd888888858585 -929292f5f5f5fdfdfd9e9e9e636363717171727272616161939393fefefefcfcfc -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7c7c7c7373735679a44f81bd6372837878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7878786371824f81bd567aa57373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -727272527db04f81bd6a717a7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bd -eaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfc -efefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfddedede777777ececece9e9e9dddddd -828282c3c3c3d6d6d6afafaf848484878787a9a9a9f5f5f5fffffffcfcfce7e7e7 -a1a1a19a9a9ae9e9e9fafafafcfcfcdededea1a1a1828282909090cececefcfcfc -fefefef9f9f9c6c6c6929292bfbfbffafafafcfcfcfbfbfbbfbfbf8c8c8c808080 -abababeeeeeefcfcfcfcfcfceaeaea9e9e9eaeaeaeebebebfbfbfbfefefeeaeaea -9292928787878c8c8cdededefdfdfdf9f9f9fbfbfbd8d8d88b8b8bc6c6c6f6f6f6 -f9f9f9fcfcfcd1d1d1898989868686909090d5d5d5dddddd7272729f9f9fe5e5e5 -e9e9e9aeaeae767676fffffffbfbfbfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3b0c0d1 -5d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7373735679a44f81bd647284787878 -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786371824f81bd567aa57373737c7c7c -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7d7d7d7b7b7b717171527db04f81bd6870797979797d7d7d -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0 -fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -dddddd818181fffffffafafaeeeeee7676767b7b7b8b8b8b8787878686868a8a8a -abababf9f9f9f7f7f7e1e1e1b9b9b9888888848484bcbcbce5e5e5fbfbfbdfdfdf -a1a1a1848484949494d0d0d0fcfcfcf0f0f0d0d0d0a0a0a07f7f7f9f9f9fe0e0e0 -f7f7f7fefefebdbdbd8d8d8d828282a9a9a9eaeaeafcfcfcdfdfdfbebebe878787 -929292bfbfbfecececfbfbfbe9e9e9939393868686878787dededefdfdfdf8f8f8 -d2d2d2b3b3b37b7b7ba3a3a3cacacaf6f6f6ffffffd2d2d2858585878787888888 -8484848f8f8f525252b1b1b1fbfbfbffffffc3c3c3797979fffffffafafafefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf3f3f3afbfd05880af707e8f6f7d8f6f7d8f6f7e8f6f7d8f -6f7d8f6f7e906f7e906e7d906e7d906f7e906f7e906e7d906e7e916e7e916b7a8e -6471835179a84f81bd58708e68778a6d7d906d7d916d7d916d7e926d7e926c7e92 -6c7e926d7e936c7e926c7e926c7e936c7e936c7e936c7e936c7e946a7d9165778b -57718f4f81bd5179a9617286687b926b7e956b7e946b7e956b7e956a7e956a7e95 -6a7e966a7e966a7e956a7e966a7e96697e96697e966a7e97697d96667b925e7186 -507cb24f81bd59708b647992687d97687e97687e97697e98697f99697f99687e99 -687e99697f99697f99687e99687e99687f9a677e99677e995e7fa56f92bbe9e9e9 -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef -93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfddcdcdc7f7f7ffffffffefefeeeeeee7a7a7a -8686869696969090908686868a8a8aabababf5f5f5ebebeb9d9d9d505050505050 -4f4f4f575757b6b6b6fbfbfbdcdcdca0a0a0848484939393ccccccf8f8f8cecece -7575754e4e4e5252524f4f4fa3a3a3ecececfbfbfbbcbcbc8b8b8b838383adadad -eaeaeafbfbfb9b9b9b575757505050505050535353c6c6c6f6f6f6e7e7e7939393 -8585858a8a8adcdcdcf9f9f9f1f1f1767676525252505050505050646464e3e3e3 -fafafad0d0d08888888585858b8b8b9999999b9b9b595959b4b4b4fbfbfbffffff -c4c4c4757575fffffffcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf2f2f2abbbcc507fb8 -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd -4f81bd4f81bd4f81bd4f81bd4d7eb94775ab4a7ab24f81bd4772a84a7ab34e7fbb -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd -4f81bd4f81bd4f81bd4e7fbb4a7ab34673a84f81bd4b7ab34775ab4d7eb94f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd -4f81bd4f81bd4e80bc4d7db84673a94d7db74f81bd4572a74b7bb54e80bc4f81bd -4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd4f81bd -4f81bd4f81bd4f81bd698db6e7e7e7fbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f8787878989897f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -8989898888887f7f7f7f7f7f8282828f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfc -fffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80ba -dcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfddedede -7c7c7cf1f1f1f0f0f0e2e2e28b8b8bd1d1d1e6e6e6bababa8686868888889c9c9c -c7c7c7c5c5c58d8d8d5050505353535353535656569b9b9bd0d0d0bdbdbd979797 -868686909090b2b2b2cbcbcbacacac6e6e6e515151535353505050919191c5c5c5 -cececeababab8a8a8a8383839f9f9fc1c1c1cecece878787575757535353525252 -555555a6a6a6cdcdcdc3c3c38f8f8f868686888888bababacececec6c6c66d6d6d -535353535353515151606060bbbbbbcfcfcfb2b2b28c8c8c848484949494e5e5e5 -efefef7b7b7babababecececf1f1f1bcbcbc767676fefefefefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdf0f0f0a7b6c64f7bad567aa5567aa45579a35679a45579a35579a3 -5679a35679a35679a25679a25578a25578a25679a25678a15678a154769d4e6e92 -4c77ab4f81bd4b6e9850709654769d56779f56779f56779f56779f57779f57779f -56779e56769e56769e57779e57779e56769d56769d57779d56759b526f944a6c93 -4f81bd4c77ac4f6b8d55739757769b57769c57769b57769b57759a57759a577599 -57759957759a5775995775995774985774985775985674975471944e68884d7bb3 -4f81bd4c688b536f90567395587497587497577496587496587496587495587495 -57739557739558749558749558739459749559749554769f6788afe4e4e4fafafa -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7ff7f7f7ffffffb3b3b37f7f7f -7f7f7f7f7f7f7f7f7f7f7f7fa6a6a6fffffffafafa7f7f7f7f7f7fa8a8a8ffffff -8181817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc8 -6580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefedfdfdf5d5d5d8787878787878585857a7a7ae7e7e7 -f5f5f5c1c1c18181818888888686868585858484846e6e6e515151535353575757 -5757577171718686868787878686868989898888888686868484847777775d5d5d -5252525353535050506c6c6c848484858585888888868686858585878787858585 -858585686868535353535353545454535353787878868686888888888888858585 -8787878686868686868080805c5c5c5454545353535353535a5a5a808080858585 -868686888888898989999999f8f8f8ffffff8a8a8a676767888888898989696969 -808080fcfcfcfbfbfbfefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf0f0f0a4b3c34f6f93646464 -616161616161616161616161616161616161616161616161616161616161616161 -6161616161616161615f5f5f5858584e719b4f81bd5160725c5c5c606060616161 -616161616161616161616161616161616161616161616161616161616161616161 -6161616161616060605c5c5c515f6f4f81bd4e739e5858585f5f5f616161616161 -616161616161616161616161616161616161616161616161616161616161616161 -6161616060605e5e5e5757574e79ac4f81bd545b645d5d5d606060616161616161 -616161616161616161616161616161616161616161616161616161616161616161 -6363635a697a6888ace4e4e4fafafaffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7ffdfdfde4e4e4ececec7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe0e0e0e2e2e2 -ffffff7f7f7f7f7f7fa8a8a8ffffff8181817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffff -fffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f8e8e8e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1 -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f0f0969696 -818181818181838383aaaaaaf2f2f2f6f6f6c3c3c38787878989899a9a9ab9b9b9 -b4b4b4818181505050515151535353585858929292bfbfbfadadad909090858585 -8e8e8ea7a7a7bfbfbfa2a2a2676767505050535353505050838383b9b9b9bfbfbf -9f9f9f878787868686999999b8b8b8bebebe818181555555535353535353505050 -9d9d9dbfbfbfb7b7b78d8d8d878787888888b0b0b0bcbcbcb3b3b3676767525252 -5252525151515c5c5cb2b2b2c2c2c2aaaaaa878787878787979797f4f4f4fefefe -cbcbcb888888838383838383838383c9c9c9fcfcfcfafafafcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff3f3f3e0e0e0eeeeeeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffc6c6c6999999ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf1f1f1a9b8c854769d6e6e6e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c -6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69696962626251749e -4f81bd5766786666666b6b6b6c6c6c6c6c6c6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d -6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c6c6c6767675966774f81bd -5176a16363636a6a6a6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d -6d6d6d6d6d6d6e6e6e6e6e6e6e6e6e6e6e6e6d6d6d6b6b6b626262507bae4f81bd -5d646d6969696d6d6d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e -6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6f6f6f6273866c8db4e7e7e7fbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7ffdfdfdb4b4b4fdfdfd9f9f9f7f7f7f -7f7f7f7f7f7f969696fbfbfbb1b1b1ffffff7f7f7f7f7f7fa8a8a8ffffff818181 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f8f8f8fc7c7c7d3d3d3b1b1b17f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8c8c8cededed7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfde5e5e56464647070707070706d6d6d808080eaeaeaf4f4f4 -c2c2c28787878a8a8aa9a9a9f6f6f6d6d6d66c6c6c3030305353535454545b5b5b -b9b9b9fefefee0e0e0a1a1a1838383949494d2d2d2ffffffd2d2d27a7a7a515151 -545454565656a7a7a7f0f0f0ffffffc2c2c28e8e8e838383aeaeaeefefefffffff -a0a0a05c5c5c565656555555575757cacacafbfbfbeaeaea949494878787898989 -dfdfdffdfdfdf2f2f2787878595959545454545454666666e9e9e9ffffffd2d2d2 -888888848484969696f2f2f2fdfdfd9f9f9f6262626e6e6e707070606060949494 -fffffffefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffd4d4d48080806c6c6c -7676766c6c6c838383dbdbdbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbababa -878787ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf2f2f2adbdce5a7da7797979787878 -787878787878787878787878787878787878787878787878787878787878787878 -7878787878787676766e6e6e5477a04f81bd5f6e81727272787878797979797979 -797979797979797979797979797979797979797979797979797979797979797979 -797979787878727272606d7e4f81bd5378a36e6e6e767676797979797979797979 -7979797979797979797979797979797979797979797a7a7a7a7a7a7a7a7a7a7a7a -7979797777776d6d6d517bae4f81bd656d767575757979797a7a7a7a7a7a7a7a7a -7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -6a7b8f7093bae9e9e9fbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee -8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -fdfdfda7a7a7d8d8d8d3d3d37f7f7f7f7f7f7f7f7fcbcbcbd3d3d3a5a5a5ffffff -7f7f7f7f7f7fa8a8a8ffffff8181817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffff -fffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7febebebafafaf989898bebebe7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f8c8c8cededed7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfcdddddd797979ededed -eaeaeae0e0e0868686d3d3d3e3e3e3bbbbbb878787888888a7a7a7d0d0d0616161 -1313133f3f3f7d7d7d7b7b7ba9a9a9ddddddfdfdfddfdfdfa0a0a0848484959595 -d0d0d0fdfdfdebebebc2c2c29191917575758f8f8fd1d1d1f4f4f4ffffffc0c0c0 -8e8e8e848484aaaaaaeeeeeefcfcfcd2d2d2adadad7a7a7a858585a9a9a9e6e6e6 -fdfdfdeaeaea939393858585898989dfdfdff9f9f9f8f8f8c4c4c4a2a2a2717171 -929292bbbbbbf4f4f4fefefed2d2d2878787848484969696e6e6e6ececec7a7a7a -a4a4a4ebebebeeeeeeb1b1b1727272fffffffefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffc4c4c46e6e6eb8b8b8f5f5f5fffffff7f7f7c2c2c2bdbdbdffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffbababa878787ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f3f3f3afbfd05c81ac7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b7b7b7373735679a24f81bd -6170837777777d7d7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7d7d7777776471814f81bd5479a5 -7272727b7b7b7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7d7d7b7b7b717171527caf4f81bd687079 -7979797d7d7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e6c7e937295bdeaeaeafbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7ffdfdfda7a7a7a6a6a6fbfbfb8989897f7f7f -868686f9f9f99f9f9fa5a5a5ffffff7f7f7f7f7f7fa8a8a8ffffff8181817f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a5 -99afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f818181 -fcfcfc8989897f7f7f7f7f7f7f7f7f9f9f9fa1a1a1bdbdbdcecece9e9e9e7f7f7f -7f7f7f919191c8c8c8cccccc9b9b9b7f7f7f7f7f7f919191c8c8c8cccccc9b9b9b -7f7f7f7f7f7f959595cacacacccccc9595958c8c8cedededa4a4a4cfcfcfb1b1b1 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfcdddddd818181fcfcfcfcfcfceeeeee7a7a7a8686869494948c8c8c -858585888888a3a3a3b0b0b0272727242424898989a8a8a89e9e9ef0f0f0ffffff -fefefee0e0e0a0a0a0848484959595d0d0d0fdfdfdfffffffefefecbcbcb939393 -c4c4c4fefefefcfcfcffffffc0c0c08e8e8e848484aaaaaaeeeeeefbfbfbfefefe -f0f0f09d9d9dafafafefefeffefefefefefee9e9e9939393858585898989dfdfdf -f8f8f8fafafaffffffdbdbdb8b8b8bccccccfafafafafafafefefed2d2d2888888 -8686868787879393939c9c9c5a5a5ab3b3b3fbfbfbffffffc1c1c17a7a7affffff -f9f9f9fcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff2f2f2757575b7b7b7ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffe7e7e7bbbbbbb6b6b6dbdbdbffffff -ffffffffffffcccccceaeaeae3e3e3b6b6b6c1c1c1f9f9f9ffffffffffffffffff -f7f7f7c5c5c5b2b2b2c9c9c9fcfcfcffffffffffffe3e3e3d3d3d3e8e8e8afafaf -d7d7d7ffffffe7e7e7bababaafafafc4c4c4fafafaffffffffffffbababa878787 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7c7c7c7474745679a24f81bd6372847878787e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7878786572824f81bd5479a57373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c727272527caf4f81bd69717b7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f94 -7295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5 -657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7ffdfdfd -a7a7a7818181f2f2f2b9b9b97f7f7fb6b6b6eaeaea7f7f7fa5a5a5ffffff7f7f7f -7f7f7fa8a8a8ffffff8181817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffffffffff -fcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fcbcbcbeaeaeaa7a7a77f7f7f7f7f7fb6b6b6 -f2f2f2abababa5a5a5f5f5f58a8a8a878787ececec9d9d9da0a0a0f0f0f08d8d8d -878787ececec9d9d9da0a0a0f0f0f08d8d8d8a8a8af1f1f1afafaf9f9f9fb3b3b3 -8c8c8cfcfcfcc8c8c89c9c9cececec9e9e9e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfcdddddd808080fcfcfcfefefe -eeeeee7474747d7d7d8f8f8f8a8a8a878787878787a6a6a6cbcbcb7373736d6d6d -bdbdbd9f9f9f9c9c9ce9e9e9f9f9f9f8f8f8dcdcdca0a0a0848484959595cecece -f9f9f9f9f9f9f6f6f6c4c4c4919191bfbfbff7f7f7f9f9f9f9f9f9bebebe8f8f8f -838383aaaaaae8e8e8f9f9f9f9f9f9e8e8e89c9c9caeaeaee9e9e9f7f7f7f8f8f8 -e8e8e8939393878787898989dcdcdcf7f7f7f9f9f9f9f9f9d6d6d6898989c8c8c8 -f4f4f4f9f9f9f9f9f9cfcfcf878787878787858585898989919191565656b1b1b1 -fbfbfbffffffc1c1c1787878fffffffbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcacaca -6e6e6ef9f9f9ffffffffffffffffffffffffffffffffffffffffffffffffd0d0d0 -757575adadada5a5a5727272bdbdbdffffffffffff8989899696967f7f7fa6a6a6 -7b7b7b909090fffffffffffff2f2f2808080989898b2b2b27e7e7e8d8d8dfefefe -ffffffbababa8888887a7a7a9b9b9bb7b7b7e3e3e3797979a8a8a8b5b5b5828282 -909090ffffffffffffbababa878787ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3 -b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7474745578a24f81bd637284 -7878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786572824f81bd5479a5737373 -7c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272527cae4f81bd69717b7a7a7a -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7ffdfdfda7a7a77f7f7fc3c3c3ececec808080ebebeb -b7b7b77f7f7fa5a5a5ffffff7f7f7f7f7f7fa8a8a8ffffff8181817f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afca -f0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -aaaaaae9e9e9dedede828282b6b6b6c4c4c47f7f7f7f7f7fd7d7d7abababababab -dddddda5a5a5a5a5a5e1e1e1ababababababdddddda5a5a5a5a5a5e1e1e1ababab -adadadd9d9d97f7f7f7f7f7f7f7f7f8c8c8cefefef7f7f7f7f7f7fc6c6c6b4b4b4 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfddcdcdc767676e6e6e6e5e5e5d9d9d9828282c0c0c0d2d2d2b0b0b0878787 -8888888d8d8d8f8f8fa5a5a5c2c2c2b8b8b8979797949494bcbcbcc4c4c4c2c2c2 -b3b3b39595958484848c8c8ca9a9a9bfbfbfc0c0c0bebebea6a6a68d8d8da4a4a4 -c2c2c2c4c4c4c1c1c1a5a5a58d8d8d8383839a9a9ab8b8b8c2c2c2c5c5c5b9b9b9 -9595959d9d9dbcbcbcc2c2c2c5c5c5b5b5b58d8d8d8888888a8a8ab5b5b5c0c0c0 -c2c2c2c4c4c4adadad8c8c8cabababc0c0c0c4c4c4c5c5c5acacac888888878787 -929292d0d0d0d9d9d9767676a2a2a2e2e2e2e6e6e6b0b0b0767676fffffffbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffb1b1b1818181ffffffffffffe7e7e7b1b1b1b1b1b1 -b1b1b1dbdbdbfffffffdfdfd7c7c7cc5c5c5ffffffffffffc3c3c3737373fbfbfb -ffffff898989888888f5f5f5ffffffdcdcdc6c6c6cebebebffffffaaaaaa949494 -fffffffffffff3f3f36d6d6dd1d1d1ffffffbababa6c6c6cd2d2d2ffffffffffff -fbfbfbf9f9f9ffffffffffffdddddd6c6c6cf3f3f3ffffffbababa878787ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7c7c7c7474745578a24f81bd6372847878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7878786471814f81bd557aa67373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -727272527cae4f81bd69717b7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bd -eaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7ffdfdfda7a7a7 -7f7f7f919191ffffffc2c2c2fafafa8787877f7f7fa5a5a5ffffff7f7f7f7f7f7f -a8a8a8ffffff8181817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfc -efefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f818181e7e7e7aaaaaab6b6b6c2c2c2 -7f7f7f7f7f7fd0d0d0aeaeaeb3b3b3e0e0e0b3b3b3b3b3b3b3b3b38e8e8eb3b3b3 -e0e0e0b3b3b3b3b3b3b3b3b38e8e8eb6b6b6c8c8c87f7f7f7f7f7f7f7f7f8c8c8c -ededed7f7f7f7f7f7fc2c2c2b6b6b67f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefee3e3e35858585f5f5f626262616161 -7b7b7bedededf5f5f5c2c2c2878787838383727272707070868686858585848484 -868686868686838383828282828282838383868686878787868686868686868686 -838383838383868686888888848484828282828282828282858585878787878787 -878787858585848484878787848484838383828282828282828282828282848484 -878787888888858585828282828282848484848484838383848484848484828282 -828282828282878787848484858585959595f9f9f9ffffff9d9d9d565656616161 -626262555555949494fefefefcfcfcfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffafafaf7e7e7e -ffffffffffffe6e6e6abababababab7b7b7baaaaaaffffffe9e9e96c6c6cb9b9b9 -c5c5c5c5c5c5b5b5b56c6c6ce8e8e8ffffff898989b9b9b9fffffffffffff7f7f7 -6c6c6cddddddffffff8686869b9b9bc5c5c5c5c5c5c5c5c5797979b7b7b7ffffff -bababa858585ffffffffffffffffffffffffffffffe8e8e8d5d5d5c3c3c36c6c6c -e8e8e8ffffffbababa878787fffffffbfbfbbababab9b9b9b9b9b9d3d3d3ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3b0c0d1 -5d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7474745679a24f81bd627184787878 -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786471814f81bd557aa67373737c7c7c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272527cae4f81bd69717b7a7a7a7e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7ffdfdfda7a7a77f7f7f7f7f7fdfdfdfffffffcecece7f7f7f -7f7f7fa5a5a5ffffff7f7f7f7f7f7fa8a8a8ffffff9696969494949494948f8f8f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0 -fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8989898f8f8f7f7f7f -808080e5e5e5a2a2a2b6b6b6e0e0e0838383838383eeeeee9696969c9c9ce6e6e6 -8181817f7f7f7f7f7f7f7f7f9c9c9ce6e6e68181817f7f7f7f7f7f7f7f7fa1a1a1 -e6e6e68181817f7f7f9595958c8c8cededed7f7f7f7f7f7fc2c2c2b6b6b67f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fafafae9e9e9e0e0e0e5e5e5e1e1e1eeeeeefbfbfbf4f4f4bebebe838383787878 -6d6d6d898989888888858585868686838383848484868686878787878787878787 -878787878787868686868686878787888888888888888888878787878787878787 -878787868686858585878787878787858585858585868686838383848484898989 -888888878787878787878787878787878787878787868686868686878787878787 -878787878787878787858585878787878787878787888888848484858585969696 -f6f6f6fcfcfcf7f7f7e8e8e8e3e3e3e4e4e4e7e7e7f3f3f3f9f9f9fcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffc6c6c66d6d6df6f6f6ffffffffffffffffffffffff8f8f8f -aaaaaaffffffdddddd6c6c6ca8a8a8afafafafafafafafafb2b2b2f9f9f9ffffff -898989b9b9b9fffffffffffffafafa6c6c6cdbdbdbffffff7b7b7b919191afafaf -afafafafafafafafafe0e0e0ffffffbababa878787fffffffffffffffffff4f4f4 -8c8c8c848484a3a3a3a0a0a06c6c6ce8e8e8ffffffbababa878787fffffff9f9f9 -a9a9a9a8a8a8a8a8a8c8c8c8ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c -7474745679a24f81bd6271847878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e787878 -6471814f81bd557aa77373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272 -527cae4f81bd69717b7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaea -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7ffcfcfca5a5a57f7f7f -7f7f7facacacffffff9a9a9a7f7f7f7f7f7fa4a4a4fdfdfd7f7f7f7f7f7f9f9f9f -fefefeffffffffffffffffffefefef7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef -93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f8d8d8de9e9e9e6e6e6edededc9c9c97f7f7fb6b6b6e1e1e1e9e9e9 -ecececc6c6c67f7f7f7f7f7fc5c5c5e9e9e9d9d9d9e4e4e48c8c8c7f7f7fc5c5c5 -e9e9e9d9d9d9e4e4e48c8c8c7f7f7fd0d0d0ebebebe8e8e8b8b8b88b8b8bececec -7f7f7f7f7f7fc1c1c1b6b6b67f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefbfbfbfcfcfcfefefefffffffbfbfb -fcfcfcf6f6f6c3c3c37b7b7b6969697e7e7e898989898989868686888888898989 -8a8a8a8787878787878787878686868888888888888a8a8a878787858585878787 -888888878787898989888888878787868686878787888888888888888888878787 -8888888787878686868787878a8a8a888888878787878787878787878787888888 -888888878787868686868686878787898989888888858585878787888888878787 -8888888a8a8a858585858585969696f5f5f5f9f9f9fbfbfbffffffffffffffffff -fffffffcfcfcfefefefefefefefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff0f0f0737373adadad -ffffffffffffffffffffffff8f8f8faaaaaaffffffefefef6c6c6cdfdfdfffffff -ffffffffffffffffffffffffffffff898989b9b9b9fffffffffffffafafa6c6c6c -dbdbdbffffff8d8d8daeaeaeffffffffffffffffffffffffffffffffffffbababa -878787ffffffffffffffffffb7b7b7858585fdfdfdffffffeeeeee6c6c6ce8e8e8 -ffffffbababa878787ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7474745679a24f81bd6271847878787e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7878786572814f81bd557aa77373737c7c7c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c727272527cae4f81bd69717b7a7a7a7e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f8282827f7f7f7f7f7f7f7f7f7f7f7f8282827f7f7f7f7f7f7f7f7f -7f7f7f8282827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfc -fffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f888888828282 -7f7f7f7f7f7fb6b6b6c2c2c28282828484847f7f7f7f7f7f7f7f7f7f7f7f818181 -8989897f7f7f7f7f7f7f7f7f7f7f7f8181818989897f7f7f7f7f7f7f7f7f7f7f7f -8484848383837f7f7f7f7f7f8181817f7f7f7f7f7f8080807f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80ba -dcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff2f2f2fffffffffffffffffffffffffefefefffffffefefe -fffffffefefefcfcfcfcfcfcfbfbfbfefefefefefefffffffcfcfcfbfbfbfcfcfc -fcfcfcf9f9f9fcfcfcfafafafafafafcfcfcf8f8f8d0d0d08d8d8d969696afafaf -a4a4a48f8f8f8b8b8ba5a5a5b0b0b0aeaeaea6a6a68a8a8a969696aaaaaaacacac -adadadaeaeaeababab9b9b9b8f8f8fa1a1a1aeaeaeaaaaaaaaaaaa909090878787 -a3a3a3abababadadadb0b0b0adadada1a1a18d8d8d989898acacacadadadacacac -a8a8a88787878c8c8cabababafafafb0b0b0afafafb0b0b09999998686869e9e9e -aeaeaeafafafafafafa4a4a4848484a0a0a0b1b1b1afafafacacacbababafafafa -fafafafcfcfcfefefefefefefefefefefefefefefefffffffefefefefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffc0c0c06c6c6ca7a7a7e3e3e3f6f6f6dfdfdf808080aaaaaa -ffffffffffff909090939393f5f5f5fffffff7f7f7d5d5d5ffffffffffff898989 -b9b9b9fffffffffffffafafa6c6c6cdbdbdbffffffc1c1c1777777e0e0e0ffffff -fefefedbdbdbf3f3f3ffffffbababa878787ffffffffffffffffffb3b3b37a7a7a -f6f6f6fbfbfbaaaaaa6c6c6ce8e8e8ffffffbababa878787ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c747474 -5779a24f81bd6272857878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e787878657281 -4f81bd557aa77373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272527cae -4f81bd69717b7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc8 -6580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fb6b6b6c2c2c27f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -fffffffefefefcfcfcfcfcfcfbfbfbfafafaf9f9f9fafafafdfdfdf8f8f8fafafa -f9f9f9f9f9f9fbfbfbfbfbfbf9f9f9f9f9f9f9f9f9fcfcfcfdfdfdfafafafbfbfb -f6f6f6d1d1d1bababaf8f8f8fcfcfce9e9e9a0a0a09d9d9de7e7e7fefefefcfcfc -e9e9e9969696b5b5b5f2f2f2fcfcfcf9f9f9f9f9f9f9f9f9c8c8c89d9d9dcfcfcf -fdfdfdfcfcfcf8f8f8adadad919191dadadaf9f9f9fefefefcfcfcfefefedbdbdb -929292aeaeaeefefeffbfbfbfdfdfdededed929292a2a2a2efefeffefefefbfbfb -fafafaffffffc0c0c0868686c8c8c8fafafafbfbfbffffffdbdbdb858585d3d3d3 -fcfcfcf9f9f9fefefefcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6898989 -7070706c6c6c6e6e6e909090dfdfdfffffffffffffededed9393936e6e6e777777 -717171a3a3a3ffffffffffff8a8a8abababafffffffffffffbfbfb6d6d6ddcdcdc -fffffffdfdfdb0b0b0717171757575717171868686eeeeeeffffffbbbbbb898989 -fffffffffffffffffff2f2f2878787707070777777b3b3b3747474eaeaeaffffff -bbbbbb898989ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7c7c7c7474745779a24f81bd6272857878787e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7878786571814f81bd547aa67373737c7c7c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c727272527cae4f81bd69717b7a7a7a7e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffff -fffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f8484848686867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1 -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2fffffffffffffffffffbfbfbe3e3e3d3d3d3fcfcfcf9f9f9 -f9f9f9f7f7f7e7e7e7e9e9e9f8f8f8e9e9e9c7c7c7d4d4d4d8d8d8f1f1f1f9f9f9 -f2f2f2dadadaefefeff9f9f9fbfbfbe6e6e6b4b4b4d9d9d9fcfcfcfbfbfbe3e3e3 -9f9f9f9b9b9be7e7e7fcfcfcfcfcfce3e3e3929292b4b4b4f0f0f0fafafafdfdfd -fcfcfcf9f9f9c5c5c5999999cbcbcbfbfbfbfefefef7f7f7aaaaaa909090d8d8d8 -f9f9f9fdfdfdfefefefcfcfcdadada929292acacaceaeaeafafafafafafae9e9e9 -929292a0a0a0eaeaeafdfdfdfafafafafafaf9f9f9bebebe868686c6c6c6f3f3f3 -fbfbfbf9f9f9d5d5d5848484d1d1d1f8f8f8fcfcfcfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdeeeeeefbfbfbffffffffffffffffff -fffffffffffffffffffafafaeeeeeefbfbfbfffffffffffffffffffdfdfdffffff -fffffffffffffffffffbfbfbfffffffffffffffffffffffffefefeefefeff7f7f7 -fffffffffffffffffffffffffdfdfdfffffffffffffffffffffffffffffff2f2f2 -fcfcfcfffffffcfcfcfffffffffffffffffffdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7474745779a2 -4f81bd6372867878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7878786571814f81bd -547aa67373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272527cae4f81bd -69727c7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffff -fafafaaeaeae767676f5f5f5c5c5c5d8d8d8bcbcbca4a4a4959595cacacacccccc -5959597171716a6a6aa4a4a4dfdfdfbebebe717171a7a7a7d5d5d5d7d7d7f3f3f3 -eaeaeafdfdfdf2f2f2d2d2d2a7a7a77a7a7a767676adadaddadadae4e4e4a9a9a9 -7474748b8b8bb6b6b6dfdfdffefefee7e7e7c1c1c1939393787878999999cdcdcd -e6e6e6cbcbcb8282827474749d9d9dc6c6c6f3f3f3fcfcfcd8d8d8a5a5a5737373 -828282adadaddededecececeacacac7070707d7d7db1b1b1e9e9e9fcfcfcf1f1f1 -bfbfbf9292926c6c6c919191bababae8e8e8c4c4c4a1a1a1686868999999c0c0c0 -f7f7f7fbfbfbfafafaffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7c7c7c7474745679a14f81bd6372867878787e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7979796571814f81bd547aa67373737c7c7c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7c7c7c727272537cae4f81bd69727c7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee -8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffff -fffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2fffffffffffffffffffbfbfbb7b7b7717171b7b7b74d4d4d5e5e5e -505050808080323232999999d3d3d35858586e6e6e5959593232327a7a7a717171 -5f5f5f5e5e5e787878909090fbfbfbfefefefcfcfce5e5e58585855b5b5b777777 -727272666666878787adadad5050507676767575756060609f9f9ffafafabababa -6f6f6f7070707676766a6a6a818181a3a3a37777776e6e6e7575756b6b6b656565 -d8d8d8fefefe8484846d6d6d7575757777775757579b9b9b6c6c6c6b6b6b767676 -7676764c4c4cb0b0b0f8f8f8c7c7c76060607373737777777878784d4d4db1b1b1 -585858727272757575787878525252ddddddfdfdfdfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7474745679a14f81bd -6372867878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7979796471804f81bd557aa7 -7373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272537cae4f81bd69727c -7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a5 -99afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2fffffffffffffffffffcfcfc -bebebe7171719e9e9e7d7d7d6d6d6d626262999999626262bfbfbfd2d2d27e7e7e -9999997b7b7b616161a9a9a99d9d9d888888838383848484adadadfcfcfcffffff -fefefee4e4e4969696bfbfbffffffff6f6f6bebebe898989b3b3b3989898ffffff -ffffffaeaeaea8a8a8f7f7f7bdbdbdadadadefefefffffffe1e1e1b2b2b29f9f9f -a0a0a0e9e9e9ffffffe6e6e6888888dadadafcfcfc909090d6d6d6fefefeffffff -aeaeaea4a4a4787878d6d6d6ffffffffffff8d8d8db0b0b0f7f7f7c0c0c0a3a3a3 -f4f4f4ffffffffffff818181acacac808080efefefffffffffffff7a7a7adedede -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7c7c7c7474745678a14f81bd6272857878787e7e7e7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7e7e7e7979796471804f81bd557aa77373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7c7c7c727272537cad4f81bd68717c7a7a7a7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f94 -7295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5 -657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffffffffff -fcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f919191c9c9c9c9c9c9bfbfbf919191 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f2f2f2fffffffffffffffffffffffffafafaf2f2f2fafafaf8f8f8bababa848484 -dadadaf7f7f7f8f8f8f8f8f8efefeff6f6f6f9f9f9f2f2f2fefefef7f7f7f4f4f4 -f8f8f8f3f3f3fafafafefefefffffffefefee4e4e4959595bababafffffff4f4f4 -b8b8b8898989b2b2b2969696fffffffafafaabababa8a8a8f7f7f7bdbdbda9a9a9 -ebebebffffffddddddafafaf9f9f9f9f9f9fe8e8e8ffffffe1e1e1868686dadada -fcfcfc909090cececefbfbfbffffffabababa5a5a5787878cfcfcffdfdfdffffff -8a8a8ab2b2b2f7f7f7c2c2c29f9f9ff3f3f3fefefeffffff7f7f7fadadad7f7f7f -eeeeeefefefeffffff797979dededefefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3 -b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7474745678a14f81bd627285 -7878787e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7979796471804f81bd547aa7737373 -7c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272537cad4f81bd68717c7a7a7a -7e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8181817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afca -f0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -a8a8a8e0e0e09f9f9fb9b9b9f6f6f68989897f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff2f2f2fffffffffffffffffffefefefbfbfb -fcfcfcfcfcfcfbfbfbfbfbfbf7f7f7fafafafbfbfbfbfbfbfcfcfcfefefefafafa -fcfcfcfafafafefefefcfcfcfcfcfcfcfcfcfbfbfbfafafafefefefffffffefefe -e4e4e4949494b7b7b7f9f9f9eeeeeeb7b7b7888888b2b2b2949494f8f8f8f7f7f7 -a9a9a9a7a7a7f7f7f7bdbdbda7a7a7e7e7e7f9f9f9d9d9d9aeaeae9f9f9f9e9e9e -e2e2e2f9f9f9dddddd858585dadadafcfcfc909090ccccccf5f5f5f9f9f9a8a8a8 -a4a4a4777777cdcdcdf7f7f7f9f9f9888888b2b2b2f7f7f7c1c1c19e9e9eededed -f9f9f9f9f9f97e7e7eaeaeae7c7c7ce8e8e8f9f9f9f9f9f9787878ddddddfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed -6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7c7c7c7474745678a14f81bd6272857878787d7d7d7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e -7979796571804f81bd547aa77373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c -727272537cad4f81bd67707b7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bd -eaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -d0d0d0ebebebebebebebebebe9e9e98181817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7faaaaaaf0f0f0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfc -efefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fa8a8a8d6d6d67f7f7f7f7f7feaeaea9d9d9d -7f7f7f919191c8c8c8cccccc9b9b9b7f7f7f7f7f7f959595cacacacccccc959595 -7f7f7f8f8f8fc5c5c5cfcfcfacacac7f7f7f7f7f7f919191c9c9c9cfcfcfc8c8c8 -aaaaaa7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2 -fffffffffffffffffffffffffbfbfbfcfcfcfefefefefefefefefefefefefcfcfc -fcfcfcfefefefcfcfcf9f9f9fafafafcfcfcfefefefefefefcfcfcfefefefcfcfc -fcfcfcfffffffefefefffffffefefee5e5e58c8c8c888888bababab2b2b28c8c8c -878787afafaf737373bababab8b8b8858585a3a3a3f7f7f7bdbdbd8b8b8bababab -bcbcbca2a2a2969696a2a2a2898989abababbbbbbba2a2a2747474d9d9d9fefefe -8a8a8a9a9a9ab3b3b3bababa7c7c7c9f9f9f7474749c9c9cb9b9b9bbbbbb6a6a6a -b2b2b2f7f7f7c3c3c37d7d7db2b2b2bcbcbcbbbbbb676767b1b1b16b6b6baeaeae -babababababa656565e0e0e0fefefefcfcfcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3b0c0d1 -5d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7474745779a14f81bd627286787878 -7d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7979796571804f81bd547aa77373737c7c7c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272527bac4f81bd68717c7979797e7e7e -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe8e8e8b6b6b68f8f8f8f8f8f8e8e8e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f8585859696967f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0 -fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fa8a8a8 -dedede989898b3b3b3ebebeb848484878787ececec9d9d9da0a0a0f0f0f08d8d8d -8a8a8af1f1f1afafaf9f9f9fb3b3b3878787efefefa8a8a8989898e3e3e3b0b0b0 -7f7f7fe9e9e99d9d9da3a3a3f3f3f38d8d8d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1f1f1 -afafaf6d6d6d7272727070707a7a7ab8b8b8cdcdcd7575756f6f6f6f6f6f7c7c7c -bfbfbffbfbfbd4d4d48b8b8b6e6e6e7070706f6f6f9c9c9ccccccc9c9c9c707070 -7171716d6d6d959595e6e6e6ffffffafafaf7676767272727171716d6d6dbbbbbb -a2a2a2777777707070717171737373d0d0d0fafafadfdfdf7d7d7d6f6f6f717171 -6e6e6e797979d6d6d68787877171716f6f6f6f6f6f7e7e7eebebebfdfdfdfcfcfc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e8 -0000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c -7474745779a14f81bd6272867878787d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e797979 -65717f4f81bd547aa87373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272 -527bac4f81bd68717c7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaea -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe8e8e8 -ababab7f7f7f7f7f7f7f7f7f7f7f7f909090aeaeae949494c4c4c4bdbdbd858585 -7f7f7f7f7f7f8e8e8ec0c0c0c9c9c9bfbfbfbfbfbf878787909090b5b5b57f7f7f -7f7f7fbcbcbc888888bababac5c5c59797977f7f7f7f7f7f7f7f7f9d9d9dc5c5c5 -c1c1c19494947f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef -93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7fa8a8a8efefefd2d2d2f6f6f69d9d9d7f7f7fababab -dddddda5a5a5a5a5a5e1e1e1abababadadadd9d9d97f7f7f7f7f7f7f7f7fadadad -d1d1d17f7f7f7f7f7fa7a7a7dadada808080f6f6f6838383818181f4f4f4808080 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefffffffffffffffffffffffffdfdfdfcfcfcfdfdfdfdfdfdfefefeffffff -fffffffefefefffffffffffffffffffffffffffffffffffffcfcfcfbfbfbffffff -fffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffcfcfc -fcfcfcfcfcfcfffffffffffffffffffffffffffffffcfcfcffffffffffffffffff -fffffffffffffbfbfbf8f8f8fcfcfcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7474745779a14f81bd6272867878787d7d7d -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7e7e7e79797965717f4f81bd547aa87373737c7c7c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7c7c7c727272527bac4f81bd67707b7979797e7e7e7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7fe8e8e8b3b3b38a8a8a8a8a8a8383837f7f7fa3a3a3 -f1f1f1e3e3e3b5b5b5e0e0e0d6d6d67f7f7f848484f0f0f0b7b7b7b1b1b1f7f7f7 -c6c6c6858585a3a3a3eaeaea7f7f7f7f7f7ff9f9f9e6e6e6bebebec7c7c7f8f8f8 -8787877f7f7fa9a9a9ecececaaaaaac0c0c0f5f5f59292927f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfc -fffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fa8a8a8d6d6d6 -7f7f7fa7a7a7e5e5e57f7f7fb3b3b3e0e0e0b3b3b3b3b3b3b3b3b38e8e8eb6b6b6 -c8c8c87f7f7f7f7f7f7f7f7fb6b6b6c8c8c87f7f7f7f7f7f9f9f9fdedede7f7f7f -e4e4e4e4e4e4e2e2e2bdbdbd7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80ba -dcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefcfcfc -fbfbfbfbfbfbfcfcfcfefefefbfbfbf7f7f7ebebebecececececececececf3f3f3 -fafafafafafaebebebecececefefeff8f8f8fafafafafafafcfcfcfefefefefefe -fcfcfcfbfbfbeeeeeedcdcdce8e8e8fbfbfbfbfbfbfafafafbfbfbfafafafbfbfb -f5f5f5eaeaeafefefefcfcfcf9f9f9fafafafafafafcfcfcf9f9f9fcfcfcfefefe -f9f9f9fcfcfcfcfcfcfffffffffffffffffffcfcfcf9f9f9fbfbfbfcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff -6c6ce8edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c747474 -5678a04f81bd6272867878787d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e79797965717f -4f81bd547aa87373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272537cad -4f81bd67707b7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe8e8e8f3f3f3 -ececececececb7b7b77f7f7fa3a3a3f3f3f38787877f7f7f9a9a9af8f8f87f7f7f -9b9b9bededed7f7f7f7f7f7fd2d2d2b9b9b97f7f7fa3a3a3eaeaea7f7f7f7f7f7f -f9f9f9a7a7a77f7f7f7f7f7fefefefa3a3a37f7f7fe8e8e8a6a6a67f7f7f7f7f7f -d7d7d7c1c1c17f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc8 -6580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7fa8a8a8d6d6d67f7f7f7f7f7fededed9c9c9c9c9c9ce6e6e6 -8181817f7f7f7f7f7f7f7f7fa1a1a1e6e6e68181817f7f7f9595959e9e9ee8e8e8 -8282827f7f7fc3c3c3c1c1c18a8a8aeaeaea9999999191918080807f7f7f7f7f7f -9e9e9e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefffffffefefefefefefdfdfdfcfcfca2a2a2 -6c6c6c6c6c6c6c6c6c6c6c6ca3a3a3fdfdfdd3d3d36c6c6c6c6c6c6c6c6c707070 -a6a6a6f7f7f7fcfcfcfefefefefefed1d1d17f7f7f6c6c6c7575756c6c6c828282 -d8d8d8fcfcfcfcfcfcfdfdfdfcfcfc9393936c6c6ccfcfcffffffffcfcfcfafafa -fcfcfcfcfcfcfafafafcfcfcfefefefefefefefefefffffffefefefefefefefefe -fefefefbfbfbfcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffdfdfdf3f3f3b0c0d15d82ad7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7c7c7c7474745678a04f81bd6272867878787d7d7d7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7e7e7e7979796571804f81bd547aa77373737c7c7c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7e7e7e7c7c7c727272537cad4f81bd67707b7979797e7e7e7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6d7f947295bdeaeaeafbfbfbffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7fe8e8e8ababab7f7f7f7f7f7f7f7f7f7f7f7fa3a3a3eaeaea -7f7f7f7f7f7f8e8e8effffff8080808a8a8af9f9f9a8a8a8959595edededa1a1a1 -7f7f7fa3a3a3eaeaea7f7f7f7f7f7ff9f9f99595957f7f7f7f7f7fe3e3e3aaaaaa -7f7f7ffcfcfcececece8e8e8e8e8e8f3f3f3c5c5c57f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffff -fffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fa7a7a7d5d5d57f7f7f -7f7f7fbababacdcdcd7f7f7fc5c5c5e9e9e9d9d9d9e4e4e48c8c8c7f7f7fd0d0d0 -ebebebe8e8e8b8b8b87f7f7fc8c8c8ebebebe2e2e2d9d9d9868686818181eaeaea -d2d2d2d6d6d6ededed9d9d9d858585fbfbfb8888887f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1 -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff9f9f9f999999fbfbfbfbfbfbfbfbfbfefefeffffff -d0d0d06c6c6cfdfdfdfdfdfdd5d5d5737373aeaeaeffffffffffffc4c4c46e6e6e -b8b8b8f5f5f5fffffff7f7f7c2c2c2bdbdbdfffffffffffffffffff0f0f06e6e6e -8b8b8b9b9b9bffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8 -edededfbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff9f9f9bfbfbffefefecbcbcbb1b1b1cececeffffffffffffffffffe0e0e0 -cdcdcdffffffffffffffffffd0d0d0ddddddfffffff9f9f9bebebef9f9f9b9b9b9 -bababaffffffe2e2e2d5d5d5f3f3f3bbbbbbb6b6b6e3e3e3ffffffffffffffffff -ffffffd8d8d8b7b7b7b8b8b8dcdcdcfffffffffffffffffff7f7f7c0c0c0afafaf -c9c9c9fdfdfdfffffffffffff7f7f7c5c5c5b2b2b2c9c9c9fcfcfcffffffffffff -ffffffffffffffffffffffffffffffe3e3e3b9b9b9b5b5b5e3e3e3ffffffffffff -ffffffd8d8d8b7b7b7b8b8b8dcdcdcffffffffffffffffffcccccceaeaeacfcfcf -afafafefefefffffffffffffd4d4d4b3b3b3bfbfbfeeeeeeffffffffffffffffff -e5e5e5b7b7b7b2b2b2dededeffffffffffffffffffffffffffffffffffffffffff -fdfdfdf3f3f3b0c0d15d82ad7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c7c7c7474745778a0 -4f81bd6272867878787d7d7d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7979796571804f81bd -547aa77373737c7c7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7e7c7c7c727272537bac4f81bd -67717c7979797e7e7e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6d7f947295bdeaeaeafbfbfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe8e8e8ababab7f7f7f -7f7f7f7f7f7f7f7f7fa3a3a3eaeaea7f7f7f7f7f7f8e8e8effffff808080949494 -e8e8e8d5d5d5dcdcdcb1b1b17f7f7f7f7f7fa3a3a3eaeaea7f7f7f7f7f7ff9f9f9 -9595957f7f7f7f7f7fe3e3e3aaaaaa7f7f7ff6f6f69a9a9a7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f8080807f7f7f7f7f7f7f7f7f8080807f7f7f7f7f7f818181 -8989897f7f7f7f7f7f7f7f7f7f7f7f8484848383837f7f7f7f7f7f7f7f7f828282 -8484847f7f7f7f7f7fa5a5a5d6d6d67f7f7f7f7f7fbcbcbcc1c1c17f7f7f808080 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff9f9f9f9b9b9b -ffffffffffffffffffffffffffffffd0d0d06c6c6cfdfdfdffffffffffffa3a3a3 -858585fffffff2f2f2757575b7b7b7ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffbcbcbc8c8c8cd0d0d0707070f5f5f5ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fbfbfbededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffebebeb6d6d6d959595939393a5a5a5 -727272abababffffffffffffb5b5b58c8c8cffffffffffffffffff929292aeaeae -ffffffebebeb6c6c6c9191918f8f8f969696ffffffbababa8888887e7e7ea4a4a4 -959595707070d9d9d9ffffffffffffa6a6a6777777aaaaaaa3a3a3707070b6b6b6 -fffffffdfdfd8484849b9b9bbcbcbc979797e0e0e0fffffff2f2f2808080989898 -b2b2b27e7e7e8d8d8dfefefeffffffffffffffffffffffffffffffc9c9c96e6e6e -919191a6a6a6757575eaeaeaffffffa6a6a6777777aaaaaaa3a3a3707070b6b6b6 -ffffffffffff8989899191917d7d7d989898ddddddffffffa3a3a3828282b6b6b6 -919191767676e5e5e5ffffffe1e1e1727272b2b2b2b6b6b6949494ffffffffffff -fffffffffffffffffffffffffffffffdfdfdf3f3f3c3ccd64a7ebb5180b65180b6 -5180b65180b65180b65180b65180b65180b65180b65180b65180b65180b65180b6 -5180b65180b64f7db24a75a74874a74a79af4772a34c79ac507eb35180b65180b6 -5180b65180b65180b65180b65180b65180b65180b65180b65180b65180b65180b6 -5180b6507eb44d7aae4771a24a79af4874a94974a54f7db25180b65180b65180b6 -5180b65180b65180b65180b65180b65180b65180b65180b65180b65180b65180b6 -507fb54f7db24973a44875aa4a79af4772a24d7aae507eb45180b65180b65180b6 -5180b65180b65180b65180b65180b65180b65180b65180b65180b65180b65180b6 -4e7fb8829ebfeaeaeafbfbfbffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee -8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7fe8e8e8ababab7f7f7f7f7f7f7f7f7f7f7f7fa3a3a3eaeaea7f7f7f -7f7f7f8e8e8effffff808080a7a7a7ebebebadadada5a5a59898987f7f7f7f7f7f -a3a3a3eaeaea7f7f7f7f7f7ff9f9f99595957f7f7f7f7f7fe3e3e3aaaaaa7f7f7f -d5d5d5cdcdcd8080807f7f7f8585858888887f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffff -fffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8c8c8ce8e8e8d8d8d8 -d3d3d3e2e2e28e8e8e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff2f2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff9f9f9f9b9b9bffffffffffffffffffffffffffffffd0d0d0 -6c6c6cfdfdfdffffffffffffa3a3a38f8f8fffffffcacaca6e6e6ef9f9f9ffffff -ffffffffffffffffffffffffffffffffffffffffffffffff878787bfbfbffbfbfb -757575c4c4c4ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8ededed -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ebebeb6c6c6cb2b2b2ffffffffffffc5c5c56f6f6ff3f3f3ffffffb5b5b58c8c8c -ffffffffffffffffff929292aeaeaeffffffebebeb6c6c6ca2a2a2ffffffffffff -ffffffbababa727272ddddddffffffffffff949494949494ffffffdbdbdb6d6d6d -e5e5e5ffffffffffffc8c8c86f6f6fefefefeaeaea6c6c6cf0f0f0ffffffffffff -ffffffffffffaaaaaa949494fffffffffffff3f3f36d6d6dd1d1d1ffffffffffff -fffffffffffffbfbfb777777b2b2b2ffffffffffffefefeff9f9f9dbdbdb6d6d6d -e5e5e5ffffffffffffc8c8c86f6f6fefefefffffff8989897d7d7df3f3f3ffffff -ffffffdbdbdb727272f1f1f1ffffffffffff929292a0a0a0ffffffb9b9b98d8d8d -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f5f5f5dfdfdfb9bdc3a6acb3a3a9b0a2a8afa2a8afa2a8afa2a8afa2a8afa2a8af -a2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa2a8af9fa5ac979ca3898e9484898f -8e949a9ba0a7a0a6ada2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa2a8af -a2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa0a6ad9ca2a890959b84898f888d93 -969ca29fa5aca2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa2a8af -a2a8afa2a8afa2a8afa2a8afa2a8afa2a8af9fa5ac959ba1878c9284898f91969d -9ca2a9a1a7aea2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa2a8afa2a8af -a2a8afa2a8afa2a8afa2a8afa4aab1acb2b9cfcfd0edededfcfcfcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fe1e1e1fdfdfdfcfcfcfcfcfc -fbfbfb868686a2a2a2e9e9e97f7f7f7f7f7f8d8d8dfefefe8080808d8d8df3f3f3 -c9c9c9cccccce9e9e9dfdfdf7f7f7fa2a2a2e9e9e97f7f7f7f7f7ff8f8f8949494 -7f7f7f7f7f7fe2e2e2a9a9a97f7f7f8d8d8ddfdfdff2f2f2e8e8e8efefef9d9d9d -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a5 -99afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f8a8a8a8888887f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff2f2f2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff9f9f9f828282b1b1b1 -b1b1b1b1b1b1e0e0e0ffffffd0d0d06c6c6cfdfdfdfefefed6d6d6717171c0c0c0 -ffffffb1b1b1818181ffffffffffffe7e7e7b1b1b1b1b1b1b1b1b1dbdbdbffffff -ffffffe6e6e66e6e6ef1f1f1ffffffa3a3a38f8f8fffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbfb -ededed6666e80000ff6c6ce8edededfbfbfbffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffebebeb6c6c6ceaeaeafffffffffffff1f1f1 -6c6c6cdadadaffffffb5b5b58c8c8cffffffffffffffffff929292aeaeaeffffff -ebebeb6c6c6ce8e8e8ffffffffffffffffffbababa878787ffffffffffffffffff -c0c0c0777777ffffffb5b5b5888888fffffffffffffffffff9f9f96c6c6cd3d3d3 -fcfcfc8181818c8c8cd7d7d7ffffffffffffffffff8686869b9b9bc5c5c5c5c5c5 -c5c5c5797979b7b7b7ffffffffffffffffffffffffe6e6e66c6c6cdcdcdcffffff -ffffffffffffffffffb5b5b5888888fffffffffffffffffff9f9f96c6c6cd3d3d3 -ffffff898989b7b7b7ffffffffffffffffffb7b7b77d7d7dc5c5c5c5c5c5c5c5c5 -979797868686ffffffdedede6e6e6ea9a9a9eaeaeaffffffffffffffffffffffff -fffffffffffffffffffffffffefefef8f8f8e8e8e8d3d3d3c6c6c6c3c3c3c3c3c3 -c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3 -c3c3c3c1c1c1bcbcbcb2b2b2afafafb6b6b6bebebec2c2c2c3c3c3c3c3c3c3c3c3 -c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3 -c2c2c2bfbfbfb7b7b7afafafb2b2b2bbbbbbc1c1c1c3c3c3c3c3c3c3c3c3c3c3c3 -c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3 -c1c1c1bbbbbbb1b1b1afafafb8b8b8bfbfbfc2c2c2c3c3c3c3c3c3c3c3c3c3c3c3 -c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c5c5c5cdcdcd -dfdfdff2f2f2fdfdfdffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5 -657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8181817f7f7f7f7f7f -7f7f7f8181817f7f7fc7c7c7c6c6c67f7f7f7f7f7f8b8b8bffffff8686867f7f7f -8181817f7f7f7f7f7f8181817f7f7f7f7f7f7f7f7f8181817f7f7f7f7f7f7f7f7f -7f7f7f8585858a8a8a7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffffffffffffffff -fcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f6f6f6d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d38f8f8f7a7a7a979797979797979797bbbbbbd3d3d3b2b2b26c6c6c -7171716e6e6e717171a0a0a0d3d3d3d3d3d39b9b9b787878d3d3d3d3d3d3c1c1c1 -989898989898767676979797d3d3d3d3d3d39b9b9b858585d3d3d3d3d3d3b7b7b7 -6c6c6cc5c5c5d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0d0d0ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffbfbfbededed6666e80000ff6c6ce8edededfbfbfb -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebebeb -6c6c6ceaeaeafffffffffffff7f7f76c6c6cd5d5d5ffffffb5b5b58c8c8cffffff -ffffffffffff929292aeaeaeffffffebebeb6c6c6ceaeaeaffffffffffffffffff -bababa878787ffffffffffffffffffc6c6c6737373ffffffa8a8a8919191ffffff -ffffffffffffffffff6e6e6eccccccfffffff3f3f3adadad757575898989f1f1f1 -ffffff7b7b7b919191afafafafafafafafafafafafe0e0e0ffffffffffffffffff -ffffffd9d9d96c6c6cf3f3f3ffffffffffffffffffffffffa8a8a8919191ffffff -ffffffffffffffffff6e6e6eccccccffffff898989b9b9b9ffffffffffffffffff -acacac7b7b7bafafafafafafafafafafafafc5c5c5ffffffffffffdfdfdf989898 -6e6e6eabababfffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -f5f5f5ebebebe6e6e6e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4 -e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e3e3e3e1e1e1dddddddcdcdcdfdfdf -e2e2e2e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4 -e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e2e2e2dfdfdfdcdcdcdddddde1e1e1 -e3e3e3e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4 -e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e3e3e3e1e1e1dddddddcdcdcdfdfdfe3e3e3 -e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4 -e4e4e4e4e4e4e4e4e4e5e5e5e9e9e9f1f1f1fafafafefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fb2b2b2f3f3f3bdbdbd -b3b3b3dbdbdbd5d5d57f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afca -f0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff9f9f9f9b9b9bffffffffffff -ffffffffffffffffffd0d0d06c6c6ce6e6e6f0f0f0ffffffffffffffffffffffff -c6c6c66d6d6df6f6f6ffffffffffffffffffffffff8f8f8faaaaaafffffffefefe -7c7c7c8080809494949494949393936c6c6cb7b7b7ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffdfdfd9393fd9393faebebeb -6666e80000ff6b6be7ebebeb9090fa9797fdfdfdfdffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffebebeb6c6c6ce3e3e3ffffffffffffe0e0e06c6c6c -e7e7e7ffffffbbbbbb838383ffffffffffffffffff8b8b8baeaeaeffffffebebeb -6c6c6ceaeaeaffffffffffffffffffbababa828282ffffffffffffffffffafafaf -858585ffffffb9b9b97b7b7bfefefeffffffffffffeaeaea6c6c6ce1e1e1ffffff -fffffffffffff6f6f6828282b2b2b2ffffff8d8d8daeaeaeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffe9e9e96c6c6ce0e0e0ffffffffffff -ffffffffffffb9b9b97b7b7bfefefeffffffffffffeaeaea6c6c6ce1e1e1ffffff -898989b9b9b9ffffffffffffffffffbebebe7d7d7dffffffffffffffffffffffff -ffffffffffffffffffffffffffffffdbdbdb6c6c6ce3e3e3ffffffffffffffffff -fffffffffffffffffffffffffefefefdfdfdfbfbfbf9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fafafafcfcfc -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f9b9b9bb6b6b6b8b8b8a1a1a17f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfc -efefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff9f9f9f9b9b9bffffffffffffffffffffffffffffffd0d0d06c6c6cfdfdfd -fffffffffffffffffffffffffffffff0f0f0737373adadadffffffffffffffffff -ffffff8f8f8faaaaaaffffffd9d9d96e6e6ec9c9c9cdcdcdcdcdcdcdcdcd999999 -838383ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdf8f8f80c0cfe0000feb1b1ea6565e70000ff6a6ae6ababea0000ff1111fd -f8f8f8fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffebebeb6c6c6c -828282e3e3e3f6f6f6959595888888ffffffffffffd5d5d56d6d6dd8d8d8f6f6f6 -aaaaaa6e6e6eaeaeaeffffffebebeb6c6c6ceaeaeaffffffffffffffffffbababa -6c6c6ca3a3a3f3f3f3e2e2e2777777b8b8b8ffffffebebeb6f6f6fb7b7b7fafafa -f4f4f49797978c8c8cffffffe6e6e6dbdbdbfffffffafafa858585bababaffffff -c1c1c1777777e0e0e0fffffffefefedbdbdbf3f3f3ffffffffffffffffffffffff -ffffff868686949494f4f4f4f6f6f6b2b2b2e3e3e3ebebeb6f6f6fb7b7b7fafafa -f4f4f49797978c8c8cffffffffffff898989b9b9b9ffffffffffffffffffededed -717171bbbbbbfdfdfdffffffebebebe2e2e2ffffffd1d1d1efefefffffffe2e2e2 -6c6c6ceaeaeaffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0 -fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -4e80badcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff9f9f9f9b9b9bffffffffffffffffff -ffffffffffffd0d0d06c6c6cfdfdfdffffffffffffffffffffffffffffffffffff -c0c0c06c6c6ca7a7a7e3e3e3f6f6f6dfdfdf808080aaaaaaffffffa4a4a4919191 -ffffffffffffffffffffffffdbdbdb6c6c6ce1e1e1ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefcfcfcefefef6b6bed0000ff2b2bf66161e4 -0000ff6565e32727f70000ff7171edefefeffcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffebebeb6c6c6cb2b2b27373736d6d6d848484e7e7e7ffffff -ffffffffffffa2a2a26d6d6d717171aaaaaaa3a3a3b0b0b0ffffffededed6c6c6c -ebebebffffffffffffffffffbababa838383a2a2a26e6e6e6e6e6ea0a0a0fafafa -ffffffffffffd0d0d07b7b7b6e6e6e6f6f6f959595efefefffffffe3e3e37a7a7a -767676727272959595f8f8f8fffffffdfdfdb0b0b0717171757575717171868686 -eeeeeeffffffffffffffffffffffffffffffe6e6e68585856c6c6c6d6d6d959595 -f6f6f6ffffffd0d0d07b7b7b6e6e6e6f6f6f959595efefefffffffffffff8a8a8a -bababaffffffffffffffffffffffffd3d3d37d7d7d707070757575787878cccccc -ffffffbcbcbc717171797979737373b9b9b9ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef -93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -a1a1a19c9c9cffffffffffffffffffffffffffffffd2d2d26e6e6efdfdfdffffff -ffffffffffffffffffffffffffffffffffffd6d6d68989897070706c6c6c6e6e6e -909090dfdfdffefefe757575c5c5c5ffffffffffffffffffffffffffffff7e7e7e -afafafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefbfbfb -ecececc9c9d31616f80000ff3838eb0000ff3939eb0000ff1818f7ccccd4ececec -fbfbfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffebebeb6c6c6ceaeaea -fafafaf3f3f3fffffffffffffffffffffffffffffffffffff8f8f8f9f9f9ffffff -fefefefefefefffffffffffffbfbfbffffffffffffffffffffffffbababa878787 -fffffff3f3f3f9f9f9fffffffffffffffffffffffffffffffffffff3f3f3fbfbfb -ffffffffffffffffffffffffffffffefefeff7f7f7ffffffffffffffffffffffff -fffffffefefeefefeff7f7f7ffffffffffffffffffffffffffffffffffffffffff -fffffffffffff4f4f4f6f6f6fffffffffffffffffffffffffffffff3f3f3fbfbfb -fffffffffffffffffffffffffdfdfdffffffffffffffffffffffffffffffffffff -fffffff3f3f3f1f1f1fffffffffffffffffffffffffafafaeeeeeefcfcfcffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfc -fffffffffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80ba -dcdee1f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefefefeffffffffffffffffffffffff -fffffffffffffcfcfcffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfdeeeeeefbfbfbfffffffffffffffffffbfbfbffffffffffff -fffffffffffffffffffffffffdfdfdfdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcf1f1f1d9d9d97e7ed60000ff0707fb0000ff -0606fc0000ff8484d5dadadaf2f2f2fdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffebebeb6c6c6ceaeaeaffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffbababa878787ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc8 -6580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef8f8f8 -e7e7e7cccccc2b2bed0000ff0000ff0000ff2f2febcccccce7e7e7f8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff1f1f1868686efefefffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffc9c9c99e9e9effffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfc -eeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6582a599afcaf0f0f0fcfcfcffffff -fffffffffffffcfcfcefefef93abc86580a07f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4e80badcdee1 -f8f8f8fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfcf2f2f2dcdcdc9b9bcb0000fe0000ff0101fe -9f9fcadcdcdcf3f3f3fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcfcfceeeeee8aa5c5657e9c7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -6582a599afcaf0f0f0fcfcfcfffffffffffffffffffcfcfcefefef93abc86580a0 -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -7f7f7f7f7f7f7f7f7f4e80badcdee1f8f8f8fefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9f9f9 -eaeaeacecece3a3ae50000ff3f3fe4cfcfcfebebebf9f9f9fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfceeeeee -8aa5c5647f9e777f88777f88777f88777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f885c81ac99afcaf0f0f0fcfcfcffffffffffff -fffffffcfcfcefefef93abc86280a2777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88777f88 -777f88777f88777f88777f88777f88777f88777f88777f884a7ebbdcdee1f8f8f8 -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffdfdfdf5f5f5dfdfdfb4b4c81a1af4b6b6c7e0e0e0 -f5f5f5fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcfcfcefefefb8c3cf4a7ebb5885b95885b95885b95885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b95885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b95885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b95885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b95885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b94a7ebb -c2cad3f1f1f1fcfcfcfffffffffffffffffffcfcfcf0f0f0bec7d14a7ebb5885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b95885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b95885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b95885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b95885b9 -5885b95885b95885b95885b95885b95885b95885b95885b95885b95885b95885b9 -5885b95885b9628bbce2e2e3f8f8f8fefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefbfbfb -eeeeeed9d9d9bebed0d9d9d9efefeffbfbfbfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdf2f2f2dadada -c1c1c1b5b5b5b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b6b6b6c4c4c4ddddddf3f3f3fdfdfdffffffffffffffffff -fdfdfdf3f3f3dcdcdcc3c3c3b6b6b6b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 -b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b3b3b3b9b9b9cbcbcbe7e7e7f9f9f9fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefef8f8f8ededede6e6e6edededf8f8f8fefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefef7f7f7e8e8e8d6d6d6cdcdcdcbcbcbcbcbcbcbcbcbcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcdcdcdd8d8d8e9e9e9 -f8f8f8fefefefffffffffffffffffffefefef8f8f8e9e9e9d7d7d7cdcdcdcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb -cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcccccc -d0d0d0ddddddf0f0f0fcfcfcffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdfd -f9f9f9f7f7f7f9f9f9fdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfcfcf6f6f6eeeeee -eaeaeae9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9eaeaeaefefeff7f7f7fdfdfdffffffffffffffffffffffffffffff -fcfcfcf7f7f7efefefeaeaeae9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9e9e9e9eaeaeaecececf2f2f2f9f9f9fefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefefefefefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefdfdfdfcfcfcfbfbfbfafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafafafafafbfbfbfcfcfcfdfdfdffffff -fffffffffffffffffffffffffffffffffffffdfdfdfcfcfcfbfbfbfafafafafafa -fafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafafafafafafafafafafafbfbfbfbfbfb -fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff -end -grestore -showpage -%%Trailer -%%Pages: 1 -%%Trailer -cleartomark -countdictstack -exch sub { end } repeat -restore -%%EOF diff --git a/cfar-report/Figures/visc.pdf b/cfar-report/Figures/visc.pdf deleted file mode 100644 index ced522511e6e689e344267c1ab776440a820c1dd..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/visc.pdf and /dev/null differ diff --git a/cfar-report/Figures/visc.pptx b/cfar-report/Figures/visc.pptx deleted file mode 100644 index e746ca0e65cc091f6179361c9880a5389523f47e..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/visc.pptx and /dev/null differ diff --git a/cfar-report/Figures/visc.tiff.bz2 b/cfar-report/Figures/visc.tiff.bz2 deleted file mode 100644 index ec19d5e9565a4ca950881788523ce8c1496faeaa..0000000000000000000000000000000000000000 Binary files a/cfar-report/Figures/visc.tiff.bz2 and /dev/null differ diff --git a/cfar-report/Introduction.tex b/cfar-report/Introduction.tex deleted file mode 100644 index 615380144f59d63911c7827956cfd3d491eb89f3..0000000000000000000000000000000000000000 --- a/cfar-report/Introduction.tex +++ /dev/null @@ -1,235 +0,0 @@ -\section{Motivation} - -%We show with the help of a microbenchmark, how VISC IR can help resolve the performance portability -%problem between CPUs (with vector support e.g, AVX) and GPUs. - -%\lstinputlisting[language=C, label=lst:vecAddR, caption=Column-first OpenCL kernel for -%vector addition]{Code/vecAddR.cl} -%\lstinputlisting[language=C, label=lst:vecAddC, caption=Row-first OpenCL kernel for -%vector addition]{Code/vecAddC.cl} - -%We take the simple example of computing the sum of two matrices $A$ and $B$ of -%size $mxn$. Listings~\ref{lst:vecAddR} and~\ref{lst:vecAddC} show two ways to -%write an opencl program for matrix addition. In Listing~\ref{lst:vecAddR} OpenCL -%creates $m$ workgroups corresponding to each row, and the kernel loops over each -%row to compute the sum of each row vector. Listing~\ref{lst:vecAddC} on the -%other hand, creates $n$ workgroups corresponding to each column, and the kernel -%loops over each column to compute the sum of each column vector. When compiled -%for GPUs, with matrices stored in row-major format, Listing~\ref{lst:vecAddR} is - %36x faster. Whereas for CPUs Listing~\ref{lst:vecAddC} 2x faster than - %Listing\ref{lst:vecAddR} . This is because of the different ways computation - %is scheduled on CPUs and GPUs. - -%In GPUs $global\_work\_group$ instances of kernel are created. Groups of these -%instances (called workitems in OpenCL terminology) are executed in lockstep on -%Streaming Multiprocessors (SMs) in a GPU. GPUs benefit from a hardware -%optimization called memory coalescing where global memory loads/stores by -%threads of a half warp are coalesced by the device in as few as one transaction. -%The requirement is that the loads/stores issued by threads executing on a SM in -%lockstep should fit into a 32/64 byte global memory segment. Thus, programs -%where workitems executing on a SM access consecutive elements in lockstep -%benefit from this optimization. - -%On the other hand, the CPU hardware is not actively involved with scheduling of -%workitem instructions, leaving instruction scheduling upto the compiler and -%runtime. Prior appraches focus on correctness and introduce workitem loops at -%compile time. This approach benefits from data locality if the loop inside the -%kernel accesses consecutive elements in memory. Thus, these abstractions become -%a funcdamental issue in achieving the goal of performance portability across -%CPUs and GPUs. - -In computing contexts where energy is an important consideration, such as in -mobile devices like smartphones, tablets, and e-book readers, or where power and -heat dissipation are important, such as in data centers, traditional homogeneous -multicore processors can be quite inefficient. These contexts are increasingly -seeing the advent of heterogeneous computing systems, which use specialized -computing elements that can deliver much greater efficiency in -performance-per-Joule or performance-per-Watt. For example, the ``application -processor'' on a modern smartphone or tablet is a heterogeneous System-on-chip -(SoC) that often includes not just a multicore host CPU but also a GPU, a DSP, -and several more specialized processors for tasks such as audio and video -decoding, image processing, digital photography, and speech recognition. - -Programming applications for hardware that uses such diverse combinations of -computing elements is extremely challenging. The challenges include developing -portable algorithms, writing efficient yet portable source-level programs, -producing portable object code, and tuning the programs. At a more fundamental -level, these challenges arise from three root causes: (1) diverse parallelism -models; (2) diverse memory architectures; and (3) diverse hardware instruction -set semantics. To make use of the full range of available hardware to maximize -performance and energy efficiency, the programming environment needs to provide -common abstractions for all the available hardware compute units in -heterogeneous systems. Not only are these abstractions required at the level of -source-code, but also at object-code level to make the object-code portable -across the same and different manufacturer's devices, thus allowing the -application vendor to be able to ship a single software version across a broad -range of devices. - -%\begin{center} \begin{figure}[hbt] -%\centering\hspace*{4ex}\includegraphics[height=6.5cm]{Figures/visc.pdf} -%\caption{\footnotesize{System Organization for Virtual Instruction Set Computing -%in a Heterogeneous System}} \label{fig:visc} \end{figure} \end{center} - -We believe that these issues are best addressed using a language-neutral, -virtual instruction set layer that abstracts away most of the low-level details -of hardware, an approach we call Virtual Instruction Set Computing or VISC. -%Our system organization is shown in Figure~\ref{fig:visc}. -The key point is that the -only software components that can "see" the hardware details are the translators -(i.e., compiler back ends), system-level and application-level schedulers, a -minimal set of other low-level OS components and some device drivers. The rest -of the software stack, including source-level language implementations, -application libraries, and middleware, lives above the virtual ISA and is -portable across different heterogeneous system configurations. Unlike previous -VISC systems, our virtual instruction set design abstracts away and unifies the -diverse forms of parallelism in hardware (using a combination of only two models -of parallelism). It also provides abstractions for memory and communication, -allowing back-end translators to generate code for efficient data movement -across compute units. These abstractions enable programmers to write efficient -software applications that are portable across a diverse range of hardware -configurations. Moreover, we are exploiting the flexible translator-hardware -communication in VISC systems to enable novel memory system designs that are -more energy-efficient and higher performance than current designs. - -\section{Virtual ISA Design} -Previous work (\cite{LLVA:MICRO03},~\cite{VectorLLVA:VEE06}) -has shown that the approach of a virtual ISA is successful in fast code generation -and at the same time allows for sophisticated program analyses and optimizatons -that lead to efficient code. This work introduces a virtual ISA that abstracts -away differences between parallelism models in hardware. - -In our virtual ISA, a program will be represented as a hierarchical -dataflow graph with side effects. -Each dataflow node can either be an internal node or a leaf -node. An Internal node contains a complete dataflow graph, called a child graph -of the current graph, which itself can have internal nodes and leaf nodes. -Leaf nodes contain plain LLVM IR with vector instructions. -Explicit data movement will be expressed with dataflow edges. -Leaf nodes may contain side effects, i.e., load and store instructions to -memory, expressing implicit data movement through a memory hierarchy. -Because of these side effects, the graphs do not represent a ``pure'' dataflow model. - -The host code can contain straight llvm IR, performing operations that cannot or -should not be executed in accelerators. Examples would include file I/O -operations or calls to external libraries that may contain these operations, as -well as initialization, memory allocation, or high level control flow decisions. -The host code can also instantiate a dataflow node, which is the root node of a -dataflow graph. Instantiating a node translates to launching the execution of -the associated dataflow graph. The result of this operation is the result of the -dataflow graph execution, and can be accessed by the host code. However, this -launch operation is asynchronous, allowing the host code to continue executing -concurrently with the dataflow graph. -Moreover, a kernel represented by a dataflow graph can itself be executed on -the host, as well as on other compute units such as a GPU. - -For example, a program may consist of a set of data-parallel compute kernels -and some (possibly parallel) host code, and the kernels may exchange data -explicitly with each other and with the host. -Such a program could be represented as a two-level dataflow graph, where nodes -in the top level graph represent the individual kernels, -and each node for a data-parallel kernel is (hierarchically) itself a dataflow -graph representing the parallelism within the kernel. -The nodes of the latter graph would be vector LLVM instructions, typically -with side effects due to load and store instructions. - -\section{Compilation Strategy} -Given a source program, a frontend generates the virtual ISA binary, which would be a -hierarchical dataflow graph. When the consumer wants to install the application, -the application can be shipped in the virtual ISA format which is portable -across different SoCs. On the device we have specific knowledge of the available -hardware. Using device specific backend translators we can identify subgraphs -that can map to one or more compute units on the SoC and generate target -specific native code for them. We also generate VISC runtime information, -describing the dataflow graph and edges between these target specific kernels. -VISC runtime information is generated to assist the scheduler in dispatching -these kernels to the appropriate compute units. - -The compilation process preserves some key invariants: - -\begin{enumerate} -\item Every kernel is generated from a distinct subgraph in the dataflow graph hierarchy. -\item After Codegen: -\begin{itemize} - \item Every leaf node in the hierarchy is represented by one or more kernels - \item An internal node never becomes a kernel; instead, it is evaluated at runtime to - instantiate the child subgraphs. -\end{itemize} -\end{enumerate} - -The VISC compilation flow can be broken down into the following steps - - -\begin{enumerate} -\item The front end would parse the source files and generate the hierarchical -dataflow graph (called DFG, represented through intrinsics in LLVM IR) along -with LLVM IR for the leaf nodes. -\item The Graph Builder Pass would construct the internal representation for the -static dataflow flow graph by parsing -the DFG intrinsics. -\item Other passes operate on and optimize the LLVM IR. -\item The code generator uses the static dataflow graph to -\begin{itemize} - \item identify subgraphs which can be mapped to one or more available compute units - (GPUs, DSPs, vectors) efficiently. - \item generate code to assist the scheduler in dispatching these kernels to the - appropriate compute units. One subgraph may be dispatched to multiple compute units. - \item The backends generate the target specific code for the appropriate compute units. - \item Finally, DFG runtime calls perform runtime - scheduling and execute the target-specific kernel codes. -\end{itemize} -\end{enumerate} - -Currenlty, we use modified Clang to generate vitual ISA binary from OpenCL -source code. We have implemented compiler backends for translation of virtual -ISA code to native code for selected target backends. - -\begin{enumerate} -\item DFG2LLVM\_NVPTX backend pass: This backend pass identifies the subgraph suitable -for computation on an nVidia GPU and produces NVVM IR, which the LLVM NVPTX backend -can translate to PTX assembly. -\item DFG2LLVM\_SPIR backend pass: This pass is similar to the DFG2LLVM\_NVPTX pass, -except that instead of the NVVM IR, it produces the SPIR binary. It generates -code to invoke the Intel OpenCL runtime run the SPIR binary using Intel AVX SIMD -instructions. -\item DFG2LLVM\_X86 backend pass: This pass can generate single threaded x86 -source code for any remaining node in the dataflow graph and also generates code -for launching the dataflow graph from host. -\end{enumerate} - -\section{Preliminary Evaluation} -\begin{center} -\begin{figure}[hbt] -\centering\hspace*{4ex}\includegraphics[height=7cm]{Figures/Results.pdf} -\caption{\footnotesize{Preliminary results on GPU}} -\label{fig:results} -\end{figure} -\end{center} -In our preliminary experiments, we evaluate the suitability of the virtual ISA design on -two parameters. (1) The virtual ISA design should be portable. For this, we use the same -virtual ISA binary of an application to compile to different backends. (2) When -compared to current heterogeneous programming technologies such as OpenCL, CUDA, -and others, the virtual ISA design should be able to capture the parallelism -expressed using these languages, thus not lose performance when compiled to -target architectures for these source-level languages. - -We present results where we run four applications (spmv, SGEMM, stencil, and -LBM) from Parboil~\cite{Parboil} benchmark suite. The applications are compiled -from OpenCL source to virtual ISA binary using modified Clang. Our VISC passes -identify the subgraphs in the virtual ISA binary suitable for NVidia GPUs and -translate them using the PTX backend. Figure~\ref{fig:results} shows the -comparison of execution time of these applications against OpenCL baseline -obtained by compiling these OpenCL applications using nVidia's proproetary OpenCL compiler. -The experiments were run on a platform with Intel Xeon E5 core i7 running at -3.6 GHz, with 16 GB RAM and nVidia GeForce GTX 680 GPU. - -The bars in Figure~\ref{fig:results} show break up of VISC execution time into -three categories. At the bottom we have the VISC kernel execution time which is -the time consumed by the GPU to do the kernel computation. VISC Copy time -includes the time spent in copying memory from host to device and vice-versa. -Other overheads such as setting up the GPU device, loading the kernel binary on the GPU -device, etc. are captured in the VISC Other time. We show results for each -application when run for small and large test cases. The bar graph shows that -the VISC execution time is within 1 - 1.6x for all test cases. We also obeserve -that with larger input sizes, the VISC overheads reduce to a small percentage of -the total execution time, indicating that the current virtual ISA design would -work well for big input sizes. - diff --git a/cfar-report/Makefile b/cfar-report/Makefile deleted file mode 100755 index 51da5c8f1e30786972b20f12309cc1b10d42abd4..0000000000000000000000000000000000000000 --- a/cfar-report/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -PAPER = paper -TEX = $(wildcard *.tex) -BIB = references.bib -FIGS = $(wildcard figures/*.pdf figures/*.png graphs/*.pdf graphs/*.png) -CODE = $(wildcard Code/*.cl Code/*.c Code/*.cpp code/*.ll) - -.PHONY: all clean - -$(PAPER).pdf: $(TEX) $(BIB) $(FIGS) $(CODE) jpaper.cls - echo $(FIGS) - pdflatex $(PAPER) - bibtex $(PAPER) - pdflatex $(PAPER) - pdflatex $(PAPER) - -clean: - rm -f *.aux *.bbl *.blg *.log *.out *.tdo $(PAPER).pdf - diff --git a/cfar-report/SIunits.sty b/cfar-report/SIunits.sty deleted file mode 100644 index dc971b45846fada09b537a4c5377e01080f95a73..0000000000000000000000000000000000000000 --- a/cfar-report/SIunits.sty +++ /dev/null @@ -1,562 +0,0 @@ -%% -%% This is file `SIunits.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% SIunits.dtx (with options: `package') -%% -%% Copyright (c) 1998-2002 Marcel Heldoorn <m.heldoorn@webschool.nl>. -%% -%% This program may be distributed and/or modified under the conditions of the LaTeX Project -%% Public License, either version 1.2 of this license or (at your option) any later version. -%% The latest version of this license is in http://www.latex-project.org/lppl.txt and -%% version 1.2 or later is part of all distributions of LaTeX version 1999/12/01 or later. -%% -%% For error reports in case of UNCHANGED versions see the readme.txt file. -%% -%% Please do not request updates from me directly. Distribution is done through the -%% Comprehensive TeX Archive Network (CTAN). -%% -\def\SIunits@RCS$#1: #2 #3${#2} -\def\filename{SIunits.dtx}%Source File Name -\xdef\fileversion{\SIunits@RCS$Revision: 1.1.1.1 $}%Revision generated by CS-RCS -\xdef\filedate{\SIunits@RCS$Date: 2003/02/26 03:15:34 $}%Date generated by CS-RCS -\let\docversion=\fileversion -\let\docdate=\filedate -\NeedsTeXFormat{LaTeX2e}[1997/12/01] -\ProvidesPackage{SIunits} - [\filedate\space v\fileversion\space - Support for the International System of units (MH)] - \def\packagemessage{} -\typeout{\packagemessage} -\newif\if@redefsquare\@redefsquarefalse -\newif\if@defsquaren\@defsquarenfalse -\newif\if@redefGray\@redefGrayfalse -\newif\if@defGray\@defGrayfalse -\newif\if@textstyle\@textstylefalse -\newif\if@optionbinary\@optionbinaryfalse -\newif\if@optionNoAMS\@optionNoAMSfalse -\newif\if@inunitcommand\@inunitcommandfalse -\newlength{\@qskwidth} -\newif\if@defitalian\@defitalianfalse -\DeclareRobustCommand\SI@fstyle[1]{\mathrm{#1}} -\DeclareTextSymbolDefault{\SImu}{TS1} -\DeclareTextSymbol{\SImu}{TS1}{181} % micro sign -\DeclareFontEncoding{TS1}{}{} -\DeclareFontSubstitution{TS1}{cmr}{m}{n} -\DeclareFontFamily{OML}{eur}{\skewchar\font127} \DeclareFontShape{OML}{eur}{m}{n}{<5> <6> - <7> <8> <9> gen * eurm <10><10.95><12><14.4><17.28><20.74><24.88>eurm10}{} -\DeclareSymbolFont{greek}{OML}{eur}{m}{n} -\DeclareMathSymbol{\upmu}{\mathord}{greek}{"16} -\newcommand*\SIunits[1][thickspace,thickqspace]{\@for\SIunits@@:=#1% - \do{\SIunits@execopt\SIunits@@}} -\newcommand*\SIunits@execopt[1]{\@ifundefined{SIunits@opt@#1}% - {\PackageWarning{SIunits}{Requested option `#1' not provided}}% - {\@nameuse{SIunits@opt@#1}}} -\newcommand*\SIunits@opt@thickspace{% - \@thickspace{runtime option `thickspace' provided!}} -\newcommand*\SIunits@opt@mediumspace{% - \@mediumspace{runtime option `mediumspace' provided!}} -\newcommand*\SIunits@opt@thinspace{% - \@thinspace{runtime option `thinspace' provided!}} -\newcommand*\SIunits@opt@cdot{% - \@cdot{runtime option `cdot' provided!}} -\newcommand*\SIunits@opt@thickqspace{% - \@thickqspace{runtime option `thickqspace' provided!}} -\newcommand*\SIunits@opt@mediumqspace{% - \@mediumqspace{runtime option `mediumqspace' provided!}} -\newcommand*\SIunits@opt@thinqspace{% - \@thinqspace{runtime option `thinqspace' provided!}} -\DeclareRobustCommand{\@text}{% - \ifmmode\expandafter\@text@\else\expandafter\mbox\fi} -\let\nfss@text\@text% -\def\@text@#1{\mathchoice% - {\textdef@\displaystyle\f@size{#1}}% - {\textdef@\textstyle\tf@size{\firstchoice@false #1}}% - {\textdef@\textstyle\sf@size{\firstchoice@false #1}}% - {\textdef@\textstyle\ssf@size{\firstchoice@false #1}}% - \check@mathfonts}% -\def\textdef@#1#2#3{\hbox{{% - \everymath{#1}% - \let\f@size#2\selectfont% - #3}}}% -\newif\iffirstchoice@% -\firstchoice@true% -\def\stepcounter#1{% - \iffirstchoice@% - \addtocounter{#1}\@ne% - \begingroup \let\@elt\@stpelt \csname cl@#1\endcsname \endgroup - \fi% -}% -\DeclareRobustCommand*{\meter}{\metre} -\DeclareRobustCommand*{\deka}{\deca} -\DeclareRobustCommand*{\dekad}{\decad} -\DeclareRobustCommand*{\NoAMS}{\addprefix{\micro}{\mbox{\SImu}}} -\DeclareRobustCommand{\addunit}[2]{\newcommand{#1}{\ensuremath{\SI@fstyle{#2}}}} -\DeclareRobustCommand{\addprefix}[2]{\newcommand{#1}{\ensuremath{\SI@fstyle{#2}}}} -\DeclareRobustCommand*{\unitskip}[1]{\renewcommand{\usk}{\ensuremath{#1}}} -\DeclareRobustCommand*{\quantityskip}[1]{\renewcommand{\@qsk}{\ensuremath{#1}}} -\DeclareRobustCommand*{\per}{\ensuremath{\SI@fstyle{/}}} -\DeclareRobustCommand*{\usk}{\ensuremath{\;}} -\DeclareRobustCommand*{\@qsk}{\ensuremath{\;}} -\renewcommand{\cdot}{\,\mbox{\textperiodcentered}\,} -\newcommand{\@cdot}[1]{\DeclareRobustCommand*{\usk}{\ensuremath{\cdot}}\typeout{#1}} -\newcommand{\@thickspace}[1]{\DeclareRobustCommand*{\usk}{\ensuremath{\;}}\typeout{#1}} -\newcommand{\@mediumspace}[1]{\DeclareRobustCommand*{\usk}{\ensuremath{\:}}\typeout{#1}} -\newcommand{\@thinspace}[1]{\DeclareRobustCommand*{\usk}{\ensuremath{\,}}\typeout{#1}} -\newcommand{\@thickqspace}[1]{\DeclareRobustCommand*{\@qsk}{\ensuremath{\;}}\typeout{#1}} -\newcommand{\@mediumqspace}[1]{\DeclareRobustCommand*{\@qsk}{\ensuremath{\:}}\typeout{#1}} -\newcommand{\@thinqspace}[1]{\DeclareRobustCommand*{\@qsk}{\ensuremath{\,}}\typeout{#1}} -{\catcode`\.=13\gdef.{\usk}} -\newcommand{\period@active}[1]{\begingroup\mathcode`\.="8000\ensuremath{#1}\endgroup} -\DeclareRobustCommand{\unit}[2]{\@inunitcommandtrue% - \ensuremath{\SI@fstyle{#1\@qsk\period@active{#2}}}% - \@inunitcommandfalse} -\DeclareRobustCommand{\one}{\settowidth{\@qskwidth}{\@qsk}\hspace*{-\@qskwidth}} -\DeclareRobustCommand{\no@qsk}{% - \if@inunitcommand% - \one% - \else% - \relax% - \fi% -} -\DeclareRobustCommand{\power}[2]{\ensuremath{\SI@fstyle{#1}^{\SI@fstyle{#2}}}} -\AtBeginDocument{% - \if@redefsquare - \providecommand{\square}[1]{\power{#1}{2}} - \renewcommand{\square}[1]{\power{#1}{2}} - \typeout{Option `amssymb' provided! ^^J - Command \protect\square\space redefined by SIunits package!} - \typeout{} - \else - \if@defsquaren - \providecommand{\squaren}[1]{\power{#1}{2}} - \renewcommand{\squaren}[1]{\power{#1}{2}} - \typeout{Option `squaren' provided! ^^J - Command \protect\squaren\space defined by SIunits package!} - \typeout{} - \else - \@ifundefined{square}{% - \newcommand*{\square}[1]{\power{#1}{2}} - }{% - \PackageError{SIunits}{% - The command \protect\square\space was already defined.\MessageBreak - Possibly due to the amssymb package}% - {Hint: use option `amssymb' or `squaren' with SIunits package.\MessageBreak - See SIunits.dvi or readme.txt section: Known problems and limitations.} - } %\ifundefined{square} - \fi %\if@defsquaren - \fi %\if@redefsquare - \if@defitalian - \PackageWarning{SIunits}{Option `italian' provided.\MessageBreak - Command \protect\unit\space defined by babel.\MessageBreak - Mind to use \protect\unita\space instead.}% - \DeclareRobustCommand{\unita}[2]{% - \@inunitcommandtrue% - \ensuremath{\SI@fstyle{#1\@qsk\period@active{#2}}}% - \@inunitcommandfalse% - }% - \fi%\if@defitalian -} %\AtBeginDocument -\DeclareRobustCommand{\SI@square}[1] - {\if@defsquaren% - \squaren{#1}% - \else - \square{#1}% - \fi %\if@defsquaren - } -\DeclareRobustCommand*{\squared}{\ensuremath{^{\mathrm{2}}}} -\DeclareRobustCommand*{\cubic}[1]{\power{#1}{3}} -\DeclareRobustCommand*{\cubed}{\ensuremath{^{\mathrm{3}}}} -\DeclareRobustCommand*{\fourth}[1]{\power{#1}{4}} -\DeclareRobustCommand*{\reciprocal}[1]{\power{#1}{-1}} -\DeclareRobustCommand*{\rp}{\reciprocal} -\DeclareRobustCommand*{\rpsquare}[1]{\power{#1}{-2}} -\DeclareRobustCommand*{\rpsquared}{\ensuremath{^{\mathrm{-2}}}} -\DeclareRobustCommand*{\rpcubic}[1]{\power{#1}{-3}} -\DeclareRobustCommand*{\rpcubed}{\ensuremath{^{\mathrm{-3}}}} -\DeclareRobustCommand*{\rpfourth}[1]{\power{#1}{-4}} -\addprefix{\yocto}{y} -\addprefix{\zepto}{z} -\addprefix{\atto}{a} -\addprefix{\femto}{f} -\addprefix{\pico}{p} -\addprefix{\nano}{n} -\AtBeginDocument{% -\if@optionNoAMS% - \addprefix{\micro}{\mbox{\SImu}}% -\else% - \addprefix{\micro}{\upmu}% - \fi% -\if@textstyle% - \DeclareRobustCommand{\micro}{{\ensuremath{\@text{\SImu}}}}% -\fi} -\addprefix{\milli}{m} -\addprefix{\centi}{c} -\addprefix{\deci}{d} -\addprefix{\deca}{da} -\addprefix{\hecto}{h} -\addprefix{\kilo}{k} -\addprefix{\mega}{M} -\addprefix{\giga}{G} -\addprefix{\tera}{T} -\addprefix{\peta}{P} -\addprefix{\exa}{E} -\addprefix{\zetta}{Z} -\addprefix{\yotta}{Y} -\DeclareRobustCommand*{\yoctod}{\power{10}{-24}} -\DeclareRobustCommand*{\zeptod}{\power{10}{-21}} -\DeclareRobustCommand*{\attod}{\power{10}{-18}} -\DeclareRobustCommand*{\femtod}{\power{10}{-15}} -\DeclareRobustCommand*{\picod}{\power{10}{-12}} -\DeclareRobustCommand*{\nanod}{\power{10}{-9}} -\DeclareRobustCommand*{\microd}{\power{10}{-6}} -\DeclareRobustCommand*{\millid}{\power{10}{-3}} -\DeclareRobustCommand*{\centid}{\power{10}{-2}} -\DeclareRobustCommand*{\decid}{\power{10}{-1}} -\DeclareRobustCommand*{\decad}{\power{10}{1}} -\DeclareRobustCommand*{\hectod}{\power{10}{2}} -\DeclareRobustCommand*{\kilod}{\power{10}{3}} -\DeclareRobustCommand*{\megad}{\power{10}{6}} -\DeclareRobustCommand*{\gigad}{\power{10}{9}} -\DeclareRobustCommand*{\terad}{\power{10}{12}} -\DeclareRobustCommand*{\petad}{\power{10}{15}} -\DeclareRobustCommand*{\exad}{\power{10}{18}} -\DeclareRobustCommand*{\zettad}{\power{10}{21}} -\DeclareRobustCommand*{\yottad}{\power{10}{24}} -\addunit{\gram}{g} -\addunit{\metre}{m} -\addunit{\kilogram}{\kilo\gram} -\addunit{\second}{s} -\addunit{\ampere}{A} -\addunit{\kelvin}{K} -\addunit{\mole}{mol} -\addunit{\candela}{cd} -\addunit{\radian}{rad} -\addunit{\steradian}{sr} -\addunit{\hertz}{Hz} -\addunit{\newton}{N} -\addunit{\pascal}{Pa} -\addunit{\joule}{J} -\addunit{\watt}{W} -\addunit{\coulomb}{C} -\addunit{\volt}{V} -\addunit{\farad}{F} -\addunit{\ohm}{\ensuremath{\Omega}} -\addunit{\siemens}{S} -\addunit{\weber}{Wb} -\addunit{\tesla}{T} -\addunit{\henry}{H} -\newcommand{\degreecelsius}{\protect\@inunitcommandfalse\ensuremath{\SI@fstyle{\degree\Celsius}}} -\addunit{\celsius}{\degreecelsius} -\addunit{\lumen}{lm} -\addunit{\lux}{lx} -\addunit{\becquerel}{Bq} -\AtBeginDocument{% -\if@redefGray - \providecommand{\gray}{\ensuremath{\SI@fstyle{Gy}}} - \renewcommand{\gray}{\ensuremath{\SI@fstyle{Gy}}} - \typeout{Option `pstricks' provided! ^^J - Command \protect\gray\space redefined by SIunits package!} - \typeout{} - \else - \if@defGray - \providecommand{\Gray}{\ensuremath{\SI@fstyle{Gy}}} - \renewcommand{\Gray}{\ensuremath{\SI@fstyle{Gy}}} - \typeout{Option `Gray' provided! ^^J - Command \protect\Gray\space defined by SIunits package!} - \typeout{} - \else - \@ifundefined{gray}{% - \newcommand*{\gray}{\ensuremath{\SI@fstyle{Gy}}} - }{% - \PackageWarningNoLine{SIunits}{% - The command \protect\gray\space was already defined.\MessageBreak - Possibly due to the pstricks package} - \typeout{Hint: use option `pstricks' or `Gray' with SIunits package.} - \typeout{See SIunits.dvi or readme.txt section: Known problems and limitations.} - \typeout{} - } %\ifundefined{gray} - \fi %\if@defGray - \fi %\if@redefGray -} %\AtBeginDocument -\addunit{\sievert}{Sv} -\addunit{\katal}{kat} - -\newcommand*\SIunits@opt@derivedinbase{% -\typeout{Option 'derivedinbase' provided!^^J} -\addunit{\radianbase}% - {\metre\usk\reciprocal\metre} -\addunit{\steradianbase}% - {\squaremetre\usk\rpsquare\metre} -\addunit{\hertzbase}% - {\reciprocal\second} -\addunit{\newtonbase}% - {\metre\usk\kilogram\usk\second\rpsquared} -\addunit{\pascalbase}% - {\reciprocal\metre\usk\kilogram\usk\second\rpsquared} -\addunit{\joulebase}% - {\squaremetre\usk\kilogram\usk\second\rpsquared} -\addunit{\wattbase}% - {\squaremetre\usk\kilogram\usk\rpcubic\second} -\addunit{\coulombbase}% - {\ampere\usk\second} -\addunit{\voltbase}% - {\squaremetre\usk\kilogram\usk\rpcubic\second\usk\reciprocal\ampere} -\addunit{\faradbase}% - {\rpsquare\metre\usk\reciprocal\kilogram\usk\fourth\second\usk\ampere\squared} -\addunit{\ohmbase}% - {\squaremetre\usk\kilogram\usk\rpcubic\second\usk\rpsquare\ampere} -\addunit{\siemensbase}% - {\rpsquare\metre\usk\reciprocal\kilogram\usk\cubic\second\usk\ampere\squared} -\addunit{\weberbase}% - {\squaremetre\usk\kilogram\usk\second\rpsquared\usk\reciprocal\ampere} -\addunit{\teslabase}% - {\kilogram\usk\second\rpsquared\usk\reciprocal\ampere} -\addunit{\henrybase}% - {\squaremetre\usk\kilogram\usk\second\rpsquared\usk\rpsquare\ampere} -\addunit{\celsiusbase}% - {\kelvin} -\addunit{\lumenbase}% - {\candela\usk\squaremetre\usk\rpsquare\metre} -\addunit{\luxbase}% - {\candela\usk\squaremetre\usk\rpfourth\metre} -\addunit{\becquerelbase}% - {\hertzbase} -\addunit{\graybase}% - {\squaremetre\usk\second\rpsquared} -\addunit{\sievertbase}% - {\graybase} -\addunit{\katalbase}% - {\rp\second\usk\mole } -} -\newcommand*\SIunits@opt@derived{% -\addunit{\derradian}% - {\metre\usk\reciprocal\metre} -\addunit{\dersteradian}% - {\squaremetre\usk\rpsquare\metre} -\addunit{\derhertz}% - {\reciprocal\second} -\addunit{\dernewton}% - {\metre\usk\kilogram\usk\second\rpsquared} -\addunit{\derpascal}% - {\newton\usk\rpsquare\metre} -\addunit{\derjoule}% - {\newton\usk\metre} -\addunit{\derwatt}% - {\joule\usk\reciprocal\second} -\addunit{\dercoulomb}% - {\ampere\usk\second} -\addunit{\dervolt}% - {\watt\usk\reciprocal\ampere} -\addunit{\derfarad}% - {\coulomb\usk\reciprocal\volt} -\addunit{\derohm}% - {\volt\usk\reciprocal\ampere} -\addunit{\dersiemens}% - {\ampere\usk\reciprocal\volt} -\addunit{\derweber}% - {\squaremetre\usk\kilogram\usk\second\rpsquared\usk\reciprocal\ampere} -\addunit{\dertesla}% - {\weber\usk\rpsquare\metre} -\addunit{\derhenry}% - {\weber\usk\reciprocal\ampere} -\addunit{\dercelsius}% - {\kelvin} -\addunit{\derlumen}% - {\candela\usk\steradian} -\addunit{\derlux}% - {\lumen\usk\rpsquare\metre} -\addunit{\derbecquerel}% - {\derhertz} -\addunit{\dergray}% - {\joule\usk\reciprocal\kilogram} -\addunit{\dersievert}% - {\dergray} -\addunit{\derkatal}% - {\katalbase} - \typeout{Option `derived' provided!}} -\addunit{\minute}{min} -\addunit{\hour}{h} -\addunit{\dday}{d} -\addunit{\degree}{\no@qsk\ensuremath{^{\circ}}} -\addunit{\paminute}{\no@qsk\ensuremath{'}} -\addunit{\arcminute}{\no@qsk\ensuremath{'}} -\addunit{\pasecond}{\no@qsk\ensuremath{''}} -\addunit{\arcsecond}{\no@qsk\ensuremath{''}} -\addunit{\ton}{t} -\addunit{\tonne}{t} -\addunit{\liter}{L} -\addunit{\litre}{l} -\addunit{\neper}{Np} -\addunit{\bel}{B} -\addunit{\curie}{Ci} -\addunit{\rad}{rad} -\addunit{\arad}{rd} -\addunit{\rem}{rem} -\addunit{\roentgen}{R} -\addunit{\electronvolt}{e\volt} -\addunit{\atomicmass}{u} -\addunit{\are}{a} -\addunit{\hectare}{\hecto\are} -\addunit{\barn}{b} -\addunit{\bbar}{bar} -\addunit{\gal}{Gal} -\addunit{\angstrom}{\mbox{{\AA}}} -\addunit{\rperminute}{r\per\minute} -\addunit{\rpersecond}{r\per\second} -\addunit{\squaremetre}{\SI@square\metre} -\addunit{\cubicmetre}{\cubic\metre} -\addunit{\graypersecond}{\gray\per\second} -\addunit{\graypersecondnp}{\gray\usk\reciprocal\second} -\addunit{\metrepersquaresecond}{\metre\per\second\squared} -\addunit{\metrepersquaresecondnp}{\metre\usk\second\rpsquared} -\addunit{\joulepermole}{\joule\per\mole} -\addunit{\joulepermolenp}{\joule\usk\reciprocal\mole} -\addunit{\molepercubicmetre}{\mole\per\cubic\metre} -\addunit{\molepercubicmetrenp}{\mole\usk\rpcubic\metre} -\addunit{\radianpersquaresecond}{\radian\per\second\squared} -\addunit{\radianpersquaresecondnp}{\radian\usk\second\rpsquared} -\addunit{\kilogramsquaremetrepersecond}{\kilogram\usk\squaremetre\per\second} -\addunit{\kilogramsquaremetrepersecondnp}{\kilogram\usk\squaremetre\usk\reciprocal\second} -\addunit{\radianpersecond}{\radian\per\second} -\addunit{\radianpersecondnp}{\radian\usk\reciprocal\second} -\addunit{\squaremetrepercubicmetre}{\squaremetre\per\cubic\metre} -\addunit{\squaremetrepercubicmetrenp}{\squaremetre\usk\rpcubic\metre} -\addunit{\katalpercubicmetre}{\katal\per\cubic\metre} -\addunit{\katalpercubicmetrenp}{\katal\usk\rpcubic\metre} -\addunit{\coulombpermol}{\coulomb\per\mole} -\addunit{\coulombpermolnp}{\coulomb\usk\reciprocal\mole} -\addunit{\amperepersquaremetre}{\ampere\per\squaremetre} -\addunit{\amperepersquaremetrenp}{\ampere\usk\rpsquare\metre} -\addunit{\kilogrampercubicmetre}{\kilogram\per\cubic\metre} -\addunit{\kilogrampercubicmetrenp}{\kilogram\usk\rpcubic\metre} -\addunit{\squaremetrepernewtonsecond}{\squaremetre\per\newton\usk\second} -\addunit{\squaremetrepernewtonsecondnp}{\squaremetre\usk\reciprocal\newton\usk\reciprocal\second} -\addunit{\pascalsecond}{\pascal\usk\second} -\addunit{\coulombpercubicmetre}{\coulomb\per\cubic\metre} -\addunit{\coulombpercubicmetrenp}{\coulomb\usk\rpcubic\metre} -\addunit{\amperemetresecond}{\ampere\usk\metre\usk\second} -\addunit{\voltpermetre}{\volt\per\metre} -\addunit{\voltpermetrenp}{\volt\usk\reciprocal\metre} -\addunit{\coulombpersquaremetre}{\coulomb\per\squaremetre} -\addunit{\coulombpersquaremetrenp}{\coulomb\usk\rpsquare\metre} -\addunit{\faradpermetre}{\farad\per\metre} -\addunit{\faradpermetrenp}{\farad\usk\reciprocal\metre} -\addunit{\ohmmetre}{\ohm\usk\metre} -\addunit{\kilowatthour}{\kilo\watt\hour} -\addunit{\wattpersquaremetre}{\watt\per\squaremetre} -\addunit{\wattpersquaremetrenp}{\watt\usk\rpsquare\metre} -\addunit{\joulepersquaremetre}{\joule\per\squaremetre} -\addunit{\joulepersquaremetrenp}{\joule\usk\rpsquare\metre} -\addunit{\newtonpercubicmetre}{\newton\per\cubic\metre} -\addunit{\newtonpercubicmetrenp}{\newton\usk\rpcubic\metre} -\addunit{\newtonperkilogram}{\newton\per\kilogram} -\addunit{\newtonperkilogramnp}{\newton\usk\reciprocal\kilogram} -\addunit{\jouleperkelvin}{\joule\per\kelvin} -\addunit{\jouleperkelvinnp}{\joule\usk\reciprocal\kelvin} -\addunit{\jouleperkilogram}{\joule\per\kilogram} -\addunit{\jouleperkilogramnp}{\joule\usk\reciprocal\kilogram} -\addunit{\coulombperkilogram}{\coulomb\per\kilogram} -\addunit{\coulombperkilogramnp}{\coulomb\usk\reciprocal\kilogram} -\addunit{\squaremetrepersecond}{\squaremetre\per\second} -\addunit{\squaremetrepersecondnp}{\squaremetre\usk\reciprocal\second} -\addunit{\squaremetrepersquaresecond}{\squaremetre\per\second\squared} -\addunit{\squaremetrepersquaresecondnp}{\squaremetre\usk\second\rpsquared} -\addunit{\kilogrammetrepersecond}{\kilogram\usk\metre\per\second} -\addunit{\kilogrammetrepersecondnp}{\kilogram\usk\metre\usk\reciprocal\second} -\addunit{\candelapersquaremetre}{\candela\per\squaremetre} -\addunit{\candelapersquaremetrenp}{\candela\usk\rpsquare\metre} -\addunit{\amperepermetre}{\ampere\per\metre} -\addunit{\amperepermetrenp}{\ampere\usk\reciprocal\metre} -\addunit{\joulepertesla}{\joule\per\tesla} -\addunit{\jouleperteslanp}{\joule\usk\reciprocal\tesla} -\addunit{\henrypermetre}{\henry\per\metre} -\addunit{\henrypermetrenp}{\henry\usk\reciprocal\metre} -\addunit{\kilogrampersecond}{\kilogram\per\second} -\addunit{\kilogrampersecondnp}{\kilogram\usk\reciprocal\second} -\addunit{\kilogrampersquaremetresecond}{\kilogram\per\squaremetre\usk\second} -\addunit{\kilogrampersquaremetresecondnp}{\kilogram\usk\rpsquare\metre\usk\reciprocal\second} -\addunit{\kilogrampersquaremetre}{\kilogram\per\squaremetre} -\addunit{\kilogrampersquaremetrenp}{\kilogram\usk\rpsquare\metre} -\addunit{\kilogrampermetre}{\kilogram\per\metre} -\addunit{\kilogrampermetrenp}{\kilogram\usk\reciprocal\metre} -\addunit{\joulepermolekelvin}{\joule\per\mole\usk\kelvin} -\addunit{\joulepermolekelvinnp}{\joule\usk\reciprocal\mole\usk\reciprocal\kelvin} -\addunit{\kilogramperkilomole}{\kilogram\per\kilo\mole} -\addunit{\kilogramperkilomolenp}{\kilogram\usk\kilo\reciprocal\mole} -\addunit{\kilogramsquaremetre}{\kilogram\usk\squaremetre} -\addunit{\kilogramsquaremetrenp}{\kilogramsquaremetre} -\addunit{\kilogrammetrepersquaresecond}{\kilogram\usk\metre\per\second\squared} -\addunit{\kilogrammetrepersquaresecondnp}{\kilogram\usk\metre\usk\second\rpsquared} -\addunit{\newtonpersquaremetre}{\newton\per\squaremetre} -\addunit{\newtonpersquaremetrenp}{\newton\usk\rpsquare\metre} -\addunit{\persquaremetresecond}{1\per\squaremetre\usk\second} -\addunit{\persquaremetresecondnp}{\rpsquare\metre\usk\reciprocal\second} -\addunit{\wattperkilogram}{\watt\per\kilogram} -\addunit{\wattperkilogramnp}{\watt\usk\reciprocal\kilogram} -\addunit{\wattpercubicmetre}{\watt\per\cubic\metre} -\addunit{\wattpercubicmetrenp}{\watt\usk\rpcubic\metre} -\addunit{\wattpersquaremetresteradian}{\watt\per\squaremetre\usk\steradian} -\addunit{\wattpersquaremetresteradiannp}{\watt\usk\rpsquare\metre\usk\rp\steradian} -\addunit{\jouleperkilogramkelvin}{\joule\per\kilogram\usk\kelvin} -\addunit{\jouleperkilogramkelvinnp}{\joule\usk\reciprocal\kilogram\usk\reciprocal\kelvin} -\addunit{\squaremetreperkilogram}{\squaremetre\per\kilogram} -\addunit{\rpsquaremetreperkilogram}{\squaremetre\usk\reciprocal\kilogram} -\addunit{\cubicmetreperkilogram}{\cubic\metre\per\kilogram} -\addunit{\rpcubicmetreperkilogram}{\cubic\metre\usk\reciprocal\kilogram} -\addunit{\newtonpermetre}{\newton\per\metre} -\addunit{\newtonpermetrenp}{\newton\usk\reciprocal\metre} -\addunit{\Celsius}{\ensuremath{\SI@fstyle{C}}} -\addunit{\wattpermetrekelvin}{\watt\per\metre\usk\kelvin} -\addunit{\wattpermetrekelvinnp}{\watt\usk\reciprocal\metre\usk\reciprocal\kelvin} -\addunit{\newtonmetre}{\newton\usk\metre} \addunit{\newtonmetrenp}{\newtonmetre} -\addunit{\squaremetrepercubicsecond}{\squaremetre\per\cubic\second} -\addunit{\squaremetrepercubicsecondnp}{\squaremetre\usk\rpcubic\second} -\addunit{\metrepersecond}{\metre\per\second} -\addunit{\metrepersecondnp}{\metre\usk\reciprocal\second} -\addunit{\joulepercubicmetre}{\joule\per\cubicmetre} -\addunit{\joulepercubicmetrenp}{\joule\usk\rpcubic\metre} -\addunit{\kilogrampercubicmetrecoulomb}{\kilogram\per\cubic\metre\usk\coulomb} -\addunit{\kilogrampercubicmetrecoulombnp}{\kilogram\usk\rpcubic\metre\usk\reciprocal\coulomb} -\addunit{\cubicmetrepersecond}{\cubicmetre\per\second} -\addunit{\rpcubicmetrepersecond}{\cubicmetre\usk\reciprocal\second} -\addunit{\kilogrampersecondcubicmetre}{\kilogram\per\second\usk\cubicmetre} -\addunit{\kilogrampersecondcubicmetrenp}{\kilogram\usk\reciprocal\second\usk\rpcubic\metre} -\DeclareOption{cdot}{\@cdot{Option `cdot' provided!}} -\DeclareOption{thickspace}{\@thickspace{Option `thickspace' provided!}} -\DeclareOption{mediumspace}{\@mediumspace{Option `mediumspace' provided!}} -\DeclareOption{thinspace}{\@thinspace{Option `thinspace' provided!}} -\DeclareOption{thickqspace}{\@thickqspace{Option `thickqspace' provided!}} -\DeclareOption{mediumqspace}{\@mediumqspace{Option `mediumqspace' provided!}} -\DeclareOption{thinqspace}{\@thinqspace{Option `thinqspace' provided!}} -\DeclareOption{textstyle}{\renewcommand\SI@fstyle[1]{\@text{\protect#1}}% -\@textstyletrue% -\typeout{Option `textstyle' provided!}} -\DeclareOption{amssymb}{\@redefsquaretrue% -\typeout{Option `amssymb' provided!}} -\DeclareOption{squaren}{\@defsquarentrue% -\typeout{Option `squaren' provided!}} -\DeclareOption{pstricks}{\@redefGraytrue% -\typeout{Option `pstricks' provided!}} -\DeclareOption{Gray}{\@defGraytrue% -\typeout{Option `Gray' provided!}} -\DeclareOption{italian}{\@defitaliantrue% -\typeout{Option `italian' provided!}} -\DeclareOption{binary}{\@optionbinarytrue } -\AtEndOfPackage{\if@optionbinary\RequirePackage{binary}\fi} -\DeclareOption{derivedinbase}{\SIunits@opt@derivedinbase} -\DeclareOption{derived}{\SIunits@opt@derived} -\DeclareOption{noams}{\@optionNoAMStrue% -\typeout{Option `noams' provided!}} -\DeclareOption*{\PackageWarningNoLine{SIunits}{What is `\CurrentOption'?}} -\InputIfFileExists{SIunits.cfg}{}% -{\PackageWarningNoLine{SIunits}{You have no `SIunits.cfg' file installed. -\MessageBreak I will assume you are using `thickspace' and `thickqspace'} -\ExecuteOptions{thickspace,thickqspace}} -\ProcessOptions\relax -%% -%% Source: $Id: SIunits.sty,v 1.1.1.1 2003/02/26 03:15:34 amb Exp $ -%% -%% End of file `SIunits.sty'. diff --git a/cfar-report/couriers.sty b/cfar-report/couriers.sty deleted file mode 100644 index 615802b30a2f90b1de799c06532d1bc0fb0fe2ab..0000000000000000000000000000000000000000 --- a/cfar-report/couriers.sty +++ /dev/null @@ -1,40 +0,0 @@ -%% -%% This is file `couriers.sty', -%% -% This program may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.2 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.2 or later is part of all distributions of LaTeX -% version 1999/12/01 or later. -\ProvidesPackage{couriers} -[2004/07/10 Scaled Courier -(HS) -] -\RequirePackage{keyval} -\define@key{Cou}{scaled}[0.95]{% - \def\Cr@scale{#1}} -\def\ProcessOptionsWithKV#1{% - \let\@tempc\relax - \let\Cr@tempa\@empty - \@for\CurrentOption:=\@classoptionslist\do{% - \@ifundefined{KV@#1@\CurrentOption}% - {}% - {\edef\Cr@tempa{\Cr@tempa,\CurrentOption,}}% - }% - \edef\Cr@tempa{% - \noexpand\setkeys{#1}{% - \Cr@tempa\@ptionlist{\@currname.\@currext}% - }% - }% - \Cr@tempa -} -\ProcessOptionsWithKV{Cou} -\AtEndOfPackage{% - \let\@unprocessedoptions\relax -} -\renewcommand{\ttdefault}{pcrs} -\endinput -%% -%% End of file `couriers.sty'. diff --git a/cfar-report/dpj-references.bib b/cfar-report/dpj-references.bib deleted file mode 100644 index 9d319a32b030a9dffc9422479e163e71b511d1b6..0000000000000000000000000000000000000000 --- a/cfar-report/dpj-references.bib +++ /dev/null @@ -1,2610 +0,0 @@ -%%============================================================================ -%%% Abbreviations -%%============================================================================ - -%% Individual Title Words - -@string{advances = "Advances"} -@string{analysis = "Analysis"} -@string{and = "and"} -@string{applications = "Applications"} -@string{architectural = "Arch."} -@string{architecture = "Arch."} -@string{architectures = "Arch."} -@string{based = "Based"} -@string{code = "Code"} -@string{communications = "Commun."} -@string{compilation = "Compilation"} -@string{compiler = "Compiler"} -@string{compilers = "Compilers"} -@string{component = "Component"} -@string{computation = "Comp."} -@string{computational = "Comp."} -@string{computer = "Comp."} -@string{computing = "Comp."} -@string{concepts = "Concepts"} -@string{concurrency = "Concurrency"} -@string{conference = "Conf."} -@string{construction = "Const."} -@string{data = "Data"} -@string{database = "Database"} -@string{design = "Design"} -@string{distributed = "Distrib."} -@string{embedded = "Embedded"} -@string{engineering = "Eng'g"} -@string{environments = "Envs."} -@string{european = "Euro."} -@string{experience = "Experience"} -@string{for = "for"} -@string{formal = "Formal"} -@string{frontiers = "Frontiers"} -@string{functional = "Funct."} -@string{generation = "Gen."} -@string{high = "High"} -@string{higher = "Higher"} -@string{implementation = "Implementation"} -@string{in = "in"} -@string{informational = "Info."} -@string{international = "Int'l."} -@string{issue = "Issue"} -@string{java = "Java"} -@string{journal = "J."} -@string{journal-of = "J."} -@string{journal-of-the = "J."} -@string{language = "Lang."} -@string{languages = "Langs."} -@string{level = "Level"} -@string{logic = "Logic"} -@string{machines = "Machines"} -@string{management = "Mgmt."} -@string{measurement = "Measurement"} -@string{memory = "Mem."} -@string{methods = "Methods"} -@string{modeling = "Modeling"} -@string{models = "Models"} -@string{multiprocessing = "Multiproc."} -@string{object-oriented = "Object-Oriented"} -@string{of = "of"} -@string{on = "on"} -@string{openmp = "OpenMP"} -@string{operating = "Operating"} -@string{optimization = "Optimization"} -@string{order = "Order"} -@string{parallel = "Parallel"} -@string{performance = "Performance"} -@string{practice = "Practice"} -@string{principles = "Principles"} -@string{proceedings = "Proc."} -@string{proceedings-of-the = ""} -@string{program = "Program"} -@string{programming = "Programming"} -@string{programs = "Programs"} -@string{review = "Rev."} -@string{run = "Run"} -@string{scalable = "Scalable"} -@string{science = "Sci."} -@string{scientific = "Sci."} -@string{shared = "Shared"} -@string{software = "Softw."} -@string{special = "Special"} -@string{specification = "Specification"} -@string{supercomputing = "Supercomp."} -@string{support = "Support"} -@string{supportive = "Supportive"} -@string{surveys = "Survs."} -@string{symbolic = "Symb."} -@string{symposium = "Symp."} -@string{synthesis = "Synthesis"} -@string{system = "Syst."} -@string{systems = "Systs."} -@string{techniques = "Techs."} -@string{technology = "Tech."} -@string{the = "the"} -@string{theoretical = "Theor."} -@string{time = "Time"} -@string{tool = "Tool"} -@string{transactions = "Trans."} -@string{types = "Types"} -@string{verification = "Verif."} -@string{working = "Working"} -@string{workshop = "Workshop"} -@string{foundations = "Foundations"} - -%% Journals - -@string{TCS = ""#theoretical#" "#computer#" "#science#""} -@string{PC = ""#parallel#" "#computing#""} -@string{JSC = ""#journal-of#" "#supercomputing#""} -@string{SCP = ""#journal-of#" "#scientific#" "#computer#" "#programming#""} -@string{DMM = ""#languages#", "#compilers#", "#and#" "#run#"-"#time#" - "#environments#" "#for#" "#distributed#" "#memory#" "#machines#""} -@string{Founds = ""#symposium#" "#on#" "#the#" "#foundations#" "#of#" - "#computer#" "#science#""} -@string{TOPLAS = "ACM "#transactions#" "#on#" "#programming#" "#languages#" - "#and#" "#systems#" (TOPLAS)"} -@string{TECS = "ACM "#transactions#" "#on#" "#embedded#" "#computing#" - "#systems#""} -@string{TOCS = "ACM "#transactions#" "#on#" "#computing#" "#systems#""} -@string{TODS = "ACM "#transactions#" "#on#" "#database#" "#systems#""} -@string{CACM = ""#communications#" "#of#" "#the#" ACM"} -@string{JACM = ""#journal-of-the#" ACM"} -@string{SPE = ""#software#"--"#practice#" "#and#" "#experience#""} -@string{CPE = ""#concurrency#" -- "#practice#" "#and#" "#experience#""} -@string{IJPP = ""#international#" "#journal-of#" "#parallel#" "#programming#""} -@string{TSE = "IEEE "#transactions#" "#on#" "#software#" "#engineering#""} -@string{ICSE = "IEEE "#computational#" "#science#" "#and#" "#engineering#""} -@string{CSUR = "ACM "#computing#" "#surveys#""} -@string{TCL = "ACM "#transactions#" "#on#" "#computing#" "#logic#""} -@string{JFP = ""#journal-of#" "#functional#" "#programming#""} -@string{HOSC = ""#higher#" "#order#" "#symbolic#" "#computation#""} -@string{IC = ""#informational#" "#computing#""} -@string{TPDS = "IEEE "#transactions#" "#on#" "#parallel#" "#distributed#" "#systems#""} -@string{JPDC = ""#journal-of#" "#parallel#" "#and#" "#distributed#" "#computing#""} -@string{OSR = "SIGOPS "#operating#" "#systems#" "#review#""} - -%% Conferences - -@string{LICS = ""#proceedings-of-the#" "#symposium#" "#on#" "#logic#" "#in#" "#computer#" "#science#""} -@string{ICDCS = ""#proceedings-of-the#" "#international#" "#conference#" "#on#" "#distributed#" "#computing#" "#systems#""} -@string{SOSP = ""#symposium#" "#on#" "#operating#" "#systems#" "#principles#""} -@string{HPCA = ""#proceedings-of-the#" "#international#" "#symposium#" "#on#" "#high#"-"#performance#" "#computer#" "#architecture#""} -@string{ACST = ""#proceedings-of-the#" IASTED "#international#" "#conference#" "#on#" "#advances#" "#in#" "#computer#" "#science#" "#and#" "#technology#""}, -@string{PODC = ""#symposium#" "#on#" "#principles#" "#of#" "#distributed#" - "#computing#""} -@string{IFIP = ""#working#" "#conference#" "#on#" "#programming#" "#concepts#" - "#and#" "#methods#""} -@string{PPOPP = "PPOPP"} %"ACM SIGPLAN "#symposium#" "#on#" "#principles#" "#and#" "#practice#" -% "#of#" "#parallel#" "#programming#" (PPOPP)"} -@string{PLDI = "PLDI"} %"ACM "#conference#" "#on#" "#programming#" "#language#" "#design#" - "#and#" "#implementation#" (PLDI)"} -@string{CGO = ""#proceedings-of-the#" "#international#" "#symposium#" - "#on#" "#code#" "#generation#" "#and#" "#optimization#" (CGO)"} -@string{POPL = "POPL"} %""#proceedings-of-the#" ACM SIGACT-SIGPLAN "#symposium#" -% "#on#" "#principles#" "#of#" "#programming#" "#languages#" (POPL)"} -@string{OOPSLA = "OOPSLA"} % ""#proceedings-of-the#" ACM SIGPLAN "#conference#" "#on#" -% "#object-oriented#" "#programming#", "#systems#", "#languages#", and -% "#applications#" (OOPSLA)"} -@string{ISSTA = ""#proceedings-of-the#" ACM SIGSOFT "#international#" - "#symposium#" "#on#" "#software#" Testing "#and#" "#analysis#""} -@string{CASES = ""#proceedings-of-the#" "#international#" "#conference#" - "#on#" "#compilers#", "#architecture#" "#and#" "#synthesis#" "#for#" - "#embedded#" "#systems#" (CASES)"} -@string{LCTES = ""#conference#" "#on#" "#language#", "#compiler#", "#and#" - "#tool#" "#support#" "#for#" "#embedded#" "#systems#" "} -@string{ICFP = "ICFP"} -@string{SAS = ""#proceedings-of-the#" "#international#" "#symposium#" - "#on#" Static "#analysis#" (SAS)"} -@string{ISCA = ""#proceedings-of-the#" "#international#" "#conference#" - "#on#" "#computer#" "#architecture#" (ISCA)"} -@string{CC = ""#proceedings-of-the#" "#international#" "#conference#" - "#on#" "#compiler#" "#construction#" (CC)"} -@string{PACT = ""#proceedings-of-the#" "#international#" "#conference#" "#on#" - "#parallel#" "#architectures#" "#and#" "#compilation#" "#techniques#" - (PACT)"} -@string{ASPLOS = ""#proceedings-of-the#" "#international#" "#conference#" "#on#" - "#architectural#" Support "#for#" "#programming#" "#languages#" - "#and#" "#operating#" "#systems#" (ASPLOS)"} -@string{ISMM = ""#proceedings-of-the#" "#international#" - "#symposium#" "#on#" "#memory#" "#management#" (ISMM)"} -@string{ESEC = ""#proceedings-of-the#" "#european#" "#software#" - "#engineering#" "#conference#" (ESEC)"} -@string{SIGMOD = ""#proceedings-of-the#" ACM SIGMOD "#international#" - "#conference#" "#on#" "#management#" "#of#" "#data#" (SIGMOD)"} -@string{ICS = ""#proceedings-of-the#" "#international#" "#conference#" - "#on#" "#supercomputing#" (ICS)"} -@string{MICRO = ""#proceedings-of-the#" ACM/IEEE "#international#" - "#symposium#" "#on#" Microarchitecture (MICRO)"} -@string{SAVCBS = ""#proceedings-of-the#" "#conference#" "#on#" "#specification#" - "#and#" "#verification#" "#component#"-"#based#" "#systems#""} -@string{ECOOP = ""#proceedings-of-the#" "#european#" "#conference#" - "#on#" "#object-oriented#" "#programming#""} -@string{FRONTIERS = ""#proceedings-of-the#" "#symposium#" "#on#" "#the#" - "#frontiers#" "#of#" Massively "#parallel#" "#computation#""} -@string{SC = ""#proceedings-of-the#" ACM/IEEE "#conference#" "#on#" - "#supercomputing#""} -@string{Sigmetrics = ""#proceedings-of-the#" ACM SIGMETRICS "#conference#" - "#on#" "#measurement#" "#and#" "#modeling#" "#of#" "#computer#" - "#systems#""} -@string{ISDC = ""#proceedings-of-the#" "#international#" "#symposium#" "#on#" "#distributed#" "#computing#""} - -%% Workshops - -@string{EWOMP = ""#proceedings-of-the#" "#european#" "#workshop#" "#on#" "#openmp#""} -@string{LCR = ""#proceedings-of-the#" "#workshop#" "#on#" "#languages#", - "#compilers#", "#and#" "#run#"-"#time#" "#support#" "#for#" "#scalable#" - "#systems#""}, -@string{LCPC = "LCPC"} -@string{MSP = ""#proceedings-of-the#" ACM "#workshop#" "#on#" - "#memory#" "#system#" "#performance#""} -@string{PASTE = ""#proceedings-of-the#" "#workshop#" "#on#" "#program#" - "#analysis#" "#for#" "#software#" Tools "#and#" "#engineering#" (PASTE)"} -@string{IWMM = ""#proceedings-of-the#" "#international#" "#workshop#" - "#on#" "#memory#" "#management#""} -@string{WFTJP = ""#proceedings-of-the#" "#workshop#" "#on#" "#formal#" - "#techniques#" "#for#" "#java#" "#programs#""} -@string{TLDI = ""#proceedings-of-the#" "#international#" "#workshop#" "#on#" - "#types#" "#in#" "#language#" "#design#" "#and#" "#implementation#""} -@string{HIPS = ""#international#" "#workshop#" "#on#" "#high#"-"#level#" - "#programming#" "#models#" "#and#" "#supportive#" "#environments#""} - -%% -%% Cities -%% -@string{SanDiego = "San Diego, CA"} - - -%%============================================================================ -%% PERFORMANCE MODELS FOR PARALLEL PROGRAMS -%%============================================================================ - -@Article {EZL:TOC89, - Title = "{S}peedup versus {E}fficiency in {P}arallel {S}ystems", - Author = "Derek L. Eager and John Zahorjan and Edward D. Lazowska", - Journal = "IEEE Trans. on Computers", - Month = "March", - Year = "1989", - Volume = "C-38", - Number = "3", - Pages = "408-423", - Annote = { CATEGORY: PERFORMANCE: PARALLEL PROCESSING MODELS }, -} - - -%%============================================================================ -%% DATA PARALLEL LANGUAGES -%%============================================================================ - -@book{MetcalfReid:1992, - author = "Michael Metcalf and John Reid", - title = {{Fortran 90 Explained}}, - address = "New York", - year = "1992", - publisher = {Oxford University Press} -} - -@techreport{Fox:1990, - author = "Fox, G. and Hiranandani, S. and Kennedy, K. and Koelbel, C. and Kremer, U. and Tseng, C.-W. and Wu, M.-Y.", - title = {{Fortran {D} language specification}}, - number = "CRPC-TR90079", - month = "December", - institution = "Rice University", - address = "Houston, TX", - year = "1990", - url = "citeseer.ist.psu.edu/fox91fortran.html" } - -@techreport{CMFortran:1991, - author = {Thinking Machines Corp.}, - title = {{CM Fortran reference manual, version 1.0}}, - institution = {Thinking Machines Corp.}, - month = "February", - year = "1991", - address = "Cambridge, Massachusetts" -} - -@article{Hatcher:PPOPP91, - author = {Philip J. Hatcher and Anthony J. Lapadula and Robert R. Jones and Michael J. Quinn and Ray J. Anderson}, - title = {{A production-quality C* compiler for hypercube multicomputers}}, - journal = PPOPP, - year = {1991}, - isbn = {0-89791-390-6}, - pages = {73--82}, - location = {Williamsburg, Virginia}, - doi = {http://doi.acm.org/10.1145/109625.109634}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@techreport{Zima:1992, - author = "H. Zima and P. Brezany and B. Chapman and P. Mehrotra and A. Schwald", - title = {{Vienna Fortran --- A language specification}}, - number = "Internal Report 21", - institution = "ICASE, NASA Langley Research Center", - month = "March", - year = "1992" -} - -@article{HamelHatcherQuinn:1992, - author = {Lutz H. Hamel and Philip J. Hatcher and Michael J. Quinn}, - title = {{An optimizing C* compiler for a hypercube multicomputer}}, - journal = DMM, - year = {1992}, - isbn = {0-444-88712-1}, - pages = {285--298}, - publisher = {Elsevier Science Publishers B. V.}, - address = {Amsterdam, The Netherlands, The Netherlands}, -} - -% pC++ -@article{Malony:SC93, - author = {A. Malony and B. Mohr and P. Beckman and D. Gannon and S. Yang and F. Bodin and S. Kesavan}, - title = {{Implementing a parallel C++ runtime system for scalable parallel systems}}, - journal = SC, - year = {1993}, - isbn = {0-8186-4340-4}, - pages = {588--597}, - location = {Portland, OR}, - doi = {http://doi.acm.org/10.1145/169627.169802}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@techreport{HPF:1993, - author = "{High Performance Fortran Forum}", - title = {{High Performance Fortran language specification, version 1.0}}, - number = "CRPC-TR92225", - institution = "Rice University", - address = "Houston, TX", - year = "1993", - url = "citeseer.ist.psu.edu/fortran92high.html" -} - -@article{NESL:JPDC94, - author = "Guy~E. Blelloch and Siddhartha Chatterjee and - Jonathan~C. Hardwick and Jay Sipelstein and Marco Zagha", - title = {{Implementation of a portable nested data-parallel language}}, - journal = JPDC, - volume = 21, - number = 1, - pages = "4--14", - month = apr, - year = 1994 -} - -@article{GokhaleSchlesinger:Frontiers95, - author = {M. Gokhale and J. D. Schlesinger}, - title = {{A data parallel C and its platforms}}, - journal = FRONTIERS, - year = {1995}, - isbn = {0-8186-6965-9}, - pages = {194}, - publisher = {IEEE Computer Society}, - address = {Washington, DC}, - } - -@article{Metcalf:1995, - author = {Michael Metcalf}, - title = {{Fortran 95}}, - journal = {SIGPLAN Fortran Forum}, - volume = {15}, - number = {2}, - year = {1996}, - issn = {1061-7264}, - pages = {19--22}, - doi = {http://doi.acm.org/10.1145/242719.242726}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{DagumMenon:ICSE98, -author = {Leonardo Dagum and Ramesh Menon}, -title = {{OpenMP: An industry-standard API for shared-memory programming}}, -journal = ICSE, -volume = {05}, -number = {1}, -year = {1998}, -issn = {1070-9924}, -pages = {46-55}, -doi = {http://doi.ieeecomputersociety.org/10.1109/99.660313}, -publisher = {IEEE Computer Society}, -address = {Los Alamitos, CA}, -} - -@article{Chamberlain:TSE00, - author = {Bradford L. Chamberlain and Sung-Eun Choi and E. Christopher Lewis and Calvin Lin and Lawrence Snyder and W. Derrick Weathersby}, - title = {{ZPL: A machine independent programming language for parallel computers}}, - journal = TSE, - volume = {26}, - number = {3}, - year = {2000}, - issn = {0098-5589}, - pages = {197--211}, - doi = {http://dx.doi.org/10.1109/32.842947}, - publisher = {IEEE Press}, - address = {Piscataway, NJ}, - } - -@article{Bikshandi:PPOPP06, - author = {Ganesh Bikshandi and Jia Guo and Daniel Hoeflinger and Gheorghe Almasi and Basilio B. Fraguela and Mar\'{i}a J. Garzar\'{a}n and David Padua and Christoph von Praun}, - title = {{Programming for parallelism and locality with hierarchically tiled arrays}}, - journal = PPOPP, - year = {2006}, - isbn = {1-59593-189-9}, - pages = {48--57}, - location = {New York, NY}, - doi = {http://doi.acm.org/10.1145/1122971.1122981}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -%%============================================================================ -%% DATA PARALLEL PGAS LANGUAGES -%%============================================================================ - - -@Article{Titanium:CPE98, - author = {Kathy Yelick and Luigi Semenzato and Geoff Pike and Carleton Miyamoto and Ben Liblit and Arvind Krishnamurthy and Paul Hilfinger and Susan Graham and David Gay and Phil Colella and Alex Aiken}, - title = {{Titanium: A high-performance Java dialect}}, - journal = CPE, - year = {1998}, - volume = {10}, - number = {11-13}, - month = {Sept-Nov}, -} - - -@article{PGASEvaluation:PPOPP05, - author = {Cristian Coarf\u{a} and Yuri Dotsenko and John Mellor-Crummey and Fran\c{c}ois Cantonnet and Tarek El-Ghazawi and Ashrujit Mohanty and Yiyi Yao and Daniel Chavarr\'{i}a-Miranda}, - title = {{An evaluation of global address space languages: - Co-Array Fortran and Unified Parallel C}}, - journal = PPOPP, - year = {2005}, - isbn = {1-59593-080-9}, - pages = {36--47}, - location = {Chicago, IL}, - doi = {http://doi.acm.org/10.1145/1065944.1065950}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@Book{UPCBook, - author = {Tarek El-Ghazawi and William Carlson and Thomas Sterling and Katherine Yelick}, - title = {{UPC}: Distributed Shared-Memory Programming}, - publisher = {Wiley-Interscience}, - year = {2005}, - month = {June}, -} - - -%%============================================================================ -%% COMPILING DATA PARALLEL LANGUAGES TO NUMA AND CLUSTER ARCHITECTURES -%%============================================================================ - -% Extensions to HPF for SMP clusters - -@article{BenknerSipkova:IJPP03, - author = {Siegfried Benkner and Viera Sipkova}, - title = {{Exploiting distributed-memory and shared-memory parallelism on clusters of SMPs with data parallel programs}}, - journal = IJPP, - volume = {31}, - number = {1}, - year = {2003}, - issn = {0885-7458}, - pages = {3--19}, - doi = {http://dx.doi.org/10.1023/A:1021782118861}, - publisher = {Kluwer Academic Publishers}, - address = {Norwell, MA, USA}, -} - -% Extensions to OMP for SMP clusters - -@article{Yudi:ACST06, - author = {Zhao Yudi and Hu Changjun and Wang Shengyuan and Zhang Suqin}, - title = {{An extended OpenMP targeting on the hybrid architecture of SMP-cluster}}, - journal = ACST, - year = {2006}, - isbn = {0-88986-545-0}, - pages = {50--54}, - location = {Puerto Vallarta, Mexico}, - publisher = {ACTA Press}, - address = {Anaheim, CA, USA}, -} - -@article{Hu:JPDC00, - author = {Y. Charlie Hu and Honghui Lu and Alan L. Cox and Willy Zwaenepoel}, - title = {{OpenMP for networks of SMPs}}, - journal = JPDC, - volume = {60}, - number = {12}, - year = {2000}, - issn = {0743-7315}, - pages = {1512--1530}, - doi = {http://dx.doi.org/10.1006/jpdc.2000.1658}, - publisher = {Academic Press, Inc.}, - address = {Orlando, FL, USA}, -} - -@article{Sato:EWOMP99, - author = {Mitsuhisa Sato and Shigehisa Satoh and Kazuhiro Kusano and Yoshio Tanaka}, - title = {{Design of OpenMP compiler for an SMP cluster}}, - journal = EWOMP, - city = "Lund", - month = Sep, - year = "1999", - pages = "32-39", - url = "citeseer.ist.psu.edu/sato99design.html" -} - -% SIMPLE - -@article{BaderJaja:JPDC99, - author = "David A. Bader and Joseph JaJa", - title = {{SIMPLE: A methodology for programming high performance algorithms on clusters of symmetric multiprocessors (SMPs)}}, - journal = JPDC, - volume = "58", - number = "1", - pages = "92-108", - year = "1999", - url = "citeseer.ist.psu.edu/bader97simple.html" -} - -% OMP on cluster/NUMA - -@article{Bircsak:SC00, - author = {John Bircsak and Peter Craig and RaeLyn Crowell and Zarka Cvetanovic and Jonathan Harris and C. Alexander Nelson and Carl D. Offner}, - title = {{Extending OpenMP for NUMA machines}}, - journal = SC, - year = {2000}, - isbn = {0-7803-9802-5}, - pages = {48}, - location = {Dallas, Texas, United States}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} - -@misc{ChapmanMehrotraZima:99, - author = "B. Chapman and P. Mehrotra and H. Zima", - title = {{Enhancing OpenMP with features for locality control}}, - text = "B. Chapman, P. Mehrotra, and H. Zima. Enhancing OpenMP with Features for - Locality Control. Technical report TR99-02, Inst. for Software Technology - and Parallel Systems, U. Vienna, Feb. 1999. www.par.univie.ac.at.", - year = "1999", - url = "citeseer.ist.psu.edu/chapman99enhancing.html" -} - -@article{BasumallikEigenmann:ICS05, - author = {Ayon Basumallik and Rudolf Eigenmann}, - title = {{Towards automatic translation of OpenMP to MPI}}, - journal = ICS, - year = {2005}, - isbn = {1-59593-167-8}, - pages = {189--198}, - location = {Cambridge, Massachusetts}, - doi = {http://doi.acm.org/10.1145/1088149.1088174}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -% OMP on SDM - -@article{MinBasumallikEigenmann:IJPP03, - author = {Seung-Jai Min and Ayon Basumallik and Rudolf Eigenmann}, - title = {{Optimizing OpenMP programs on software distributed shared memory systems}}, - journal = IJPP, - volume = {31}, - number = {3}, - year = {2003}, - issn = {0885-7458}, - pages = {225--249}, - doi = {http://dx.doi.org/10.1023/A:1023090719310}, - publisher = {Kluwer Academic Publishers}, - address = {Norwell, MA, USA}, -} - -@article{KeeKimHa:SC03, - author = {Yang-Suk Kee and Jin-Soo Kim and Soonhoi Ha}, - title = {{ParADE: An OpenMP programming environment for SMP cluster systems}}, - journal = SC, - year = {2003}, - isbn = {1-58113-695-1}, - pages = {6}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} - -% Manual hybrid parallelization - -@article{Hongzhang:PC03, - author = {Hongzhang Shan and Jaswinder P. Singh and Leonid Oliker and Rupak Biswas}, - title = {{Message passing and shared address space parallelism on an SMP cluster}}, - journal = PC, - volume = {29}, - number = {2}, - year = {2003}, - issn = {0167-8191}, - pages = {167--186}, - doi = {http://dx.doi.org/10.1016/S0167-8191(02)00222-3}, - publisher = {Elsevier Science Publishers B. V.}, - address = {Amsterdam, The Netherlands, The Netherlands}, -} - -@article{CappelloEtiemble:SC00, - author = {Franck Cappello and Daniel Etiemble}, - title = {{MPI versus MPI+OpenMP on IBM SP for the NAS benchmarks}}, - journal = SC, - year = {2000}, - isbn = {0-7803-9802-5}, - pages = {12}, - location = {Dallas, Texas, United States}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} - -@article{Henty:SC00, - Author = {D. S. Henty}, - title = {{Performance of hybrid message-passing and shared-memory parallelism for discrete element modeling}}, - journal = SC, - year = {2000}, - isbn = {0-7803-9802-5}, - pages = {10}, - location = {Dallas, Texas, United States}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} - -%%============================================================================ -%% DATAFLOW LANGUAGES -%%============================================================================ - -@techreport{Nikhil:1990, - author = {Rishiyur S. Nikhil}, - title = {{ID} version 90.0 reference manual}, - number = {Computation Structures Group Memo 284-1, Laboratory for Computer Science}, - institution = "Massachusetts Institute of Technology", - month = "July", - year = 1990 -} - -@article{FeoCannOldehoeft:JPDC90, - author = {John T. Feo and David C. Cann and Rodney R. Oldehoeft}, - title = {{A report on the Sisal language project}}, - journal = JPDC, - volume = {10}, - number = {4}, - year = {1990}, - issn = {0743-7315}, - pages = {349--366}, - doi = {http://dx.doi.org/10.1016/0743-7315(90)90035-N}, - publisher = {Academic Press, Inc.}, - address = {Orlando, FL}, - } - -@article{RulghaverYeo:1990, - author = {A. B. Rulghaver and T. T. E. Yeo}, - title = {{Language support for a semi-dataflow parallel programming environment}}, - journal = {SIGPLAN Not.}, - volume = {25}, - number = {9}, - year = {1990}, - issn = {0362-1340}, - pages = {39--47}, - doi = {http://doi.acm.org/10.1145/101344.101353}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{JohnstonHannaMillar:CSUR04, - author = {Wesley M. Johnston and J. R. Paul Hanna and Richard J. Millar}, - title = {{Advances in dataflow programming languages}}, - journal = CSUR, - volume = {36}, - number = {1}, - year = {2004}, - issn = {0360-0300}, - pages = {1--34}, - doi = {http://doi.acm.org/10.1145/1013208.1013209}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -%%============================================================================ -%% PARALLEL FUNCTIONAL LANGUAGES -%%============================================================================ - -@article{JonesGordonFinne:POPL96, - author = "Simon Peyton Jones and Andrew Gordon and Sigbjorn Finne", - title = {{Concurrent Haskell}}, - journal = POPL, - month = "21--24", - address = "St. Petersburg Beach, Florida", - pages = "295--308", - year = "1996", - url = "citeseer.ist.psu.edu/jones96concurrent.html" -} - - -@book{Reppy:1999, - author = {John H. Reppy}, - title = {{Concurrent Programming in ML}}, - year = {1999}, - isbn = {0-521-48089-2}, - publisher = {Cambridge University Press}, - address = {New York, NY}, -} - -%%TODO: Pena --> Pe~na -%%TODO: A. J. Reb'on --> 'A. J. Reb'on -%%TODO: I can't figure out how to get LaTeX to handle these accents correctly. -@article{Loidl:HOSC03, - author = {H.-W. Loidl and F. Rubio and N. Scaife and K. Hammond and - S. Horiguchi and U. Klusik and R. Loogen and - G. J. Michaelson and R. Pena and S. Priebe - and \'{A} J. Reb\'{o}n and P. W. Trinder}, - title = {{Comparing parallel functional languages: Programming and performance}}, - journal = {Higher Order Symbol. Comput.}, - volume = {16}, - number = {3}, - year = {2003}, - issn = {1388-3690}, - pages = {203--251}, - doi = {http://dx.doi.org/10.1023/A:1025641323400}, - publisher = {Kluwer Academic Publishers}, - address = {Hingham, MA}, -} - - -@article{DowseButterfield:ICFP06, - author = {Malcolm Dowse and Andrew Butterfield}, - title = {{Modelling deterministic concurrent I/O}}, - journal = ICFP, - year = {2006}, - isbn = {1-59593-309-3}, - pages = {148--159}, - location = {Portland, OR}, - doi = {http://doi.acm.org/10.1145/1159803.1159823}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -%%============================================================================ -%% PARALLEL MESSAGE PASSING LANGUAGES -%%============================================================================ - -@techreport{ChandyKesselman:1992, - author = {Chandy, K. Mani and Kesselman, Carl}, - title = {{Compositional C++: Compositional parallel programming}}, - year = {1992}, - number = "CaltechCSTR:1992.cs-tr-92-13", - institution = "California Institute of Technology" -} - -@techreport{ChandyFoster:1993, - author = {K. M Chandy and Ian Foster}, - title = {{A deterministic notation for cooperating processes}}, - year = {1993}, - source = {http://www.ncstrl.org:8900/ncstrl/servlet/search?formname=detail\&id=oai%3Acaltechcstr%3A00000264}, - institution = {California Institute of Technology}, - address = {Pasadena, CA}, -} - - -%%============================================================================ -%% NON-SPECULATIVE FUTURES -%%============================================================================ - -@article{Halstead:TOPLAS85, - author = {Robert H. Halstead, Jr.}, - title = {{Multilisp: A language for concurrent symbolic computation}}, - journal = TOPLAS, - volume = {7}, - number = {4}, - year = {1985}, - issn = {0164-0925}, - pages = {501--538}, - doi = {http://doi.acm.org/10.1145/4472.4478}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{KranzHalsteadMohr:PLDI89, - author = {D. A. Kranz and R. H. Halstead, Jr. and E. Mohr}, - title = {{Mul-T: A high-performance parallel Lisp}}, - journal = PLDI, - year = {1989}, - isbn = {0-89791-306-X}, - pages = {81--90}, - location = {Portland, OR}, - doi = {http://doi.acm.org/10.1145/73141.74825}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{WagnerCalder:PPOPP93, - author = {David B. Wagner and Bradley G. Calder}, - title = {{Leapfrogging: A portable technique for implementing efficient futures}}, - journal = PPOPP, - year = {1993}, - isbn = {0-89791-589-5}, - pages = {208--217}, - location = {San Diego, CA}, - doi = {http://doi.acm.org/10.1145/155332.155354}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -%%============================================================================ -%% SPECULATIVE FUTURES AND THREADS (SOFTWARE) -%%============================================================================ - -@article{Berger:OOPSLA09, - author = {Emery D. Berger and Ting Yang and Tongping Liu and Gene Novark}, - title = {{Grace: Safe Multithreaded Programming for C/C++}}, - journal = {OOPSLA}, - year = {2009} -} - -@article{FlanaganFelleisen:POPL95, - author = {Cormac Flanagan and Matthias Felleisen}, - title = {{The semantics of future and its use in program optimization}}, - journal = {POPL}, - year = {1995}, -} - -@article{Moreau:ICFP96, - author = {Luc Moreau}, - title = {{The semantics of Scheme with future}}, - journal = {ICFP}, - year = {1996}, -} - -@article{FlanaganFelleisen:JFP99, - author = {C. Flanagan and M. Felleisen}, - title = {{The semantics of future and an application}}, - journal = JFP, - volume = {9}, - number = {1}, - year = {1999}, - issn = {0956-7968}, - pages = {1--31}, - doi = {http://dx.doi.org/10.1017/S0956796899003329}, - publisher = {Cambridge University Press}, - address = {New York, NY}, - } - -@article{WelcJagannathanHosking:OOPSLA05, - author = {Adam Welc and Suresh Jagannathan and Antony Hosking}, - title = {{Safe futures for Java}}, - journal = OOPSLA, - year = {2005}, -} - -%%============================================================================ -%% THREAD LEVEL SPECULATION (HARDWARE) -%%============================================================================ - -%% There are earlier papers, starting with MultiScalar... - -@article{VonPraun:PPOPP07, - author = {von Praun, Christoph and Ceze, Luis and Ca\c{s}caval, Calin}, - title = {Implicit parallelism with ordered transactions}, - journal = PPOPP, - year = {2007}, -} - -@article{Prabhu:PPOPP03, - author = {Manohar K. Prabhu and Kunle Olukotun}, - title = {{Using thread-level speculation to simplify manual parallelization}}, - journal = PPOPP, - year = {2003}, -} - -@article{Liu:PPOPP06, - author = {Wei Liu and James Tuck and Luis Ceze and Wonsun Ahn and Karin Strauss and Jose Renau and Josep Torrellas}, - title = {{POSH: a TLS compiler that exploits program structure}}, - journal = PPOPP, - year = {2006}, -} - -@article{Steffan:TOCS05, - author = {J. Gregory Steffan and Christopher Colohan and Antonia Zhai and Todd C. Mowry}, - title = {{The STAMPede approach to thread-level speculation}}, - journal = TOCS, - year = {2005}, -} - - -@phdthesis{Prabhu:Thesis2006, - author = {Manohar Karkal Prabhu}, - note = {Adviser-Oyekunle A. Olukotun}, - title = {{Parallel programming using thread-level speculation}}, - year = {2006}, - isbn = {0-542-43195-5}, - order_no = {AAI3197497}, - school = {Stanford University}, - address = {Stanford, CA}, -} - - -@article{ScalableTLS:ISCA00, - author = {Marcelo Cintra and Jos\'{e} F. Mart\'{i}nez and Josep Torrellas}, - title = {{Architectural support for scalable speculative parallelization in shared-memory multiprocessors}}, - journal = ISCA, - year = {2000}, - isbn = {1-58113-232-8}, - pages = {13--24}, - location = {Vancouver, British Columbia, Canada}, - doi = {http://doi.acm.org/10.1145/339647.363382}, - publisher = {ACM Press}, - address = {New York, NY}, -} - - -@article{Bocchino:HotPar09, - author = {Robert Bocchino and Vikram Adve and Sarita Adve and Marc Snir}, - title = {{Parallel programming must be deterministic by default}}, - journal = {First USENIX Workshop on Hot Topics in Parallelism (HotPar)}, - year = {2009}, -} - -%%============================================================================ -%% OTHER PARALLEL LANGUAGES WITH DETERMINISTIC GUARANTEES -%%============================================================================ - - -@article{Dennis:PPOPP09, - author = {Jack Dennis}, - title = {Keynote address}, - journal = {PPOPP}, - year = {2009} -} - -@article{TerauchiAiken:TOPLAS08, - author = {Tachio Terauchi and Alex Aiken}, - title = {{A capability calculus for concurrency and determinism}}, - journal = {TOPLAS}, - year = {2008}, -} - -@techreport{Snir:PPL1, - author = "Marc Snir", - title = {{Parallel Programming Language 1 (PPL1), V0.9 --- Draft}}, - number = "UIUCDCS-R-2006-2969", - institution = "U. Illinois", - year = "2006"} - -% institution = "University of Illinois at Urbana-Champaign", - - - -@Article{DeSouzaKale:LCPC04, - author = {Jayant DeSouza and Laxmikant V. Kal\'e}, - title = {{MSA}: Multiphase Specifically Shared Arrays}, - journal = LCPC, - year = 2004, -} - -@article{Boyland:SAS03, - author = {John Boyland}, - title = {{Checking interference with fractional permissions}}, - journal = {SAS}, - year = {2003}, -} - -@article{RinardLam:TOPLAS98, - author = {Martin C. Rinard and Monica S. Lam}, - title = {{The design, implementation, and evaluation of Jade}}, - journal = {TOPLAS}, - year = {1998} -} - -@phdthesis{Jade:Thesis, - author = {Rinard, Martin C.}, - title = {{The design, implementation and evaluation of Jade: A portable, implicitly parallel programming language}}, - year = {1994}, - school = {Stanford University} - } - -@techreport{HammelGifford:FX88, - author = "R. T. Hammel and D. K. Gifford", - title = {{FX-87 performance measurements: Dataflow implementation}}, - number = "MIT/LCS/TR-421", - pages = "49", - year = "1988" -} - -@techreport{Gifford:FX92, - author = {David K. Gifford and Pierre Jouvelot and Mark A. Sheldon and James W. O'Toole}, - title = {{Report on the FX-91 programming language}}, - number = "MIT/LCS/TR-531", - pages = "27", - year = "1992" -} - -@article{Kendo:ASPLOS09, - author = {Olszewski,, Marek and Ansel,, Jason and Amarasinghe,, Saman}, - title = {{Kendo: Efficient Deterministic Multithreading in Software}}, - journal = {ASPLOS}, - year = {2009}, - } - -@article{DMP:ASPLOS09, - author = {Devietti, Joseph and Lucia, Brandon and Ceze, Luis and - Oskin, Mark}, - title = {{DMP: Deterministic Shared Memory Multiprocessing}}, - journal = {ASPLOS}, - year = {2009}, - } - -@article{Allen:PPOPP09, - author = {Allen, Matthew D. and Sridharan, Srinath and Sohi, Gurindar S.}, - title = {{Serialization sets: A dynamic dependence-based parallel execution model}}, - journal = PPOPP, - year = {2009}, -} - -@article{InspectorExecutor:JPDC94, - author = {Das,, Raja and Uysal,, Mustafa and Saltz,, Joel and Hwang,, Yuan-Shin}, - title = {Communication optimizations for irregular scientific computations on distributed memory architectures}, - journal = {J. Parallel Distrib. Comput.}, - volume = {22}, - number = {3}, - year = {1994}, - } -% author = {Das,, Raja and Uysal,, Mustafa and Saltz,, Joel and Hwang,, Yuan-Shin}, -% issn = {0743-7315}, -% pages = {462--478}, -% doi = {http://dx.doi.org/10.1006/jpdc.1994.1104}, -% publisher = {Academic Press, Inc.}, -% address = {Orlando, FL, USA}, - - -%%============================================================================ -%% PARALLEL LANGUAGES AND LIBRARIES WITHOUT DETERMINISTIC GUARANTEES -%%============================================================================ - -@book{Butenhof:1997, - author = {David R. Butenhof}, - title = {{Programming with POSIX Threads}}, - year = {1997}, - isbn = {0-201-63392-2}, - publisher = {Addison-Wesley Longman Publishing Co., Inc.}, - address = {Boston, MA}, -} - -@book{ArnoldGoslingHolmes:2005, - author = {Ken Arnold and James Gosling and David Holmes}, - title = {{The Java Programming Language, Fourth Edition}}, - year = {2005}, - isbn = {0-321-34980-6}, - publisher = {Addison-Wesley Professional}, - address = {Boston, MA}, -} - -@book{Chandra:2001, - author = {Robit Chandra and Leonardo Dagum and Dave Kohr and Dror Maydan and Jeff McDonald and Ramesh Menon}, - title = {{Parallel Programming in OpenMP}}, - year = {2001}, - isbn = {1-55860-671-8}, - publisher = {Morgan Kaufmann Publishers Inc.}, - address = {San Francisco, CA}, -} - -@article{Charm++:OOPSLA93, - author = {Laxmikant V. Kale and Sanjeev Krishnan}, - title = {{CHARM++: A portable concurrent object oriented system based on C++}}, - journal = OOPSLA, - year = {1993}, - isbn = {0-89791-587-9}, - pages = {91--108}, - location = {Washington, D.C.}, - doi = {http://doi.acm.org/10.1145/165854.165874}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@Article{Cilk:PPOPP95, - Author = {Robert D. Blumofe and Christopher F. Joerg and - Bradley C. Kuszmaul and Charles E. Leiserson and - Keith H. Randall and Yuli Zhou}, - Title = {{Cilk: An efficient multithreaded runtime system}}, - Journal = PPOPP, - Year = 1995, -} - - -@Article{Cilk:PLDI98, - Title = {The Implementation of the {C}ilk-5 Multithreaded Language}, - Author = {M. Frigo and C. Leiserson and K. Randall}, - Journal = PLDI, - Address = {Montreal, Quebec, Canada}, - Month = Jun, - Year = 1998, - Pages = {212-223}, - Annote = {CATEGORY: LANGUAGES: PARALLEL.} -} - -@Article{CacheOblivious:FOCS99, - Title = {Cache-Oblivious Algorithms}, - Author = {Matteo Frigo and Charles E. Leiserson and Harald Prokop and Sridhar Ramachandran}, - Journal = Founds, - Address = {New York}, - Month = Oct, - Year = 1999, - Pages = {17-18}, - Annote = {CATEGORY: LANGUAGES: PARALLEL.}} - - -@techreport{Cilk:2001, - author = "{Supercomputing Technologies Group}", - title = {Cilk 5.3.2 Reference Manual}, - month = {November}, - year = {2001}, - institution = "Massachusetts Institute of Technology", - address = {Cambridge, MA}, -} - - -%%============================================================================ -%% INTEGRATING DATA AND TASK PARALLELISM -%%============================================================================ - -@article{HassenBalJacobs:TOPLAS98, - author = {Saniya Ben Hassen and Henri E. Bal and Ceriel J. H. Jacobs}, - title = {{A task- and data-parallel programming language based on shared objects}}, - journal = TOPLAS, - volume = {20}, - number = {6}, - year = {1998}, - issn = {0164-0925}, - pages = {1131--1170}, - doi = {http://doi.acm.org/10.1145/295656.295658}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -% Chapel -@article{CallahanChamberlainZima:HIPS04, - author = {D. Callahan and B. Chamberlain and H. Zima}, - title = {{The {C}ascade High Productivity Language}}, - journal = HIPS, - publisher = {IEEE Computer Society}, - year = {2004}, - isbn = {0-7695-2151-7}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - -% Fortress -@techreport{Fortress:2005, - author = "{Sun Microsystems, Inc.}", - title = {{The Fortress language specification, version 0.707}}, - institution = {Sun Microsystems, Inc.}, - month = "July", - year = "2005" -} - -% X10 -@article{Charles:OOPSLA05, - author = {Charles, Philippe and Grothoff, Christian and Saraswat, - Vijay and Donawa, Christopher and Kielstra, Allan - and Ebcioglu, Kemal and von Praun, Christoph and - Sarkar, Vivek}, - title = {{X10: An object-oriented approach to non-uniform cluster computing}}, - journal = {OOPSLA}, - year = {2005}, -} - -%%============================================================================ -%% ADDING SIDE EFFECTS TO FUNCTIONAL LANGUAGES -%%============================================================================ - -@article{TerauchiAiken05:ICFP05, - author = {Tachio Terauchi and Alex Aiken}, - title = {{Witnessing side-effects}}, - journal = ICFP, - year = {2005}, - isbn = {1-59593-064-7}, - pages = {105--115}, - location = {Tallinn, Estonia}, - doi = {http://doi.acm.org/10.1145/1086365.1086379}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@techreport{Gifford:1987, - author = {D. K. Gifford and P. Jouvelot and J. M. Lucassen and M. A. Sheldon}, - title = {{FX-87 reference manual}}, - number = {MIT/LCS/TR-407}, - institution = {Massachusetts Institute of Technology, Laboratory for Computer Science}, - month = {September}, - year = {1987} -} - -@article{JouvelotGifford:POPL91, - author = {Pierre Jouvelot and David Gifford}, - title = {{Algebraic reconstruction of types and effects}}, - journal = POPL, - year = {1991}, - isbn = {0-89791-419-8}, - pages = {303--310}, - location = {Orlando, Florida}, - doi = {http://doi.acm.org/10.1145/99583.99623}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@article{WadlerThiemann:TCL03, - author = {Philip Wadler and Peter Thiemann}, - title = {{The marriage of effects and monads}}, - journal = TCL, - volume = {4}, - number = {1}, - year = {2003}, - issn = {1529-3785}, - pages = {1--32}, - doi = {http://doi.acm.org/10.1145/601775.601776}, - publisher = {ACM Press}, - address = {New York, NY}, -} - - -%%============================================================================ -%% IMMUTABLE REFERENCES IN OO LANGUAGES -%%============================================================================ - -@article{TschantzErnst:OOPSLA05, - author = {Matthew S. Tschantz and Michael D. Ernst}, - title = {{Javari: Adding reference immutability to Java}}, - journal = OOPSLA, - year = {2005}, - isbn = {1-59593-031-0}, - pages = {211--230}, - location = {San Diego, CA}, - doi = {http://doi.acm.org/10.1145/1094811.1094828}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -%%============================================================================ -%% OWNERSHIP TYPES FOR OO LANGUAGES -%%============================================================================ - -@article{ClarkePotterNoble:OOPSLA98, - author = {Clarke, David G. and Potter, John M. and Noble, James}, - title = {{Ownership types for flexible alias protection}}, - journal = OOPSLA, - year = 1998 - } - -@article{BoyapatiLiskovShrira:POPL03, - author = {Chandrasekhar Boyapati and Barbara Liskov and Liuba Shrira}, - title = {{Ownership types for object encapsulation}}, - journal = POPL, - year = {2003}, - isbn = {1-58113-628-5}, - pages = {213--223}, - location = {New Orleans, Louisiana}, - doi = {http://doi.acm.org/10.1145/604131.604156}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@article{KrishnaswamiAldrich:PLDI05, - author = {Neel Krishnaswami and Jonathan Aldrich}, - title = {{Permission-based ownership: Encapsulating state in higher-order typed languages}}, - journal = PLDI, - year = {2005}, - isbn = {1-59593-056-6}, - pages = {96--106}, - location = {Chicago, IL}, - doi = {http://doi.acm.org/10.1145/1065010.1065023}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@article{Smith:ECOOP05, - author = "Matthew Smith", - title ={{Towards an effects system for ownership domains}}, - journal = {ECOOP}, - year = 2005 -} - -@article{Potanin:OOPSLA06, - author = {Alex Potanin and James Noble and Dave Clarke and Robert Biddle}, - title = {{Generic ownership for generic Java}}, - journal = {OOPSLA}, - year = {2006}, - } - -@article{Cameron:OOPSLA2007, - author = {Cameron, Nicholas R. and Drossopoulou, Sophia and Noble, James and Smith, Matthew J.}, - title = {{Multiple ownership}}, - journal = {OOPSLA}, - year = 2007 -} - -%%============================================================================ -%% PREVENTING RACES AND DEADLOCKS -%%============================================================================ - -@article{Jacobs:TOPLAS08, - author = {Bart Jacobs and Frank Piessens and Jan Smans and K. Rustan M. Leino and Wolfram Schulte}, - title = {{A programming model for concurrent object-oriented programs}}, - journal = {TOPLAS}, - year = {2008}, -} - -@article{BoyapatiRinard:OOPSLA01, - author = {Chandrasekhar Boyapati and Martin Rinard}, - title = {{A parameterized type system for race-free Java programs}}, - journal = OOPSLA, - year = {2001}, -} - -@article{BoyapatiLeeRinard:OOPSLA02, - author = {Boyapati, Chandrasekhar and Lee, Robert and Rinard, Martin}, - title = {{Ownership types for safe programming: Preventing data races and deadlocks}}, - journal = OOPSLA, - year = {2002}, - } - -@article{AbadiFlanaganFreund:TOPLAS06, - author = {Martin Abadi and Cormac Flanagan and Stephen N. Freund}, - title = {{Types for safe locking: Static race detection for Java}}, - journal = {TOPLAS}, - year = {2006}, -} - -%%============================================================================ -%% Managing EFFECTS -%%============================================================================ - -@article{Reynolds:POPL78, - author = {John C. Reynolds}, - title = {{Syntactic control of interference}}, - journal = POPL, - year = {1978}, - pages = {39--46}, - location = {Tucson, Arizona}, - doi = {http://doi.acm.org/10.1145/512760.512766}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@Article{Talpin:JFP1992, - title={{Polymorphic type, region and effect inference}}, - author={Jean-Pierre Talpin and Pierre Jouvelot}, - pages={245--271}, - journal=JFP, - month={July}, - year=1992, - volume=2, - number=3 -} - -@article{LucassenGifford:POPL88, - author = {J. M. Lucassen and D. K. Gifford}, - title = {{Polymorphic effect systems}}, - journal = {POPL}, - year = {1988}, -} - -@article{DeLineFaehndrich:PLDI01, - author = {Robert DeLine and Manuel F\"{a}hndrich}, - title = {{Enforcing high-level protocols in low-level software}}, - journal = PLDI, - year = {2001}, - pages = {59--69}, - location = {Snowbird, Utah}, - } - -@article{Neamtiu:POPL08, - author = {Iulian Neamtiu and Michael Hicks and Jeffrey S. Foster and Polyvios Pratikakis}, - title = {{Contextual effects for version-consistent dynamic software updating and safe concurrent programming}}, - journal = POPL, - year = {2008}, - isbn = {978-1-59593-689-9}, - pages = {37--49}, - location = {San Francisco, California, USA}, - doi = {http://doi.acm.org/10.1145/1328438.1328447}, - publisher = {ACM}, - address = {New York, NY, USA}, - } - -%%============================================================================ -%% MANAGING EFFECTS IN OO LANGUAGES -%%============================================================================ - -@article{GreenhouseBoyland:ECOOP99, - author = {Aaron Greenhouse and John Boyland}, - title = {{An object-oriented effects system}}, - journal = {ECOOP}, - year = {1999}, -} - -@article{Boyland:WFTJP01, - author = {John Boyland}, - title = {{The interdependence of effects and uniqueness}}, - journal = WFTJP, - year = {2001}, -} - -@article{Leino:OOPSLA98, - author = "K. Rustan M. Leino", - title = {{Data groups: Specifying the modification of extended state}}, - journal = {OOPSLA}, - year = {1998} -} - -@article{RLPHZ:PLDI02, - author = {K. Rustan M. Leino and Arnd Poetzsch-Heffter and Yunhong Zhou}, - title = {{Using data groups to specify and check side effects}}, - journal = PLDI, - year = {2002}, -} - -@article{ClarkeDrossopoulou:OOPSLA02, - author = {Dave Clarke and Sophia Drossopoulou}, - title = {{Ownership, encapsulation and the disjointness of type and effect}}, - journal = {OOPSLA}, - year = {2002}, -} - -% This paper uses ownership; but it uses effects to relax the notion -% of representation containment. -@article{LuPotter:POPL06, - author = {Yi Lu and John Potter}, - title = {{Protecting representation with effect encapsulation}}, - journal = POPL, - year = {2006}, -} - -%%============================================================================ -%% ALIAS ANNOTATIONS FOR OO LANGUAGES -%%============================================================================ - -@article{VitekBokowski:OOPSLA99, - author = {Jan Vitek and Boris Bokowski}, - title = {{Confined types}}, - journal = OOPSLA, - year = {1999}, - isbn = {1-58113-238-7}, - pages = {82--96}, - location = {Denver, Colorado}, - doi = {http://doi.acm.org/10.1145/320384.320392}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{AldrichKostadinovChambers:OOPSLA02, - author = {Jonathan Aldrich and Valentin Kostadinov and Craig Chambers}, - title = {{Alias annotations for program understanding}}, - journal = OOPSLA, - year = {2002}, - isbn = {1-58113-471-1}, - pages = {311--330}, - location = {Seattle, WA}, - doi = {http://doi.acm.org/10.1145/582419.582448}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@article{KuncakLamRinard:POPL02, - author = {Viktor Kuncak and Patrick Lam and Martin Rinard}, - title = {{Role analysis}}, - journal = POPL, - year = {2002}, - isbn = {1-58113-450-9}, - pages = {17--32}, - location = {Portland, OR}, - doi = {http://doi.acm.org/10.1145/503272.503276}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@article{Kulczycki:SAVCBS05, - author = {Gregory Kulczycki and Murali Sitaraman and Bruce W. Weide and Atanas Rountev}, - title = {{A specification-based approach to reasoning about pointers}}, - journal = SAVCBS, - year = {2005}, - isbn = {1-59593-371-9}, - pages = {7}, - location = {Lisbon, Portugal}, - doi = {http://doi.acm.org/10.1145/1123058.1123066}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -%%============================================================================ -%% REGION-BASED MEMORY MANAGEMENT -%%============================================================================ - -@article{Tofte:HOSC04, - author = {Mads Tofte and Lars Birkedal and Martin Elsman and Niels Hallenberg}, - title = {{A retrospective on region-based memory management}}, - journal = HOSC, - volume = {17}, - number = {3}, - year = {2004}, - issn = {1388-3690}, - pages = {245--265}, - doi = {http://dx.doi.org/10.1023/B:LISP.0000029446.78563.a4}, - publisher = {Kluwer Academic Publishers}, - address = {Hingham, MA}, - } - -@article{TofteTalpin:IC97, - author = {Mads Tofte and Jean-Pierre Talpin}, - title = {{Region-based memory management}}, - journal = IC, - volume = {132}, - number = {2}, - year = {1997}, - issn = {0890-5401}, - pages = {109--176}, - doi = {http://dx.doi.org/10.1006/inco.1996.2613}, - publisher = {Academic Press, Inc.}, - address = {Duluth, MN}, - } - -@article{Grossman:PLDI02, - author = {Dan Grossman and Greg Morrisett and Trevor Jim and Michael Hicks and Yanling Wang and James Cheney}, - title = {{Region-based memory management in Cyclone}}, - journal = PLDI, - year = {2002}, - isbn = {1-58113-463-0}, - pages = {282--293}, - location = {Berlin, Germany}, - doi = {http://doi.acm.org/10.1145/512529.512563}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@article{Grossman:TLDI03, - author = {Dan Grossman}, - title = {{Type-safe multithreading in Cyclone}}, - journal = TLDI, - year = {2003}, - isbn = {1-58113-649-8}, - pages = {13--25}, - location = {New Orleans, Louisiana}, - doi = {http://doi.acm.org/10.1145/604174.604177}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -% FIXME -@article{BSBR:PLDI03, - author = {B and S and P and R}, - title = {{Ownership types for safe region-based memory management in real-time Java}}, - journal = PLDI, - year = {2003}, - isbn = {1-58113-662-5}, - pages = {324--337}, - location = {San Diego, CA}, - doi = {http://doi.acm.org/10.1145/781131.781168}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -%%============================================================================ -%% SEPARATION LOGIC -%%============================================================================ - - -@article{Gotsman:PLDI07, - author = {Gotsman, Alexey and Berdine, Josh and Cook, Byron and - Sagiv, Mooly}, - title = {{Thread-modular shape analysis}}, - journal = {PLDI}, - year = 2007 -} - -@article{Bornat:POPL05, - author = {Richard Bornat and Cristiano Calcagno and Peter O'Hearn and Matthew Parkinson}, - title = {{Permission accounting in separation logic}}, - journal = POPL, - year = {2005}, - isbn = {1-58113-830-X}, - pages = {259--270}, - location = {Long Beach, CA}, - doi = {http://doi.acm.org/10.1145/1040305.1040327}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{ParkinsonBierman:POPL08, - author = {Matthew J. Parkinson and Gavin M. Bierman}, - title = {{Separation logic, abstraction and inheritance}}, - journal = {POPL}, - year = 2008 -} - -%%============================================================================ -%% TYPE SYSTEMS FOR GUARANTEEING ATOMICITY -%%============================================================================ - -@article{FlanaganQadeer:PLDI2003, - author = {Cormac Flanagan and Shaz Qadeer}, - title = {{A type and effect system for atomicity}}, - journal = PLDI, - year = {2003}, - isbn = {1-58113-662-5}, - pages = {338--349}, - location = {San Diego, CA}, - doi = {http://doi.acm.org/10.1145/781131.781169}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@article{FlanaganFreundLifshin:TLDI05, - author = {Cormac Flanagan and Stephen N. Freund and Marina Lifshin}, - title = {{Type inference for atomicity}}, - journal = TLDI, - year = {2005}, - isbn = {1-58113-999-3}, - pages = {47--58}, - location = {Long Beach, CA}, - doi = {http://doi.acm.org/10.1145/1040294.1040299}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -%%============================================================================ -%% THEORY OF CONCURRENCY -%%============================================================================ - -@article{HerlihyWing:TOPLAS90, - author = {Maurice P. Herlihy and Jeannette M. Wing}, - title = {Linearizability: A correctness condition for concurrent objects}, - journal = TOPLAS, - volume = {12}, - number = {3}, - year = {1990}, - issn = {0164-0925}, - pages = {463--492}, - doi = {http://doi.acm.org/10.1145/78969.78972}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@article{Herlihy:ICDCS2003, - author = {Maurice Herlihy and Victor Luchangco and Mark Moir}, - title = {{Obstruction-Free Synchronization: Double-Ended Queues as an Example}}, - journal = ICDCS, - year = {2003}, - isbn = {0-7695-1920-2}, - pages = {522}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, - } - - - -%%============================================================================ -%% DATABASE TRANSACTIONS AND SERIALIZABILITY THEORY -%%============================================================================ - -@book{Bernstein:Database87, - author = {Philip A. Bernstein and - Vassos Hadzilacos and - Nathan Goodman}, - title = {{Concurrency Control and Recovery in Database Systems}}, - publisher = {Addison-Wesley}, - year = {1987}, - isbn = {0-201-10715-5}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - -@article{KungRobinson:TODS81, - author = {H. T. Kung and John T. Robinson}, - title = {On optimistic methods for concurrency control}, - journal = TODS, - volume = {6}, - number = {2}, - year = {1981}, - issn = {0362-5915}, - pages = {213--226}, - doi = {http://doi.acm.org/10.1145/319566.319567}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@article{Weihl:OSR85, - author = {William E. Weihl}, - title = {Data-dependent concurrency control and recovery}, - journal = OSR, - volume = {19}, - number = {1}, - year = {1985}, - issn = {0163-5980}, - pages = {19--31}, - doi = {http://doi.acm.org/10.1145/1041490.1041493}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@article{BernsteinGoodman:TODS83, - author = {Philip A. Bernstein and Nathan Goodman}, - title = {Multiversion concurrency control---Theory and algorithms}, - journal = TODS, - volume = {8}, - number = {4}, - year = {1983}, - issn = {0362-5915}, - pages = {465--483}, - doi = {http://doi.acm.org/10.1145/319996.319998}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@article{Herlihy:TODS90, - author = {M. Herlihy}, - title = {Apologizing versus asking permission: Optimistic concurrency control for abstract data types}, - journal = {ACM Trans. Database Syst.}, - volume = {15}, - number = {1}, - year = {1990}, - issn = {0362-5915}, - pages = {96--124}, - doi = {http://doi.acm.org/10.1145/77643.77647}, - publisher = {ACM Press}, - address = {New York, NY, USA}, - } - -@article{Papadimitriou:JACM79, - author = {Christos H. Papadimitriou}, - title = {The serializability of concurrent database updates}, - journal = JACM, - volume = {26}, - number = {4}, - year = {1979}, - issn = {0004-5411}, - pages = {631--653}, - doi = {http://doi.acm.org/10.1145/322154.322158}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@article{Eswaran:CACM76, - author = {K. P. Eswaran and J. N. Gray and R. A. Lorie and I. L. Traiger}, - title = {The notions of consistency and predicate locks in a database system}, - journal = CACM, - volume = {19}, - number = {11}, - year = {1976}, - issn = {0001-0782}, - pages = {624--633}, - doi = {http://doi.acm.org/10.1145/360363.360369}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@article{Reed:TOCS83, - author = {David P. Reed}, - title = {Implementing atomic actions on decentralized data}, - journal = TOCS, - volume = {1}, - number = {1}, - year = {1983}, - issn = {0734-2071}, - pages = {3--23}, - doi = {http://doi.acm.org/10.1145/357353.357355}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -%%============================================================================ -%% SOFTWARE TRANSACTIONAL MEMORY -%%============================================================================ - -% Word-based - -@article{Adl-Tabatabai:PLDI06, - Author = {Ali-Reza Adl-Tabatabai and Brian T. Lewis and Vijay Menon and Brian R. Murphy and Bratin Saha and Tatiana Shpeisman}, - title = {{Compiler and runtime support for efficient software transactional memory}}, - journal = PLDI, - year = {2006}, - isbn = {1-59593-320-4}, - pages = {26--37}, - location = {Ottawa, Ontario, Canada}, - doi = {http://doi.acm.org/10.1145/1133981.1133985}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{Saha:PPOPP06, - author = {Bratin Saha and Ali-Reza Adl-Tabatabai and Richard L. Hudson and Chi Cao Minh and Benjamin Hertzberg}, - title = {{McRT-STM: A high performance software transactional memory system for a multi-core runtime}}, - journal = PPOPP, - year = {2006}, - isbn = {1-59593-189-9}, - pages = {187--197}, - location = {New York, NY}, - doi = {http://doi.acm.org/10.1145/1122971.1123001}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{HarrisFraser:OOPSLA03, - author = {Tim Harris and Keir Fraser}, - title = {{Language support for lightweight transactions}}, - journal = OOPSLA, - year = {2003}, - isbn = {1-58113-712-5}, - pages = {388--402}, - location = {Anaheim, CA}, - doi = {http://doi.acm.org/10.1145/949305.949340}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{Harris:PLDI06, - author = {Tim Harris and Mark Plesko and Avraham Shinnar and David Tarditi}, - title = {{Optimizing memory transactions}}, - journal = PLDI, - year = {2006}, - isbn = {1-59593-320-4}, - pages = {14--25}, - location = {Ottawa, Ontario, Canada}, - doi = {http://doi.acm.org/10.1145/1133981.1133984}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -% Object-based - -@article{ColeHerlihy:SCP2005, - author = {Christopher Cole and Maurice Herlihy}, - title = {Snapshots and software transactional memory}, - journal = SCP, - volume = {58}, - number = {3}, - year = {2005}, - issn = {0167-6423}, - pages = {310--324}, - doi = {http://dx.doi.org/10.1016/j.scico.2005.03.006}, - publisher = {Elsevier North-Holland, Inc.}, - address = {Amsterdam, The Netherlands, The Netherlands}, -} - -@article{MaratheSchererScott:LCR04, - author = {Virendra J. Marathe and William N. Scherer and Michael L. Scott}, - title = {{Design tradeoffs in modern software transactional memory systems}}, - journal = LCR, - year = {2004}, - pages = {1--7}, - location = {Houston, Texas}, - doi = {http://doi.acm.org/10.1145/1066650.1066660}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{Herlihy:PODC03, - author = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}}, - title = {Software transactional memory for dynamic-sized data structures}, - journal = PODC, - year = {2003}, - isbn = {1-58113-708-7}, - pages = {92--101}, - location = {Boston, MA}, - doi = {http://doi.acm.org/10.1145/872035.872048}, - publisher = {ACM Press}, - address = {New York, NY} - } - -@article{Marathe:ISDC05, - author = {Marathe, Virendra J. and {{Scherer III}}, William N. and Scott, Michael L.}, - title = {{Adaptive software transactional memory}}, - journal = ISDC, - address = {Cracow, Poland}, - month = {Sep}, - year = {2005}, - note = {Earlier but expanded version available as TR 868, University of Rochester Computer Science Dept., May 2005}, - pdf = {http://www.cs.rochester.edu/u/scott/papers/2005_DISC_ASTM.pdf} -} - -@phdthesis{Fraser:Thesis03, - author = {Fraser, Keir}, - citeulike-article-id = {692040}, - keywords = {stm}, - priority = {3}, - school = {Cambridge University Computer Laboratory}, - title = {Practical lock freedom}, - url = {http://www.cl.cam.ac.uk/users/kaf24/lockfree.html}, - year = {2003} -} - - -% Other - -@article{ManassievMihailescuAmza:PPOPP06, - author = {Kaloian Manassiev and Madalin Mihailescu and Cristiana Amza}, - title = {{Exploiting distributed version concurrency in a transactional memory cluster}}, - journal = PPOPP, - year = {2006}, - isbn = {1-59593-189-9}, - pages = {198--208}, - location = {New York, NY}, - doi = {http://doi.acm.org/10.1145/1122971.1123002}, - publisher = {ACM Press}, - address = {New York, NY} -} - -@article{ShavitTouitou:PODC95, - author = {Nir Shavit and Dan Touitou}, - title = {{Software transactional memory}}, - journal = PODC, - year = {1995}, - isbn = {0-89791-710-3}, - pages = {204--213}, - location = {Ottawa, Ontario, Canada}, - doi = {http://doi.acm.org/10.1145/224964.224987}, - publisher = {ACM Press}, - address = {New York, NY} -} - -%%============================================================================ -%% HARDWARE TRANSACTIONAL MEMORY -%%============================================================================ - -@article{Carlstrom:PLDI06, - author = {Brian D. Carlstrom and Austen McDonald and Hassan Chafi and JaeWoong Chung and Chi Cao Minh and Christos Kozyrakis and Kunle Olukotun}, - title = {{The Atomos transactional programming language}}, - journal = PLDI, - year = {2006}, - isbn = {1-59593-320-4}, - pages = {1--13}, - location = {Ottawa, Ontario, Canada}, - doi = {http://doi.acm.org/10.1145/1133981.1133983}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -%%============================================================================ -%% HYBRID TRANSACTIONAL MEMORY -%%============================================================================ - -@article{Kumar:PPOPP06, - author = {Sanjeev Kumar and Michael Chu and Christopher J. Hughes and Partha Kundu and Anthony Nguyen}, - title = {{Hybrid transactional memory}}, - journal = PPOPP, - year = {2006}, - isbn = {1-59593-189-9}, - pages = {209--220}, - location = {New York, NY}, - doi = {http://doi.acm.org/10.1145/1122971.1123003}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -@article{RajwarHerlihyLai:ISCA05, - author = {Ravi Rajwar and Maurice Herlihy and Konrad Lai}, - title = {Virtualizing transactional nemory}, - journal = ISCA, - year = {2005}, - isbn = {0-7695-2270-X}, - pages = {494--505}, - doi = {http://dx.doi.org/10.1109/ISCA.2005.54}, - publisher = {IEEE Computer Society}, - address = {Washington, DC}, -} - -%%============================================================================ -%% TRANSACTIONAL WORKLOADS -%%============================================================================ - -@article{STAMP:IISWC08, - title = {{STAMP: Stanford transactional applications for multi-processing}}, - author = {Chi Cao Minh and JaeWoong Chung and Christos Kozyrakis and Kunle Olukotun}, - journal = {IISWC}, - year = {2008}, -} - -%%============================================================================ -%% LINEAR TYPES -%%============================================================================ - -@article{Clarke:ECOOP03, - author = {Dave Clarke and Tobias Wrigstad}, - title = {{External uniqueness is unique enough}}, - journal = {ECOOP}, - year = {2003}, -} - -@article{Wadler:IFIP90, - author = "P. Wadler", - title = {{Linear types can change the world!}}, - journal = IFIP, - publisher = "North Holland", - editor = "M. Broy and C. Jones", - pages = "347--359", - address = {Sea of Galilee, Israel}, - year = "1990" -} - -@article{FahndrichDeLine:PLDI02, - author = {Manuel F\"{a}hndrich and Robert DeLine}, - title = {{Adoption and Focus: Practical linear types for imperative programming}}, - journal = PLDI, - year = {2002}, - isbn = {1-58113-463-0}, - pages = {13--24}, - location = {Berlin, Germany}, - doi = {http://doi.acm.org/10.1145/512529.512532}, - publisher = {ACM Press}, - address = {New York, NY}, -} - - - - -%%============================================================================ -%% SPECULATIVE PARALLELIZATION -%%============================================================================ - -@article{Kulkarni:PLDI07, - author = {Milind Kulkarni and Keshav Pingali and Bruce Walter and Ganesh Ramanarayanan and Kavita Bala and L. Paul Chew}, - title = {Optimistic parallelism requires abstractions}, - journal = PLDI, - year = {2007}, -} - -@article{RauchwergerPadua:TPDS99, - author = {Lawrence Rauchwerger and David A. Padua}, - title = {{The LRPD test: Speculative run-time parallelization of loops with privatization and reduction parallelization}}, - journal = TPDS, - volume = {10}, - number = {2}, - year = {1999}, - issn = {1045-9219}, - pages = {160--180}, - doi = {http://dx.doi.org/10.1109/71.752782}, - publisher = {IEEE Press}, - address = {Piscataway, NJ}, -} - -%%============================================================================ -%% COMMUTATIVITY ANALYSIS AND VERIFICATION -%%============================================================================ - -@article{Rinard:TOPLAS97, - author = {Martin C. Rinard and - Pedro C. Diniz}, - title = {{Commutativity analysis: A new analysis technique for parallelizing - compilers}}, - journal = {TOPLAS}, - year = {1997}, -} - -@article{Zee:PLDI08, - author = {Zee, Karen and Kuncak, Viktor and Rinard, Martin}, - title = {Full functional verification of linked data structures}, - journal = {PLDI}, - year = {2008}, -} - -@article{Farhana:ASPLOS09, - author = {Aleen, Farhana and Clark, Nathan}, - title = {{Commutativity analysis for software parallelization: letting program transformations see the big picture}}, - journal = {ASPLOS}, - year = {2009}, -} - -%%============================================================================ -%% REDUCTION RECOGNITION -%%============================================================================ - -@article{PottengerEigenmann:ICS95, - author = "William M. Pottenger and Rudolf Eigenmann", - title = {{Idiom recognition in the Polaris parallelizing compiler}}, - journal = ICS, - pages = "444-448", - year = "1995", - url = "citeseer.ist.psu.edu/pottenger95idiom.html" -} - -@article{HiranandaniKennedyTseng:ACM92, - author = {Seema Hiranandani and Ken Kennedy and Chau-Wen Tseng}, - title = {{Compiling Fortran D for MIMD distributed-memory machines}}, - journal = CACM, - volume = {35}, - number = {8}, - year = {1992}, - issn = {0001-0782}, - pages = {66--80}, - doi = {http://doi.acm.org/10.1145/135226.135230}, - publisher = {ACM Press}, - address = {New York, NY}, -} - -%%============================================================================ -%% BENCHMARKS -%%============================================================================ - -@techreport{Singh:SPLASH, - author = {Jaswinder Pal Singh and Wolf-Dietrich Weber and Anoop Gupta}, - title = {{SPLASH: Stanford parallel applications for shared-memory}}, - year = {1992}, - institution = {Stanford University}, - } - -@Article{Olden:Dynamic:TOPLAS95, - Author = {Anne Rogers and Martin C. Carlisle and John - H. Reppy and Laur ie J. Hendren}, - Title = {{Supporting dynamic data structures on distributed - memory machines}}, - Journal = TOPLAS, - Volume = {17}, - Number = 2, - Month = Mar, - Year = 1995 -} - -@article{HanPeiYin:SIGMOD00, - author = {Jiawei Han and Jian Pei and Yiwen Yin}, - title = {{Mining frequent patterns without candidate generation}}, - journal = SIGMOD, - year = {2000}, - isbn = {1-58113-217-4}, - pages = {1--12}, - location = {Dallas, TX}, - doi = {http://doi.acm.org/10.1145/342009.335372}, -} - -@techreport{BaderMadduri:2005, - author = {David A. Bader and Kamesh Madduri}, - title = {{Design and implementation of the HPCS graph analysis benchmark on symmetric multiprocessors}}, - month = "September", - institution = "Georgia Institute of Technology", - address = "Atlanta, GA", - year = "2005", -} - - -%%============================================================================ -%% MEMORY MODELS FOR SHARED MEMORY MULTIPROCESSORS -%%============================================================================ - - -@ARTICLE{Lamport1979, - TITLE = {{How to make a multiprocessor computer that correctl -y executes multiprocess programs}}, - AUTHOR = {Leslie Lamport}, - JOURNAL = {IEEE Trans. on Computers}, - VOLUME = {C-28}, - NUMBER = {9}, - YEAR = {September 1979}, - PAGES = {690-691}, - ANNOTE = {topic: mp/memory models/lamport} -} - -@string{special_issue = "IEEE "#computer#", "#special#" "#issue#" "#on#" "#shared#"-"#memory#" "#multiprocessing#""} -@ARTICLE{AdveKourosh1996a, - TITLE = {{Shared memory consistency models: A tutorial}}, - AUTHOR = {Sarita V. Adve - and Kourosh Gharachorloo}, - YEAR = {December 1996}, - JOURNAL = special_issue, - PAGES = {66-76} -} - - -%%============================================================================ -%% DISTRIBUTED SHARED MEMORY (DSM) -%%============================================================================ - -@article{Stets:SOPS97, - author = {Robert Stets and Sandhya Dwarkadas and Nikolaos Hardavellas and Galen Hunt and Leonidas Kontothanassis and Srinivasan Parthasarathy and Michael Scott}, - title = {{Cashmere-2L: Software coherent shared memory on a clustered remote-write network}}, - journal = SOSP, - year = {1997}, - isbn = {0-89791-916-5}, - pages = {170--183}, - location = {Saint Malo, France}, - doi = {http://doi.acm.org/10.1145/268998.266675}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@article{Scales:HPCA98, - author = "D. J. Scales and K. Gharachorloo and A. Aggarwal", - title = {{Fine-grain software distributed shared memory on SMP clusters}}, - journal = HPCA, - year = "1998", - url = "citeseer.ist.psu.edu/scales97finegrain.html" -} - -@article{Samanta:HPCA98, - author = {R. Samanta and A. Bilas and L. Iftode and J. Singh}, - title = {{Home-based SVM protocols for SMP clusters: Design and performance}}, - journal = HPCA, - year = {1998}, - isbn = {0-8186-8323-6}, - pages = {113}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} - -@article{Erlichson:ASPLOS96, - author = {Andrew Erlichson and Neal Nuckolls and Greg Chesson and John Hennessy}, - title = {{SoftFLASH: analyzing the performance of clustered distributed virtual shared memory}}, - journal = ASPLOS, - year = {1996}, - isbn = {0-89791-767-7}, - pages = {210--220}, - location = {Cambridge, Massachusetts, United States}, - doi = {http://doi.acm.org/10.1145/237090.237187}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@article{ManojManjunathGovindarajan:IJPP04, - author = {N. P. Manoj and K. V. Manjunath and R. Govindarajan}, - title = {{CAS-DSM: A compiler assisted software distributed shared memory}}, - journal = IJPP, - volume = {32}, - number = {2}, - year = {2004}, - issn = {0885-7458}, - pages = {77--122}, - doi = {http://dx.doi.org/10.1023/B:IJPP.0000023480.82632.87}, - publisher = {Kluwer Academic Publishers}, - address = {Norwell, MA}, -} - -@article{ChangShiehLiang:JSC06, - author = {Jyh-Biau Chang and Ce-Kuen Shieh and Tyng-Yeu Liang}, - title = {{A Transparent Distributed Shared Memory for Clustered Symmetric Multiprocessors}}, - journal = JSC, - volume = {37}, - number = {2}, - year = {2006}, - issn = {0920-8542}, - pages = {145--160}, - doi = {http://dx.doi.org/10.1007/s11227-006-5483-x}, - publisher = {Kluwer Academic Publishers}, - address = {Hingham, MA, USA}, -} - -%%============================================================================ -%% VIKRAM'S OLD WORK -%%============================================================================ - -@Article{AS:CompilerSynthesis:LCPC00, - Title = {{Compiler synthesis of task graphs for a parallel - system performance modeling environment}}, - Author = {Vikram Adve and Rizos Sakellariou}, - Journal = LCPC, - Address = "Yorktown Heights, NY", - Month = Aug, - Year = 2000, - Annote = { CATEGORY: PERFORMANCE: PARALLEL PROCESSING MODELS } -} - -@Article {ABD:SC99, - Title = {{Compiler-supported simulation of highly scalable parallel applications}}, - Author = {Vikram Adve and Rajive Bagrodia and Ewa Deelman and - Thomas Phan and Rizos Sakellariou}, - Journal = SC, - Month = Nov, - Year = 1999, - City = "Portland, OR", - Annote = { CATEGORY: PERFORMANCE: PARALLEL PROCESSING MODELS }, -} - -@Article{AM:PLDI98, - Author = {Vikram Adve and John Mellor-Crummey}, - Title = {{Using integer sets for data-parallel program - analysis and optimization}}, - Journal = PLDI, - Address = {Montreal, Quebec, Canada}, - Month = Jun, - Year = 1998} - -@Article{AJMY:SC98, - Author = {Vikram Adve and Guohua Jin and John Mellor-Crummey and Qing Yi}, - Title = {{High Performance Fortran compilation techniques - for parallelizing scientific codes}}, - Journal = SC, - Address = {Orlando, FL}, - Month = {Nov}, - Year = 1998 } - -@Article{DSystem:SC95, - Author = {V. Adve and J.-C. Wang and J. Mellor-Crummey and D. Reed and M. Anderson and K. Kennedy}, - Title = {{An integrated compilation and performance analysis - environment for data parallel programs}}, - Journal = SC, - Address = SanDiego, - Month = Dec, - Year = 1995} - -@article{MA:IJPP98, - Author = {John Mellor-Crummey and Vikram Adve}, - Title = {{Simplifying control flow in compiler-generated parallel code}}, - Journal = IJPP, - Year = 1998, - volume = 26, - number = 5 } - - -@article{AdveVernon:TOCS04, - author = {Vikram S. Adve and Mary K. Vernon}, - title = {{Parallel program performance prediction using deterministic task graph analysis}}, - journal = TOCS, - volume = {22}, - number = {1}, - year = {2004}, - issn = {0734-2071}, - pages = {94--136}, - doi = {http://doi.acm.org/10.1145/966785.966788}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -@article{AdveVernon:SIGMETRICS93, - author = {Vikram S. Adve and Mary K. Vernon}, - title = {{The influence of random delays on parallel execution times}}, - journal = Sigmetrics, - year = {1993}, - isbn = {0-89791-580-1}, - pages = {61--73}, - location = {Santa Clara, CA}, - doi = {http://doi.acm.org/10.1145/166955.166982}, - publisher = {ACM Press}, - address = {New York, NY}, - } - -%%============================================================================ -%% AUTO PARALLELIZATION -%%============================================================================ - -@book{AllenKennedy:2002, - author = {Ken Kennedy and John R. Allen}, - title = {{Optimizing Compilers for Modern Architectures: A Dependence-Based Approach}}, - year = {2002}, - isbn = {1-55860-286-0}, - publisher = {Morgan Kaufmann Publishers Inc.}, - address = {San Francisco, CA, USA}, -} - -@article{Raza:ESOP09, - author = {Mohammad Raza and Cristiano Calcagno and Philippa Gardner}, - title = {{Automatic parallelization with separation logic}}, - journal = {ESOP}, - year = 2009 -} - -%%============================================================================ -%% INTERNAL REPORTS AND PROPOSALS -%%============================================================================ - - -@Misc{CrayReport, - title = {{Scalable software transactional memory for Chapel}}, - author = {Robert Bocchino}, - year = "2006", - howpublished = "Cray, Inc. Internship Report" -} - -%%============================================================================ -%% K NOTATION -%%============================================================================ - -@TechReport{Rosu:K, -author = {Grigore Ro\c{s}u}, -title = {{K: A rewrite-based framework for modular language design, semantics, analysis and implementation}}, -institution = {Computer Science Department, University of Illinois at Urbana-Champaign}, -Number = {UIUCDCS-R-2006-2802}, -Year = {2006} -} - -%%============================================================================ -%% IRREGULAR BENCHMARKS -%%============================================================================ - -% Barnes Hut - -@article{BarnesHut:Nature86, - author = {Josh Barnes and Piet Hut}, - title = {{A hierarchical $O(N log N)$ force-calculation algorithm}}, - journal = {Nature}, - volume = {324}, - pages = {446-449}, - month = {December}, - year = {1986} -} - -@article{Amor:PARA00, - author = {Margarita Amor and Francisco Arg\"{u}ello and Juan L\'{o}pez and Oscar G. Plata and Emilio L. Zapata}, - title = {{A data parallel formulation of the Barnes-Hut method for n-body simulations}}, - journal = PARA, - year = {2001}, - isbn = {3-540-41729-X}, - pages = {342--349}, - publisher = {Springer-Verlag}, - address = {London, UK}, -} - -% UA - -@article{Feng:ANM05, - author = {Huiyu Feng and Rob Van der Wijngaart and Rupak Biswas}, - title = {{Unstructured adaptive meshes: Bad for your memory?}}, - journal = ANM, - volume = {52}, - number = {2-3}, - year = {2005}, - issn = {0168-9274}, - pages = {153--173}, - doi = {http://dx.doi.org/10.1016/j.apnum.2004.08.029}, - publisher = {Elsevier Science Publishers B. V.}, - address = {Amsterdam, The Netherlands, The Netherlands}, -} - -%%============================================================================ -%% STATIC ANALYSIS -%%============================================================================ - -@article{Navabi:PPOPP08, - author = {Armand Navabi and Xiangyu Zhang and Suresh Jagannathan}, - title = {Quasi-static scheduling for safe futures}, - journal = PPOPP, - year = {2008}, - isbn = {978-1-59593-795-7}, - pages = {23--32}, - location = {Salt Lake City, UT, USA}, - doi = {http://doi.acm.org/10.1145/1345206.1345212}, - publisher = {ACM}, - address = {New York, NY, USA}, -} - -%%============================================================================ -%% PARALLEL ALGORITHMS -%%============================================================================ - -@book{GibbonsRytter1988, - author = "Alan Gibbons and Wojciech Rytter", - title = {{Efficient Parallel Algorithms}}, - year = "1988", - publisher = {Cambridge University Press} -} - -@book{JaJa1992, - author = "Joseph J\'{a}j\'{a}", - title = {{An Introduction to Parallel Algorithms}}, - address = "Reading, Massachusetts", - year = "1992", - publisher = {Addison-Wesley} -} - -%%============================================================================ -%% SEPARATION LOGIC -%%============================================================================ - -@article{Reynolds:LICS02, - author = {John C. Reynolds}, - title = {{Separation logic: A logic for shared mutable data structures}}, - journal = LICS, - year = {2002}, - isbn = {0-7695-1483-9}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} -% pages = {55--74}, - -@article{OHearn:TCS07, - author = {Peter W. O'Hearn}, - title = {{Resources, concurrency, and local reasoning}}, - journal = TCS, - year = {2007}, -} - -%%============================================================================ -%% OPEN NESTING AND COMMUTATIVITY -%%============================================================================ - -@article{Weihl:TOPLAS89, - author = {W. E. Weihl}, - title = {Local atomicity properties: modular concurrency control for abstract data types}, - journal = TOPLAS, - volume = {11}, - number = {2}, - year = {1989}, - issn = {0164-0925}, - pages = {249--282}, - doi = {http://doi.acm.org/10.1145/63264.63518}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@article{Ni:PPOPP07, - author = {Yang Ni and Vijay S. Menon and Ali-Reza Adl-Tabatabai and Antony L. Hosking and Richard L. Hudson and J. Eliot B. Moss and Bratin Saha and Tatiana Shpeisman}, - title = {Open nesting in software transactional memory}, - journal = PPOPP, - year = {2007}, - isbn = {978-1-59593-602-8}, - pages = {68--78}, - location = {San Jose, California, USA}, - doi = {http://doi.acm.org/10.1145/1229428.1229442}, - publisher = {ACM Press}, - address = {New York, NY, USA}, - } - -@article{Carlstrom:PPOPP07, - author = {Brian D. Carlstrom and Austen McDonald and Michael Carbin and Christos Kozyrakis and Kunle Olukotun}, - title = {Transactional collection classes}, - journal = {PPOPP}, - year = {2007}, -} - -%%============================================================================ -%% CORE DPJ -%%============================================================================ - -@techreport{BocchinoAdve:DPJ2008, - author = {Robert L. Bocchino and Vikram S. Adve}, - title = {{Formal definition and proof of soundness for Core DPJ}}, - number = "UIUCDCS-R-2008-2980", - year = "2008", - institution = "U. Illinois", - url = "http://dpj.cs.uiuc.edu/DPJ/Publications.html" -} -% institution = "University of Illinois at Urbana-Champaign", - -@Misc{DPJ:URL, - howpublished = "\texttt{http://dpj.cs.uiuc.edu}" -} - -@article{Vakilian:DPJizer, - author = {Mohsen Vakilian and Danny Dig and Robert Bocchino and Jeffrey - Overbey and Vikram Adve and Ralph Johnson}, - title = {{Inferring Method Effect Summaries for Nested Heap Regions}}, - journal = {ASE}, - year = {2009}, - note = {To appear} -} - -% title = {{Java Specification Request JSR-166y} for java.util.concurrent}, -% author = {Doug Lea}, -@Misc{JSR166y, - howpublished = "\texttt{http://gee.cs.oswego.edu/dl/concurrency-interest}" -} - -%%============================================================================ -%% STATIC AND DYNAMIC CHECKS -%%============================================================================ - -@article{Anderson:PLDI08, - author = {Anderson, Zachary and Gay, David and Ennals, Rob and Brewer, Eric}, - title = {{SharC: Checking data sharing strategies for multithreaded C}}, - journal = PLDI, - year = {2008}, -} - - -@Misc{ForkJoinTask:GoetzTalk, - author = {Brian Goetz{, Sr.}}, - title = {Let's {R}esync: {C}oncurrency {F}eatures in {JDK} 7}, - howpublished = {2008 JavaOne Conference}, - year = {2008}, -} - - -@Misc{STREAM:McCalpin, - author = {John D. McCalpin}, - title = {{STREAM}: {S}ustainable {M}emory {B}andwidth in {H}igh {P}erformance {C}omputers}, - howpublished = {http://www.cs.virginia.edu/stream}, - year = {2004}, -} - - -@article{IntelPointsTo:PLDI01, - author = {Rakesh Ghiya and Daniel Lavery and David Sehr}, - title = {On the importance of points-to analysis and other memory disambiguation methods for {C} programs}, - journal = PLDI, - year = {2001}, - isbn = {1-58113-414-2}, - location = {Snowbird, Utah, United States}, - doi = {http://doi.acm.org/10.1145/378795.378806}, -} - -%%============================================================================ -%% DEBUGGING TOOLS (RACE, ATOMICITY, DETERMINISM CHECKERS) -%%============================================================================ - -@article{Sadowski:ESOP09, - author = {Caitlin Sadowski and Stephen N. Freund and Cormac Flanagan}, - title = {{SingleTrack: A dynamic determinism checker for multithreaded programs}}, - journal = {ESOP}, - year = 2009 -} - -@article{Feng:SPAA97, - author = {Feng,, Mingdong and Leiserson,, Charles E.}, - title = {{Efficient detection of determinacy races in Cilk programs}}, - journal = {SPAA}, - year = {1997}, - isbn = {0-89791-890-8}, - location = {Newport, Rhode Island, United States}, - doi = {http://doi.acm.org/10.1145/258492.258493}, - } diff --git a/cfar-report/dpj.bib b/cfar-report/dpj.bib deleted file mode 100644 index ca405649ea5d6c7eeabf480362c2f9d152a33cd0..0000000000000000000000000000000000000000 --- a/cfar-report/dpj.bib +++ /dev/null @@ -1,579 +0,0 @@ -%%============================================================================ -%%% Abbreviations -%%============================================================================ - -%% Individual Title Words - -@string{advances = "Advances"} -@string{analysis = "Analysis"} -@string{and = "and"} -@string{applications = "Applications"} -@string{architectural = "Arch."} -@string{architecture = "Arch."} -@string{architectures = "Arch."} -@string{automated = "Automated"} -@string{based = "Based"} -@string{code = "Code"} -@string{communications = "Commun."} -@string{compilation = "Compilation"} -@string{compiler = "Compiler"} -@string{compilers = "Compilers"} -@string{component = "Component"} -@string{computation = "Comp."} -@string{computational = "Comp."} -@string{computer = "Comp."} -@string{computing = "Comp."} -@string{concepts = "Concepts"} -@string{concurrency = "Concurrency"} -@string{conference = "Conf."} -@string{construction = "Const."} -@string{data = "Data"} -@string{database = "Database"} -@string{design = "Design"} -@string{distributed = "Distrib."} -@string{embedded = "Embedded"} -@string{engineering = "Engr."} -@string{environments = "Envs."} -@string{european = "Euro."} -@string{experience = "Experience"} -@string{for = "for"} -@string{formal = "Formal"} -@string{frontiers = "Frontiers"} -@string{functional = "Funct."} -@string{generation = "Gen."} -@string{high = "High"} -@string{higher = "Higher"} -@string{implementation = "Implementation"} -@string{in = "in"} -@string{informational = "Info."} -@string{international = "Int'l."} -@string{issue = "Issue"} -@string{java = "Java"} -@string{journal = "J."} -@string{journal-of = "J."} -@string{journal-of-the = "J."} -@string{language = "Lang."} -@string{languages = "Langs."} -@string{level = "Level"} -@string{logic = "Logic"} -@string{machines = "Machines"} -@string{management = "Mgmt."} -@string{measurement = "Measurement"} -@string{memory = "Mem."} -@string{methods = "Methods"} -@string{modeling = "Modeling"} -@string{models = "Models"} -@string{multiprocessing = "Multiproc."} -@string{object-oriented = "Object-Oriented"} -@string{of = "of"} -@string{on = "on"} -@string{openmp = "OpenMP"} -@string{operating = "Operating"} -@string{optimization = "Optimization"} -@string{order = "Order"} -@string{parallel = "Parallel"} -@string{performance = "Performance"} -@string{practice = "Practice"} -@string{principles = "Principles"} -@string{proceedings = "Proc."} -@string{proceedings-of-the = ""} -@string{program = "Program"} -@string{programming = "Programming"} -@string{programs = "Programs"} -@string{review = "Rev."} -@string{run = "Run"} -@string{scalable = "Scalable"} -@string{science = "Sci."} -@string{scientific = "Sci."} -@string{shared = "Shared"} -@string{software = "Softw."} -@string{special = "Special"} -@string{specification = "Specification"} -@string{supercomputing = "Supercomp."} -@string{support = "Support"} -@string{supportive = "Supportive"} -@string{surveys = "Survs."} -@string{symbolic = "Symb."} -@string{symposium = "Symp."} -@string{synthesis = "Synthesis"} -@string{system = "Syst."} -@string{systems = "Systs."} -@string{techniques = "Techs."} -@string{technology = "Tech."} -@string{the = "the"} -@string{theoretical = "Theor."} -@string{time = "Time"} -@string{tool = "Tool"} -@string{transactions = "Trans."} -@string{types = "Types"} -@string{verification = "Verif."} -@string{working = "Working"} -@string{workshop = "Workshop"} -@string{foundations = "Foundations"} - -%% Journals - -@string{TCS = ""#theoretical#" "#computer#" "#science#""} -@string{PC = ""#parallel#" "#computing#""} -@string{JSC = ""#journal-of#" "#supercomputing#""} -@string{SCP = ""#journal-of#" "#scientific#" "#computer#" "#programming#""} -@string{DMM = ""#languages#", "#compilers#", "#and#" "#run#"-"#time#" - "#environments#" "#for#" "#distributed#" "#memory#" "#machines#""} -@string{Founds = ""#symposium#" "#on#" "#the#" "#foundations#" "#of#" - "#computer#" "#science#""} -@string{TOPLAS = "ACM "#transactions#" "#on#" "#programming#" "#languages#" - "#and#" "#systems#" (TOPLAS)"} -@string{TECS = "ACM "#transactions#" "#on#" "#embedded#" "#computing#" - "#systems#""} -@string{TOCS = "ACM "#transactions#" "#on#" "#computing#" "#systems#""} -@string{TODS = "ACM "#transactions#" "#on#" "#database#" "#systems#""} -@string{CACM = ""#communications#" "#of#" "#the#" ACM"} -@string{JACM = ""#journal-of-the#" ACM"} -@string{SPE = ""#software#"--"#practice#" "#and#" "#experience#""} -@string{CPE = ""#concurrency#" -- "#practice#" "#and#" "#experience#""} -@string{IJPP = ""#international#" "#journal-of#" "#parallel#" "#programming#""} -@string{TSE = "IEEE "#transactions#" "#on#" "#software#" "#engineering#""} -@string{ICSE = "IEEE "#computational#" "#science#" "#and#" "#engineering#""} -@string{CSUR = "ACM "#computing#" "#surveys#""} -@string{TCL = "ACM "#transactions#" "#on#" "#computing#" "#logic#""} -@string{JFP = ""#journal-of#" "#functional#" "#programming#""} -@string{HOSC = ""#higher#" "#order#" "#symbolic#" "#computation#""} -@string{IC = ""#informational#" "#computing#""} -@string{TPDS = "IEEE "#transactions#" "#on#" "#parallel#" "#distributed#" "#systems#""} -@string{JPDC = ""#journal-of#" "#parallel#" "#and#" "#distributed#" "#computing#""} -@string{OSR = "SIGOPS "#operating#" "#systems#" "#review#""} - -%% Conferences - -%@string{ASE = "Proceedings of the Symposium On Automated Software Engineering"} - -@string{ASE = ""#proceedings-of-the#" "#symposium#" "#on#" "#automated#" - "#software#" "#engineering#""} -@string{LICS = ""#proceedings-of-the#" "#symposium#" "#on#" "#logic#" "#in#" "#computer#" "#science#""} -@string{ICDCS = ""#proceedings-of-the#" "#international#" "#conference#" "#on#" "#distributed#" "#computing#" "#systems#""} -@string{SOSP = ""#symposium#" "#on#" "#operating#" "#systems#" "#principles#""} -@string{HPCA = ""#proceedings-of-the#" "#international#" "#symposium#" "#on#" "#high#"-"#performance#" "#computer#" "#architecture#""} -@string{ACST = ""#proceedings-of-the#" IASTED "#international#" "#conference#" "#on#" "#advances#" "#in#" "#computer#" "#science#" "#and#" "#technology#""}, -@string{PODC = ""#symposium#" "#on#" "#principles#" "#of#" "#distributed#" - "#computing#""} -@string{IFIP = ""#working#" "#conference#" "#on#" "#programming#" "#concepts#" - "#and#" "#methods#""} -@string{PPOPP = "PPOPP"} %"ACM SIGPLAN "#symposium#" "#on#" "#principles#" "#and#" "#practice#" -% "#of#" "#parallel#" "#programming#" (PPOPP)"} -@string{PLDI = "PLDI"} %"ACM "#conference#" "#on#" "#programming#" "#language#" "#design#" - "#and#" "#implementation#" (PLDI)"} -@string{CGO = ""#proceedings-of-the#" "#international#" "#symposium#" - "#on#" "#code#" "#generation#" "#and#" "#optimization#" (CGO)"} -@string{POPL = ""#proceedings-of-the#" ACM SIGACT-SIGPLAN "#symposium#" - "#on#" "#principles#" "#of#" "#programming#" "#languages#" (POPL)"} -@string{OOPSLA = "OOPSLA"} % ""#proceedings-of-the#" ACM SIGPLAN "#conference#" "#on#" -% "#object-oriented#" "#programming#", "#systems#", "#languages#", and -% "#applications#" (OOPSLA)"} -@string{ISSTA = ""#proceedings-of-the#" ACM SIGSOFT "#international#" - "#symposium#" "#on#" "#software#" Testing "#and#" "#analysis#""} -@string{CASES = ""#proceedings-of-the#" "#international#" "#conference#" - "#on#" "#compilers#", "#architecture#" "#and#" "#synthesis#" "#for#" - "#embedded#" "#systems#" (CASES)"} -@string{LCTES = ""#conference#" "#on#" "#language#", "#compiler#", "#and#" - "#tool#" "#support#" "#for#" "#embedded#" "#systems#" "} -@string{ICFP = "ICFP"} -@string{SAS = ""#proceedings-of-the#" "#international#" "#symposium#" - "#on#" Static "#analysis#" (SAS)"} -@string{ISCA = ""#proceedings-of-the#" "#international#" "#conference#" - "#on#" "#computer#" "#architecture#" (ISCA)"} -@string{CC = ""#proceedings-of-the#" "#international#" "#conference#" - "#on#" "#compiler#" "#construction#" (CC)"} -@string{PACT = ""#proceedings-of-the#" "#international#" "#conference#" "#on#" - "#parallel#" "#architectures#" "#and#" "#compilation#" "#techniques#" - (PACT)"} -@string{ASPLOS = ""#proceedings-of-the#" "#international#" "#conference#" "#on#" - "#architectural#" Support "#for#" "#programming#" "#languages#" - "#and#" "#operating#" "#systems#" (ASPLOS)"} -@string{ISMM = ""#proceedings-of-the#" "#international#" - "#symposium#" "#on#" "#memory#" "#management#" (ISMM)"} -@string{ESEC = ""#proceedings-of-the#" "#european#" "#software#" - "#engineering#" "#conference#" (ESEC)"} -@string{SIGMOD = ""#proceedings-of-the#" ACM SIGMOD "#international#" - "#conference#" "#on#" "#management#" "#of#" "#data#" (SIGMOD)"} -@string{ICS = ""#proceedings-of-the#" "#international#" "#conference#" - "#on#" "#supercomputing#" (ICS)"} -@string{MICRO = ""#proceedings-of-the#" ACM/IEEE "#international#" - "#symposium#" "#on#" Microarchitecture (MICRO)"} -@string{SAVCBS = ""#proceedings-of-the#" "#conference#" "#on#" "#specification#" - "#and#" "#verification#" "#component#"-"#based#" "#systems#""} -@string{ECOOP = ""#proceedings-of-the#" "#european#" "#conference#" - "#on#" "#object-oriented#" "#programming#""} -@string{FRONTIERS = ""#proceedings-of-the#" "#symposium#" "#on#" "#the#" - "#frontiers#" "#of#" Massively "#parallel#" "#computation#""} -@string{SC = ""#proceedings-of-the#" ACM/IEEE "#conference#" "#on#" - "#supercomputing#""} -@string{Sigmetrics = ""#proceedings-of-the#" ACM SIGMETRICS "#conference#" - "#on#" "#measurement#" "#and#" "#modeling#" "#of#" "#computer#" - "#systems#""} -@string{ISDC = ""#proceedings-of-the#" "#international#" "#symposium#" "#on#" "#distributed#" "#computing#""} - -%% Workshops - -@string{EWOMP = ""#proceedings-of-the#" "#european#" "#workshop#" "#on#" "#openmp#""} -@string{LCR = ""#proceedings-of-the#" "#workshop#" "#on#" "#languages#", - "#compilers#", "#and#" "#run#"-"#time#" "#support#" "#for#" "#scalable#" - "#systems#""}, -@string{LCPC = "LCPC"} -@string{MSP = ""#proceedings-of-the#" ACM "#workshop#" "#on#" - "#memory#" "#system#" "#performance#""} -@string{PASTE = ""#proceedings-of-the#" "#workshop#" "#on#" "#program#" - "#analysis#" "#for#" "#software#" Tools "#and#" "#engineering#" (PASTE)"} -@string{IWMM = ""#proceedings-of-the#" "#international#" "#workshop#" - "#on#" "#memory#" "#management#""} -@string{WFTJP = ""#proceedings-of-the#" "#workshop#" "#on#" "#formal#" - "#techniques#" "#for#" "#java#" "#programs#""} -@string{TLDI = ""#proceedings-of-the#" "#international#" "#workshop#" "#on#" - "#types#" "#in#" "#language#" "#design#" "#and#" "#implementation#""} -@string{HIPS = ""#international#" "#workshop#" "#on#" "#high#"-"#level#" - "#programming#" "#models#" "#and#" "#supportive#" "#environments#""} - - -%%============================================================================ -%% DPJ -%%============================================================================ - -@phdthesis{Bocchino:Thesis, - author = {Bocchino~Jr., Robert L.}, - title = {{An Effect System and Language for Deterministic-by-Default Parallel Programming}}, - school = {University of Illinois}, - address = {Urbana-Champaign, IL}, - year = {2010}, - advisor = {Vikram Adve} -} - -@InProceedings{DPJ:HotPar09, - author = {Robert L. Bocchino~Jr. and Vikram S. Adve and Sarita V. Adve and Marc Snir}, - title = {{Parallel programming must be deterministic by default}}, - booktitle = {HotPar}, - year = {2009}, -} - -@techreport{DPJ:FormalTR08, - author = {Robert L. Bocchino and Vikram S. Adve}, - title = {{Formal definition and proof of soundness for Core DPJ}}, - number = "UIUCDCS-R-2008-2980", - year = "2008", - institution = "U. Illinois", - url = "http://dpj.cs.uiuc.edu/DPJ/Publications.html" -} -% institution = "University of Illinois at Urbana-Champaign", - -@Misc{DPJ:URL, - howpublished = "\texttt{http://dpj.cs.illinois.edu}" -} - - -@inproceedings{Vakilian:DPJizer, - author = {M. Vakilian and D. Dig and R. Bocchino~Jr. and J. Overbey and V. Adve and R. Johnson}, - title = {{Inferring Method Effect Summaries for Deterministic Parallel Java}}, - booktitle = {ASE}, - year = {2009}, -} - -@techreport{Vakilian:DPJizerTR, - author = {Mohsen Vakilian and D. Dig and R. Bocchino~Jr. and J. Overbey and V. Adve and R. Johnson}, - title = {{Inferring Method Effect Summaries for Deterministic Parallel Java}}, - number = " UIUCDCS-R-2009-3038", - year = "2009", - institution = "U. Illinois", - url = "http://dpj.cs.uiuc.edu/DPJ/Publications.html" -} - -@inproceedings{DPJNondet:POPL11, - author = {Bocchino,Jr., Robert L. and Heumann, Stephen and Honarmand, Nima and Adve, Sarita V. and Adve, Vikram S. and Welc, Adam and Shpeisman, Tatiana}, - title = {Safe nondeterminism in a deterministic-by-default parallel language}, - booktitle = {POPL}, - year = {2011}, -} - -@inproceedings{DPJFrameworks:ECOOP11, - author = {Bocchino, Robert L. and Adve, Vikram S.}, - title = {Types, regions, and effects for safe programming with object-oriented parallel frameworks}, - booktitle = {ECOOP}, - year = {2011}, -} - - -%%============================================================================ -%% Systems involving optimistic parallelism -%%============================================================================ - -@inproceedings{Galois:PLDI07, - author = {Kulkarni, Milind and Pingali, Keshav and Walter, Bruce and Ramanarayanan, Ganesh and Bala, Kavita and Chew, L. Paul}, - title = {Optimistic parallelism requires abstractions}, - booktitle = {PLDI}, - year = {2007}, -} - -@inproceedings{Aida:OOPSLA11, - author = {Lublinerman, Roberto and Zhao, Jisheng and Budimli\'{c}, Zoran and Chaudhuri, Swarat and Sarkar, Vivek}, - title = {Delegated isolation}, - booktitle = {OOPSLA}, - year = {2011}, -} - - -%%============================================================================ -%% Fork/join or otherwise structured parallel programming systems -%%============================================================================ - -@inproceedings{Lee:JAVA00, - author = {Lea, Doug}, - title = {{A Java fork/join framework}}, - booktitle = {Proceedings of the ACM 2000 conference on Java Grande}, - year = {2000}, -} - -@Misc{Java7, - author = {Oracle}, - title = {{Java Platform, Standard Edition 7 API specification}}, - howpublished = {http://download.oracle.com/javase/7/docs/api/} -} - -@book{Reinders:TBB, - author = {James Reinders}, - title = {{Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism}}, - year = 2007, - publisher = {O'Reilly Media} -} - -@Misc{Intel:TBB, - author = {Intel}, - title = {{Intel Thread Building Blocks Reference Manual}}, - howpublished = {http://software.intel.com/sites/products/documentation/ hpc/tbb/referencev2.pdf}, - month = aug, - year = 2011 -} - -@inproceedings{Cilk:PLDI98, - Title = {The Implementation of the {C}ilk-5 Multithreaded Language}, - Author = {Frigo, Matteo and Leiserson, Charles E. and Randall, Keith H.}, - Booktitle = PLDI, - Year = 1998, -} - -@Misc{OpenMP, - title = {{OpenMP Application Program Interface, Version 3.1}}, - howpublished = {http://www.openmp.org/mp-documents/OpenMP3.1.pdf}, - year = 2011 -} - -%%============================================================================ -%% Momory models -%%============================================================================ - -@string{special_issue = "IEEE "#computer#", "#special#" "#issue#" "#on#" "#shared#"-"#memory#" "#multiprocessing#""} -@ARTICLE{AdveKourosh1996a, - TITLE = {{Shared memory consistency models: A tutorial}}, - AUTHOR = {Sarita V. Adve - and Kourosh Gharachorloo}, - YEAR = {December 1996}, - JOURNAL = special_issue, - PAGES = {66-76} -} - - -%%============================================================================ -%% Transactional memory -%%============================================================================ - -@book{TransactionalMemory:Harris, - author = {Harris, Tim and Larus, James and Rajwar, Ravi}, - title = {{Transactional Memory, 2nd Edition (Synthesis Lectures on Computer Architecture)}}, - year = {2010}, -} - - -%%============================================================================ -%% Systems that do effect-based scheduling of tasks or similar -%%============================================================================ - -@inproceedings{Panini:GPCE10, - author = {Long, Yuheng and Mooney, Sean L. and Sondag, Tyler and Rajan, Hridesh}, - title = {Implicit invocation meets safe, implicit concurrency}, - booktitle = {Proceedings of the ninth international conference on Generative programming and component engineering (GPCE)}, - year = {2010}, -} - -@inproceedings{SvS:PLDI11, - author = {Best, Micah J. and Mottishaw, Shane and Mustard, Craig and Roth, Mark and Fedorova, Alexandra and Brownsword, Andrew}, - title = {Synchronization via scheduling: techniques for efficiently managing shared state}, - booktitle = PLDI, - Year = 2011, -} - -@article{Jade:TOPLAS98, - author = {Martin C. Rinard and Monica S. Lam}, - title = {{The design, implementation, and evaluation of Jade}}, - journal = {TOPLAS}, - year = {1998} -} - -@inproceedings{SerializationSets:PPOPP09, - author = {Allen, Matthew D. and Sridharan, Srinath and Sohi, Gurindar S.}, - title = {{Serialization sets: A dynamic dependence-based parallel execution model}}, - booktitle = PPOPP, - year = {2009}, -} - -@inproceedings{OoOJava:PPOPP11, - author = {Jenista, James Christopher and Eom, Yong hun and Demsky, Brian Charles}, - title = {OoOJava: software out-of-order execution}, - booktitle = PPOPP, - year = {2011}, -} - -@Misc{Apple:ConcurrencyGuide, - author = {Apple}, - title = {{Concurrency Programming Guide}}, - howpublished = {http://developer.apple.com/library/mac/documentation/ General/Conceptual/ConcurrencyProgrammingGuide/}, - year = 2011, -} - -@Misc{Microsoft:TPL, - author = {Microsoft}, - title = {{Task Parallel Library}}, - howpublished = {http://msdn.microsoft.com/en-us/library/dd460717.aspx} -} - -%%============================================================================ -%% Actors -%%============================================================================ - -@book{Agha:Actors, - author = {Agha, Gul}, - title = {Actors: a model of concurrent computation in distributed systems}, - year = {1986}, - publisher = {MIT Press}, - address = {Cambridge, MA, USA}, -} - - -@inproceedings{ActorFoundry:PPPJ09, - author = {Karmani, Rajesh K. and Shali, Amin and Agha, Gul}, - title = {Actor frameworks for the JVM platform: a comparative analysis}, - booktitle = {Proceedings of the 7th International Conference on Principles and Practice of Programming in Java (PPPJ)}, - year = {2009}, -} - -@inproceedings{JCoBox:ECOOP10, - author = {Sch\"{a}fer, Jan and Poetzsch-Heffter, Arnd}, - title = {JCoBox: generalizing active objects to concurrent components}, - booktitle = {ECOOP}, - year = {2010}, -} - -@Misc{Axum, - author = {Microsoft}, - title = {Axum}, - howpublished = {http://msdn.microsoft.com/en-us/devlabs/dd795202}, -} - -%%============================================================================ -%% Ownership types -%%============================================================================ - -@inproceedings{Boyapati:2002, - author = {Boyapati, Chandrasekhar and Lee, Robert and Rinard, Martin}, - title = {Ownership types for safe programming: preventing data races and deadlocks}, - booktitle = {OOPSLA}, - year = {2002}, -} - -@inproceedings{Muller:2007, - author = {M\"{u}ller, Peter and Rudich, Arsenii}, - title = {Ownership transfer in universe types}, - booktitle = {OOPSLA}, - year = {2007}, -} - -%%============================================================================ -%% Uncategorized -%%============================================================================ - -@article{Adve:TOCS04, - author = {Vikram S. Adve and Mary K. Vernon}, - title = {{Parallel program performance prediction using deterministic task graph analysis}}, - journal = TOCS, - volume = {22}, - number = {1}, - year = {2004}, - issn = {0734-2071}, - pages = {94--136}, - doi = {http://doi.acm.org/10.1145/966785.966788}, - publisher = {ACM Press}, - address = {New York, NY}, - } - - @inproceedings{Accord:PPOPP11, - author = {Rajesh K. Karmani and P. Madhusudan and Brandon M. Moore}, - title = {Thread contracts for safe parallelism}, - booktitle = {PPoPP}, - year = {2011}, -} - -@inproceedings{Hameed:ISCA10, - author = {Rehan Hameed and Wajahat Qadeer and Megan Wachs and Omid Azizi and Alex Solomatnikov and Benjamin C. Lee and Stephen Richardson and Christos Kozyrakis1 and Mark Horowitz}, - title = {Understanding sources of inefficiency in general-purpose chips}, - booktitle = {ISCA}, - year = {2010}, -} - -@article{CogniServe:Micro11, - author = {Iyer, R. and Srinivasan, S. and Tickoo, O. and Zhen Fang and Illikkal, R. and Zhang, S. and Chadha, V. and Stillwell, P.M. and Seung Eun Lee}, - title = {CogniServe: Heterogeneous Server Architecture for Large-Scale Recognition}, - journal = {IEEE Micro}, - issue_date = {May 2011}, - volume = {31}, - issue = {3}, - month = {May}, - year = {2011}, - issn = {0272-1732}, - pages = {20--31}, - numpages = {12}, - url = {http://dx.doi.org/10.1109/MM.2011.37}, - doi = {http://dx.doi.org/10.1109/MM.2011.37}, - acmid = {1999242}, - publisher = {IEEE Computer Society Press}, - address = {Los Alamitos, CA, USA}, - keywords = {CogniServe, large-scale recognition, cloud-based computing, heterogeneous architecture, accelerator, mobile/wireless}, -} - -@inproceedings{Abadi:POPL08, - author = {Abadi, Mart\'{\i}n and Birrell, Andrew and Harris, Tim and Isard, Michael}, - title = {{Semantics of transactional memory and automatic mutual exclusion}}, - booktitle = {POPL}, - year = {2008}, -} - -@misc{ARM:Big.LITTLE, - author = {Peter Greenhalgh}, - title = {{Big.LITTLE Processing with ARM Cortex-A15 \& Cortex-A7}}, - year = {2011}, - howpublished = {ARM Limited}, -} - -@INPROCEEDINGS{MSA:LCPC04, - author = {Jayant Desouza and Laxmikant V. Kalé}, - title = {MSA: Multiphase specifically shared arrays}, - booktitle = {In Proceedings of the 17th International Workshop on -Languages and Compilers for Parallel Computing}, - year = {2004} -} - -@inproceedings{SharC:2008, - author = {Anderson, Zachary and Gay, David and Ennals, Rob and Brewer, -Eric}, - title = {SharC: checking data sharing strategies for multithreaded c}, - booktitle = {Proceedings of the 2008 ACM SIGPLAN conference on Programming -language design and implementation}, - year = {2008}, - pages = {149--158}, - url = {http://doi.acm.org/10.1145/1375581.1375600}, -} - diff --git a/cfar-report/etoolbox.sty b/cfar-report/etoolbox.sty deleted file mode 100644 index ae37d94c400c161596f261e3cc52874aeb63a7bc..0000000000000000000000000000000000000000 --- a/cfar-report/etoolbox.sty +++ /dev/null @@ -1,1708 +0,0 @@ -% $Id: etoolbox.sty,v 2.1 2011/01/03 19:14:10 lehman stable $ - -% Copyright (c) 2007-2011 Philipp Lehman. -% -% Permission is granted to copy, distribute and/or modify this -% software under the terms of the LaTeX Project Public License -% (LPPL), version 1.3. -% -% The LPPL maintenance status of this software is -% 'author-maintained'. -% -% This software is provided 'as is', without warranty of any kind, -% either expressed or implied, including, but not limited to, the -% implied warranties of merchantability and fitness for a -% particular purpose. - -\def\etb@rcsid$#1: #2 #3 #4 #5${#4 v#3} - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{etoolbox} -[\etb@rcsid $Id: etoolbox.sty,v 2.1 2011/01/03 19:14:10 lehman stable $ - e-TeX tools for LaTeX] - -\begingroup -\@ifundefined{eTeXversion} - {\PackageError{etoolbox} - {Not running under e-TeX} - {This package requires e-TeX. Try compiling the document - with\MessageBreak 'elatex' instead of 'latex'. When using - pdfTeX, try 'pdfelatex'\MessageBreak instead of 'pdflatex'. - This is a fatal error. I'm aborting now.}% - \aftergroup\endinput} - {} -\endgroup - -\RequirePackage{etex} - -\def\etb@catcodes{\do\&\do\|\do\:\do\-\do\=\do\<\do\>} -\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} -\edef\etb@catcodes{\etb@catcodes} -\let\do\noexpand -\AtEndOfPackage{\etb@catcodes\undef\etb@catcodes} - -\catcode`\&=3 -\catcode`\|=3 -\@makeother\: -\@makeother\- -\@makeother\= -\@makeother\< -\@makeother\> - -\protected\def\etb@error{\PackageError{etoolbox}} -\protected\def\etb@warning{\PackageWarning{etoolbox}} -\protected\def\etb@info{\PackageInfo{etoolbox}} -\newcount\etb@tempcnta - -% {<cstoken>}[<arguments>][<optarg default>]{<definition>} - -\newcommand*{\newrobustcmd}{} -\protected\def\newrobustcmd{\@star@or@long\etb@new@command} - -\def\etb@new@command#1{\@testopt{\etb@newcommand#1}0} - -\def\etb@newcommand#1[#2]{% - \@ifnextchar[%] - {\etb@xargdef#1[#2]} - {\ifx\l@ngrel@x\relax - \let\l@ngrel@x\protected - \else - \protected\def\l@ngrel@x{\protected\long}% - \fi - \@argdef#1[#2]}} - -\long\def\etb@xargdef#1[#2][#3]#4{% - \@ifdefinable#1{% - \expandafter\protected - \expandafter\def - \expandafter#1% - \expandafter{% - \expandafter\@testopt - \csname\string#1\endcsname{#3}}% - \expandafter\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}} - -% {<cstoken>}[<arguments>][<optarg default>]{<definition>} - -\newrobustcmd*{\renewrobustcmd}{\@star@or@long\etb@renew@command} - -\def\etb@renew@command#1{% - \ifundef{#1} - {\etb@error{\string#1 undefined}\@ehc} - {}% - \let\@ifdefinable\@rc@ifdefinable - \etb@new@command#1} - -% {<cstoken>}[<arguments>][<optarg default>]{<definition>} - -\newrobustcmd*{\providerobustcmd}{\@star@or@long\etb@provide@command} - -\def\etb@provide@command#1{% - \ifundef{#1} - {\def\reserved@a{\etb@new@command#1}} - {\def\reserved@a{\etb@renew@command\reserved@a}}% - \reserved@a} - -% {<csname>} - -\newrobustcmd*{\csshow}[1]{% - \begingroup\expandafter\endgroup - \expandafter\show\csname#1\endcsname} - -% {<cstoken>}{<true>}{<false>} - -\newcommand{\ifdef}[1]{% - \ifdefined#1% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<cstoken>}{<true>}{<false>} - -\newcommand{\ifundef}[1]{% - \ifdefined#1% - \ifx#1\relax - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@firstoftwo - \fi} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcsdef}[1]{% - \ifcsname#1\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcsundef}[1]{% - \ifcsname#1\endcsname - \expandafter\ifx\csname#1\endcsname\relax - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@firstoftwo - \fi} - -% {<cstoken>}{<true}{<false>} - -\newcommand{\ifdefmacro}{} -\long\edef\ifdefmacro#1{% - \noexpand\expandafter\noexpand\etb@ifdefmacro - \noexpand\meaning#1\detokenize{macro}:&} -\edef\etb@ifdefmacro{% - \def\noexpand\etb@ifdefmacro##1\detokenize{macro}:##2&} -\etb@ifdefmacro{\notblank{#2}} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcsmacro}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefmacro\csname#1\endcsname} - {\@secondoftwo}} - -% {<cstoken>}{<true}{<false>} - -\newcommand{\ifdefprefix}[1]{% - \ifdefmacro{#1} - {\etb@ifdefprefix{#1}} - {\@secondoftwo}} -\long\edef\etb@ifdefprefix#1{% - \noexpand\expandafter\noexpand\etb@ifdefprefix@i - \noexpand\meaning#1\detokenize{macro}:&} -\edef\etb@ifdefprefix@i{% - \def\noexpand\etb@ifdefprefix@i##1\detokenize{macro}:##2&} -\etb@ifdefprefix@i{\notblank{#1}} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcsprefix}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefprefix\csname#1\endcsname} - {\@secondoftwo}} - -% {<cstoken>}{<true}{<false>} - -\newcommand{\ifdefparam}{} -\long\edef\ifdefparam#1{% - \noexpand\expandafter\noexpand\etb@ifdefparam - \noexpand\meaning#1\detokenize{macro}:->&} -\edef\etb@ifdefparam{% - \def\noexpand\etb@ifdefparam##1\detokenize{macro}:##2->##3&} -\etb@ifdefparam{\notblank{#2}} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcsparam}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefparam\csname#1\endcsname} - {\@secondoftwo}} - -% {<cstoken>}{<true}{<false>} - -\newcommand{\ifdefprotected}{} -\long\edef\ifdefprotected#1{% - \noexpand\expandafter\noexpand\etb@ifdefprotected - \noexpand\meaning#1\string\protected&} -\edef\etb@ifdefprotected{% - \def\noexpand\etb@ifdefprotected##1\string\protected##2&} -\etb@ifdefprotected{\notblank{#2}} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcsprotected}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefprotected\csname#1\endcsname} - {\@secondoftwo}} - -% {<cstoken>}{<true}{<false>} - -\newrobustcmd{\ifdefltxprotect}[1]{% - \begingroup - \edef\etb@resrvda{% - \noexpand\protect\expandafter\noexpand - \csname\expandafter\@gobble\string#1 \endcsname}% - \expandafter\endgroup\ifx#1\etb@resrvda - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<csname>}{<true>}{<false>} - -\newrobustcmd*{\ifcsltxprotect}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefltxprotect\csname#1\endcsname} - {\@secondoftwo}} - -% {<cstoken>}{<true>}{<false>} - -\newcommand{\ifdefempty}[1]{% - \ifundef{#1} - {\@secondoftwo} - {\ifdefmacro{#1} - {\ifdefparam{#1} - {\@secondoftwo} - {\etb@ifdefempty{#1}}} - {\@secondoftwo}}} - -\def\etb@ifdefempty#1{% - \expandafter\expandafter - \expandafter\ifblank - \expandafter\expandafter - \expandafter{% - \expandafter\strip@prefix\meaning#1}} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcsempty}[1]{% - \ifcsundef{#1} - {\@secondoftwo} - {\expandafter\ifdefparam\csname#1\endcsname - {\@secondoftwo} - {\expandafter\etb@ifdefempty\csname#1\endcsname}}} - -% {<cstoken>}{<true>}{<false>} - -\newcommand{\ifdefvoid}[1]{% - \ifundef{#1} - {\@firstoftwo} - {\ifdefmacro{#1} - {\ifdefparam{#1} - {\@secondoftwo} - {\etb@ifdefempty{#1}}} - {\@secondoftwo}}} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcsvoid}[1]{% - \ifcsundef{#1} - {\@firstoftwo} - {\expandafter\ifdefparam\csname#1\endcsname - {\@secondoftwo} - {\expandafter\etb@ifdefempty\csname#1\endcsname}}} - -% {<cstoken1>}{<cstoken2>}{<true>}{<false>} - -\newcommand{\ifdefequal}[2]{% - \ifundef{#1} - {\@secondoftwo} - {\ifundef{#2} - {\@secondoftwo} - {\ifx#1#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<csname1>}{<csname2>}{<true>}{<false>} - -\newcommand*{\ifcsequal}[2]{% - \ifcsundef{#1} - {\@secondoftwo} - {\ifcsundef{#2} - {\@secondoftwo} - {\expandafter\ifx - \csname#1\expandafter\endcsname - \csname#2\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<cstoken1>}{<cstoken2>}{<true>}{<false>} - -\newrobustcmd{\ifdefstrequal}[2]{% - \ifdefmacro{#1} - {\ifdefmacro{#2} - {\begingroup - \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% - \edef\etb@tempb{\expandafter\strip@prefix\meaning#2}% - \ifx\etb@tempa\etb@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - {\@secondoftwo}} - {\@secondoftwo}} - -% {<csname1>}{<csname2>}{<true>}{<false>} - -\newcommand*{\ifcsstrequal}[2]{% - \ifcsundef{#1} - {\@secondoftwo} - {\ifcsundef{#2} - {\@secondoftwo} - {\expandafter\ifdefstrequal - \csname#1\expandafter\endcsname - \csname#2\endcsname}}} - -% {<cstoken>}{<string>}{<true>}{<false>} - -\newrobustcmd{\ifdefstring}[2]{% - \ifdefmacro{#1} - {\begingroup - \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% - \edef\etb@tempb{\detokenize{#2}}% - \ifx\etb@tempa\etb@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - {\@secondoftwo}} - -% {<csname>}{<string>}{<true>}{<false>} - -\newrobustcmd{\ifcsstring}[2]{% - \ifcsundef{#1} - {\@secondoftwo} - {\expandafter\ifdefstring\csname#1\endcsname{#2}}} - -% {<cstoken>}{<true}{<false>} - -\newcommand{\ifdefcounter}[1]{\etb@ifcounter#1&} -\long\def\etb@ifcounter#1#2&{% - \ifx\count#1% - \expandafter\@secondoftwo - \else - \expandafter\etb@ifcounter@i\meaning#1:% - \fi} -\edef\etb@ifcounter@i#1:#2\fi{\noexpand\fi - \noexpand\etb@ifcounter@ii#1\string\count&} -\edef\etb@ifcounter@ii{% - \def\noexpand\etb@ifcounter@ii##1\string\count##2&} -\etb@ifcounter@ii{\ifblank{#1}} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcscounter}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefcounter\csname#1\endcsname} - {\@secondoftwo}} - -% {<name>}{<true>}{<false>} - -\newcommand*{\ifltxcounter}[1]{% - \ifcsdef{c@#1} - {\expandafter\ifdefcounter\csname c@#1\endcsname} - {\@secondoftwo}} - -% {<cstoken>}{<true}{<false>} - -\newcommand{\ifdeflength}[1]{\etb@iflength#1&} -\long\def\etb@iflength#1#2&{% - \ifx\skip#1% - \expandafter\@secondoftwo - \else - \expandafter\etb@iflength@i\meaning#1:% - \fi} -\edef\etb@iflength@i#1:#2\fi{\noexpand\fi - \noexpand\etb@iflength@ii#1\string\skip&} -\edef\etb@iflength@ii{% - \def\noexpand\etb@iflength@ii##1\string\skip##2&} -\etb@iflength@ii{\ifblank{#1}} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcslength}[1]{% - \ifcsdef{#1} - {\expandafter\ifdeflength\csname#1\endcsname} - {\@secondoftwo}} - -% {<cstoken>}{<true}{<false>} - -\newcommand{\ifdefdimen}[1]{\etb@ifdimen#1&} -\long\def\etb@ifdimen#1#2&{% - \ifx\dimen#1% - \expandafter\@secondoftwo - \else - \expandafter\etb@ifdimen@i\meaning#1:% - \fi} -\edef\etb@ifdimen@i#1:#2\fi{\noexpand\fi - \noexpand\etb@ifdimen@ii#1\string\dimen&} -\edef\etb@ifdimen@ii{% - \def\noexpand\etb@ifdimen@ii##1\string\dimen##2&} -\etb@ifdimen@ii{\ifblank{#1}} - -% {<csname>}{<true>}{<false>} - -\newcommand*{\ifcsdimen}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefdimen\csname#1\endcsname} - {\@secondoftwo}} - -% {<string1>}{<string2>}{<true>}{<false>} - -\newrobustcmd{\ifstrequal}[2]{% - \begingroup - \edef\etb@tempa{\detokenize{#1}}% - \edef\etb@tempb{\detokenize{#2}}% - \ifx\etb@tempa\etb@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} - -\newcommand{\ifstrempty}[1]{% - \expandafter\ifx\expandafter&\detokenize{#1}&% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<string>}{<true>}{<false>} - -\newcommand{\ifblank}[1]{% from url.sty - \etb@ifblank@i#1&&\@secondoftwo\@firstoftwo:} -\long\def\etb@ifblank@i#1#2#4#5:{#4} - -\newcommand{\notblank}[1]{% - \etb@ifblank@i#1&&\@firstoftwo\@secondoftwo:} - -% {<numexpr>}{<comp>}{<numexpr>}{<true>}{<false>} - -\newcommand*{\ifnumcomp}[3]{% - \ifnum\numexpr#1\relax#2\numexpr#3\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<numexpr>}{<numexpr>}{<true>}{<false>} - -\newcommand*{\ifnumequal}[1]{% - \ifnumcomp{#1}=} - -\newcommand*{\ifnumgreater}[1]{% - \ifnumcomp{#1}>} - -\newcommand*{\ifnumless}[1]{% - \ifnumcomp{#1}<} - -% {<numexpr>}{<true>}{<false>} - -\newcommand*{\ifnumodd}[1]{% - \ifodd\numexpr#1\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<dimexpr>}{<comp>}{<dimexpr>}{<true>}{<false>} - -\newcommand*{\ifdimcomp}[3]{% - \ifdim\dimexpr#1\relax#2\dimexpr#3\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<dimexpr>}{<dimexpr>}{<true>}{<false>} - -\newcommand*{\ifdimequal}[1]{% - \ifdimcomp{#1}=} - -\newcommand*{\ifdimgreater}[1]{% - \ifdimcomp{#1}>} - -\newcommand*{\ifdimless}[1]{% - \ifdimcomp{#1}<} - -% {<expr>}{<true>}{<false>} - -\newcommand{\ifboolexpe}[1]{% - \etb@be@beg\etb@be@bgroup#1(&\etb@be@end} - -\let\etb@be@true\@empty -\def\etb@be@false{-\@ne} - -\def\etb@be@beg{% - \ifnum\numexpr\z@\ifnum\numexpr\z@} - -\def\etb@be@end{% - <\z@ - \expandafter\etb@be@false - \fi - <\z@ - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi} - -\long\def\etb@be@bgroup#1(#2&{% - \etb@be@egroup#1)&% - \ifblank{#2} - {} - {\etb@be@beg - \etb@be@bgroup#2&}} - -\long\def\etb@be@egroup#1)#2&{% - \etb@be@and#1and&% - \ifblank{#2} - {} - {\etb@be@end\etb@be@true\etb@be@false - \etb@be@egroup#2&}} - -\long\def\etb@be@and#1and#2&{% - \etb@be@or#1or&% - \ifblank{#2} - {} - {<\z@ - \expandafter\@firstofone - \else - \expandafter\@gobble - \fi - {=\z@\fi\ifnum\numexpr\m@ne}% - \ifnum\numexpr\z@ - \etb@be@and#2&}} - -\long\def\etb@be@or#1or#2&{% - \etb@be@not#1not&% - \ifblank{#2} - {} - {<\z@ - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi - {=\z@\fi\ifnum\numexpr\z@ - \ifnum\numexpr\@ne} - {=\z@\fi\ifnum\numexpr\z@ - \ifnum\numexpr\z@}% - \etb@be@or#2&}} - -\long\def\etb@be@not#1not#2&{% - \etb@be@togl#1togl&% - \ifblank{#2} - {} - {>\z@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\unless\ifnum\numexpr\m@ne} - {\unless\ifnum\numexpr\z@}% - \etb@be@not#2&}} - -\long\def\etb@be@togl#1togl#2&{% - \etb@be@bool#1bool&% - \ifblank{#2} - {} - {\etb@be@togl@i#2&}} - -\long\def\etb@be@togl@i#1#2&{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname\etb@be@true\etb@be@false} - {\etb@be@err{Toggle '#1' undefined}{}}% - \etb@be@togl#2&} - -\long\def\etb@be@bool#1bool#2&{% - \etb@be@test#1test&% - \ifblank{#2} - {} - {\etb@be@bool@i#2&}} - -\long\def\etb@be@bool@i#1#2&{% - \ifcsundef{if#1} - {\etb@be@err{Boolean '#1' undefined}{}} - {\csname if#1\endcsname - \else - \etb@be@false - \fi}% - \etb@be@bool#2&} - -\long\def\etb@be@test#1test#2&{% - \ifblank{#1} - {} - {\etb@be@err{The invalid part is: '\detokenize{#1}'}{}}% - \ifblank{#2} - {} - {\etb@be@test@i#2&}} - -\long\def\etb@be@test@i#1#2&{% - #1\etb@be@true\etb@be@false - \etb@be@test#2&} - -\long\def\etb@be@err#1#2{% - \expandafter\ifnum\the\numexpr - \expandafter\ifnum\the\currentiftype=-3 - \expandafter\thr@@ - \else - \expandafter\currentiftype - \fi - =\thr@@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {=\z@\fi - \etb@be@err{#1}{#2\ifnum\numexpr\m@ne}} - {\etb@err@expr{#1}#2}} - -% {<expr>}{<true>}{<false>} - -\newrobustcmd{\ifboolexpr}[1]{\etb@boolexpr{#1}} - -\long\def\etb@boolexpr#1{% - \begingroup - \let\etb@br@neg\@firstoftwo - \etb@tempcnta\z@ - \etb@br@beg - \etb@br@bgroup#1(&% - \etb@br@end - \etb@br@eval} - -\def\etb@br@beg{% - \begingroup - \let\etb@br@neg\@firstoftwo - \etb@tempcnta\z@} - -\def\etb@br@end{% - \etb@br@eval\etb@br@true\etb@br@false} - -\def\etb@br@eval{% - \ifnum\etb@tempcnta<\z@ - \aftergroup\@secondoftwo - \else - \aftergroup\@firstoftwo - \fi - \endgroup} - -\def\etb@br@true{% - \advance\etb@tempcnta\etb@br@neg\z@\m@ne - \let\etb@br@neg\@firstoftwo} - -\def\etb@br@false{% - \advance\etb@tempcnta\etb@br@neg\m@ne\z@ - \let\etb@br@neg\@firstoftwo} - -\long\def\etb@br@bgroup#1(#2&{% - \etb@br@egroup#1)&% - \ifblank{#2} - {} - {\etb@br@beg - \etb@br@bgroup#2&}} - -\long\def\etb@br@egroup#1)#2&{% - \etb@br@and#1and&% - \ifblank{#2} - {} - {\etb@br@end - \etb@br@egroup#2&}} - -\long\def\etb@br@and#1and#2&{% - \etb@br@or#1or&% - \ifblank{#2} - {} - {\ifnum\etb@tempcnta<\z@ - \etb@tempcnta\m@ne - \else - \etb@tempcnta\z@ - \fi - \etb@br@and#2&}} - -\long\def\etb@br@or#1or#2&{% - \etb@br@not#1not&% - \ifblank{#2} - {} - {\ifnum\etb@tempcnta<\z@ - \etb@tempcnta\z@ - \else - \etb@tempcnta\@ne - \fi - \etb@br@or#2&}} - -\long\def\etb@br@not#1not#2&{% - \etb@br@togl#1togl&% - \ifblank{#2} - {} - {\let\etb@br@neg\@secondoftwo - \etb@br@not#2&}} - -\long\def\etb@br@togl#1togl#2&{% - \etb@br@bool#1bool&% - \ifblank{#2} - {} - {\etb@br@togl@i#2&}} - -\long\def\etb@br@togl@i#1#2&{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname\etb@br@true\etb@br@false} - {\etb@err@expr{Toggle '#1' undefined}\etb@br@false}% - \etb@br@togl#2&} - -\long\def\etb@br@bool#1bool#2&{% - \etb@br@test#1test&% - \ifblank{#2} - {} - {\etb@br@bool@i#2&}} - -\long\def\etb@br@bool@i#1#2&{% - \ifcsundef{if#1} - {\etb@err@expr{Boolean '#1' undefined}\etb@br@false} - {\csname if#1\endcsname - \etb@br@true - \else - \etb@br@false - \fi}% - \etb@br@bool#2&} - -\long\def\etb@br@test#1test#2&{% - \ifblank{#1} - {} - {\etb@err@expr{The invalid part is: '\detokenize{#1}'}}% - \ifblank{#2} - {} - {\etb@br@test@i#2&}} - -\long\def\etb@br@test@i#1#2&{% - \ignorespaces#1\etb@br@true\etb@br@false - \etb@br@test#2&} - -\long\def\etb@err@expr#1{% - \etb@error - {Invalid boolean expression} - {#1.}} - -% {<expr>}{<code>} - -\newrobustcmd{\whileboolexpr}[2]{% - \etb@boolexpr{#1}{#2\whileboolexpr{#1}{#2}}{}} - -% {<expr>}{<code>} - -\newrobustcmd{\unlessboolexpr}[2]{% - \etb@boolexpr{#1}{}{#2\unlessboolexpr{#1}{#2}}} - -% {<cstoken>} - -\newcommand{\expandonce}[1]{% - \unexpanded\expandafter{#1}} - -% {<csname>} - -\newcommand*{\csexpandonce}[1]{% - \expandafter\expandonce\csname#1\endcsname} - -% {<code>} - -\newcommand*{\protecting}{} -\def\protecting#{% - \ifx\protect\@typeset@protect - \etb@protecting\@firstofone - \fi - \ifx\protect\@unexpandable@protect - \etb@protecting\etb@unexpandable - \fi - \ifx\protect\noexpand - \etb@protecting\unexpanded - \fi - \ifx\protect\string - \etb@protecting\detokenize - \fi - \relax\@firstofone} - -\def\etb@protecting#1#2\relax\@firstofone{\fi#1} -\long\def\etb@unexpandable#1{\unexpanded{\protecting{#1}}} - -% {<csname>} - -\newrobustcmd*{\csdef}[1]{\expandafter\def\csname#1\endcsname} -\newrobustcmd*{\csedef}[1]{\expandafter\edef\csname#1\endcsname} -\newrobustcmd*{\csgdef}[1]{\expandafter\gdef\csname#1\endcsname} -\newrobustcmd*{\csxdef}[1]{\expandafter\xdef\csname#1\endcsname} -\newrobustcmd*{\protected@csedef}{\etb@protected\csedef} -\newrobustcmd*{\protected@csxdef}{\etb@protected\csxdef} - -\def\etb@protected{% - \let\@@protect\protect - \let\protect\@unexpandable@protect - \afterassignment\restore@protect} - -% {<csname>}{<cstoken>} - -\newrobustcmd{\cslet}[2]{% - \expandafter\let\csname#1\endcsname#2} - -% {<cstoken>}{<csname>} - -\newrobustcmd{\letcs}[2]{% - \ifcsdef{#2} - {\expandafter\let\expandafter#1\csname#2\endcsname} - {\undef#1}} - -% {<csname>}{<csname>} - -\newrobustcmd*{\csletcs}[2]{% - \ifcsdef{#2} - {\expandafter\let - \csname#1\expandafter\endcsname - \csname#2\endcsname} - {\csundef{#1}}} - -% {<csname>} - -\newcommand*{\csuse}[1]{% - \ifcsname#1\endcsname - \csname#1\expandafter\endcsname - \fi} - -% {<cstoken>} - -\newrobustcmd{\undef}[1]{\let#1\etb@undefined} - -% {<csname>} - -\newrobustcmd*{\csundef}[1]{\cslet{#1}\etb@undefined} - -% {<cstoken>}{<code>} - -\newrobustcmd{\appto}[2]{% - \ifundef{#1} - {\edef#1{\unexpanded{#2}}} - {\edef#1{\expandonce#1\unexpanded{#2}}}} -\newrobustcmd{\eappto}[2]{% - \ifundef{#1} - {\edef#1{#2}} - {\edef#1{\expandonce#1#2}}} -\newrobustcmd{\gappto}[2]{% - \ifundef{#1} - {\xdef#1{\unexpanded{#2}}} - {\xdef#1{\expandonce#1\unexpanded{#2}}}} -\newrobustcmd{\xappto}[2]{% - \ifundef{#1} - {\xdef#1{#2}} - {\xdef#1{\expandonce#1#2}}} - -\newrobustcmd*{\protected@eappto}{\etb@protected\eappto} -\newrobustcmd*{\protected@xappto}{\etb@protected\xappto} - -% {<cstoken>}{<code>} - -\newrobustcmd{\preto}[2]{% - \ifundef{#1} - {\edef#1{\unexpanded{#2}}} - {\edef#1{\unexpanded{#2}\expandonce#1}}} -\newrobustcmd{\epreto}[2]{% - \ifundef{#1} - {\edef#1{#2}} - {\edef#1{#2\expandonce#1}}} -\newrobustcmd{\gpreto}[2]{% - \ifundef{#1} - {\xdef#1{\unexpanded{#2}}} - {\xdef#1{\unexpanded{#2}\expandonce#1}}} -\newrobustcmd{\xpreto}[2]{% - \ifundef{#1} - {\xdef#1{#2}} - {\xdef#1{#2\expandonce#1}}} - -\newrobustcmd*{\protected@epreto}{\etb@protected\epreto} -\newrobustcmd*{\protected@xpreto}{\etb@protected\xpreto} - -% {<csname>}{<code>} - -\newrobustcmd*{\csappto}[1]{\expandafter\appto\csname#1\endcsname} -\newrobustcmd*{\cseappto}[1]{\expandafter\eappto\csname#1\endcsname} -\newrobustcmd*{\csgappto}[1]{\expandafter\gappto\csname#1\endcsname} -\newrobustcmd*{\csxappto}[1]{\expandafter\xappto\csname#1\endcsname} -\newrobustcmd*{\protected@cseappto}{\etb@protected\cseappto} -\newrobustcmd*{\protected@csxappto}{\etb@protected\csxappto} - -% {<csname>}{<code>} - -\newrobustcmd*{\cspreto}[1]{\expandafter\preto\csname#1\endcsname} -\newrobustcmd*{\csepreto}[1]{\expandafter\epreto\csname#1\endcsname} -\newrobustcmd*{\csgpreto}[1]{\expandafter\gpreto\csname#1\endcsname} -\newrobustcmd*{\csxpreto}[1]{\expandafter\xpreto\csname#1\endcsname} -\newrobustcmd*{\protected@csepreto}{\etb@protected\csepreto} -\newrobustcmd*{\protected@csxpreto}{\etb@protected\csxpreto} - -% {<cstoken>}{<numexpr>} - -\newrobustcmd*{\numdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \edef#1{\the\numexpr#2}} -\newrobustcmd*{\numgdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \xdef#1{\the\numexpr#2}} - -% {<csname>}{<numexpr>} - -\newrobustcmd*{\csnumdef}[1]{% - \expandafter\numdef\csname#1\endcsname} -\newrobustcmd*{\csnumgdef}[1]{% - \expandafter\numgdef\csname#1\endcsname} - -% {<cstoken>}{<dimexpr>} - -\newrobustcmd*{\dimdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \edef#1{\the\dimexpr#2}} -\newrobustcmd*{\dimgdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \xdef#1{\the\dimexpr#2}} - -% {<csname>}{<dimexpr>} - -\newrobustcmd*{\csdimdef}[1]{% - \expandafter\dimdef\csname#1\endcsname} -\newrobustcmd*{\csdimgdef}[1]{% - \expandafter\dimgdef\csname#1\endcsname} - -% {<cstoken>}{<glueexpr>} - -\newrobustcmd*{\gluedef}[2]{% - \ifundef#1{\let#1\z@skip}{}% - \edef#1{\the\glueexpr#2}} -\newrobustcmd*{\gluegdef}[2]{% - \ifundef#1{\let#1\z@skip}{}% - \xdef#1{\the\glueexpr#2}} - -% {<csname>}{<glueexpr>} - -\newrobustcmd*{\csgluedef}[1]{% - \expandafter\gluedef\csname#1\endcsname} -\newrobustcmd*{\csgluegdef}[1]{% - \expandafter\gluegdef\csname#1\endcsname} - -% {<cstoken>}{<muexpr>} - -\newrobustcmd*{\mudef}[2]{% - \ifundef#1{\def#1{0mu}}{}% - \edef#1{\the\muexpr#2}} -\newrobustcmd*{\mugdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \xdef#1{\the\muexpr#2}} - -% {<csname>}{<muexpr>} - -\newrobustcmd*{\csmudef}[1]{% - \expandafter\mudef\csname#1\endcsname} -\newrobustcmd*{\csmugdef}[1]{% - \expandafter\mugdef\csname#1\endcsname} - -% {<counter>}{<numexpr>} - -\newrobustcmd*{\defcounter}[2]{% - \ifcsundef{c@#1} - {\etb@noglobal\@nocounterr{#1}}% - {\csname c@#1\endcsname\numexpr#2\relax}} - -% {<length>}{<glueexpr>} - -\newrobustcmd*{\deflength}[2]{% - \ifundef{#1} - {\etb@noglobal\etb@err@nolen{#1}}% - {#1\glueexpr#2\relax}} - -\protected\def\etb@err@nolen#1{% - \etb@error{Length '\string#1' undefined}\@eha} - -% {<name>} - -\newrobustcmd*{\newbool}[1]{% - \expandafter\@ifdefinable\csname if#1\endcsname{% - \expandafter\newif\csname if#1\endcsname}} - -% {<name>} - -\newrobustcmd*{\providebool}[1]{% - \ifcsundef{if#1} - {\expandafter\newif\csname if#1\endcsname} - {\begingroup - \edef\@tempa{\expandafter\meaning\csname if#1\endcsname}% - \ifx\@tempa\etb@isfalse - \else - \ifx\@tempa\etb@istrue - \else - \etb@error{\@backslashchar if#1 not a boolean}\@eha - \fi - \fi - \endgroup}} - -% {<name>}{<true>|<false>} - -\newrobustcmd*{\setbool}[2]{% - \ifcsundef{if#1} - {\etb@noglobal\etb@err@nobool{#1}} - {\ifcsundef{#1#2} - {\etb@noglobal\etb@err@boolval{#2}} - {\csname#1#2\endcsname}}} - -% {<name>} - -\newrobustcmd*{\booltrue}[1]{% - \ifcsundef{if#1} - {\etb@noglobal\etb@err@nobool{#1}} - {\csname#1true\endcsname}} - -% {<name>} - -\newrobustcmd*{\boolfalse}[1]{% - \ifcsundef{if#1} - {\etb@noglobal\etb@err@nobool{#1}} - {\csname#1false\endcsname}} - -\edef\etb@istrue{\meaning\iftrue} -\edef\etb@isfalse{\meaning\iffalse} -\protected\def\etb@noglobal{\let\relax\relax} - -% {<name>}{<true}{<false>} - -\newcommand*{\ifbool}[1]{% - \ifcsundef{if#1} - {\etb@err@nobool{#1}\@gobbletwo} - {\csname if#1\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}} - -% {<name>}{<not true}{<not false>} - -\newcommand*{\notbool}[1]{% - \ifcsundef{if#1} - {\etb@err@nobool{#1}\@gobbletwo} - {\csname if#1\endcsname - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi}} - -\protected\def\etb@err@nobool#1{% - \etb@error{Boolean '\@backslashchar if#1' undefined}\@eha} - -\def\etb@err@boolval#1{% - \etb@error - {Invalid boolean value '#1'} - {Valid boolean values are 'true' and 'false'.}} - -% {<name>} - -\newrobustcmd*{\newtoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {\etb@error{Toggle '#1' already defined}\@eha} - {\cslet{etb@tgl@#1}\@secondoftwo}} - -% {<name>} - -\newrobustcmd*{\providetoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {} - {\cslet{etb@tgl@#1}\@secondoftwo}} - -% {<name>}{<true>|<false>} - -\newrobustcmd*{\settoggle}[2]{% - \ifcsdef{etb@tgl@#1} - {\ifcsdef{etb@toggle#2} - {\csletcs{etb@tgl@#1}{etb@toggle#2}} - {\etb@noglobal\etb@err@boolval{#2}}} - {\etb@noglobal\etb@err@notoggle{#1}}} - -% {<name>} - -\newrobustcmd*{\toggletrue}[1]{% - \ifcsdef{etb@tgl@#1} - {\cslet{etb@tgl@#1}\etb@toggletrue} - {\etb@noglobal\etb@err@notoggle{#1}}} - -% {<name>} - -\newrobustcmd*{\togglefalse}[1]{% - \ifcsdef{etb@tgl@#1} - {\cslet{etb@tgl@#1}\etb@togglefalse} - {\etb@noglobal\etb@err@notoggle{#1}}} - -\let\etb@toggletrue\@firstoftwo -\let\etb@togglefalse\@secondoftwo - -% {<name>}{<true}{<false>} - -\newcommand*{\iftoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname} - {\etb@err@notoggle{#1}\@gobbletwo}} - -% {<name>}{<not true}{<not false>} - -\newcommand*{\nottoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname\@secondoftwo\@firstoftwo} - {\etb@err@notoggle{#1}\@gobbletwo}} - -\protected\def\etb@err@notoggle#1{% - \etb@error{Toggle '#1' undefined}\@eha} - -% {<cstoken>}{<true}{<false>} - -\protected\def\etb@ifscanable#1{% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% - ####1\def\string\etb@resrvda####2{####3}}% - \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda\meaning#1&}}% - \etb@resrvda - \makeatletter - \scantokens\expandafter{\etb@resrvda}% - \expandafter\endgroup\ifx#1\etb@resrvda - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<cstoken>}{<search>}{<true}{<false>} - -\protected\long\def\etb@ifpattern#1#2{% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{#2}####2&{% - \endgroup\noexpand\noexpand\noexpand\ifblank{####2}}% - \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda - \expandafter\strip@prefix\meaning#1\detokenize{#2}&}% - \noexpand\etb@resrvda} - \etb@resrvda\@secondoftwo\@firstoftwo} - -% {<string>}{<true}{<false>} - -\protected\long\def\etb@ifhashcheck#1{% - \begingroup - \edef\etb@resrvda{\detokenize{#1}}% - \expandafter\endgroup - \expandafter\etb@ifhashcheck@i\meaning\etb@resrvda&} - -\edef\etb@ifhashcheck@i#1&{% - \noexpand\expandafter - \noexpand\etb@ifhashcheck@ii - \noexpand\strip@prefix#1\string#\string#&} - -\edef\etb@ifhashcheck@ii{% - \def\noexpand\etb@ifhashcheck@ii##1\string#\string###2&} -\etb@ifhashcheck@ii{\ifblank{#2}} - -% {<cstoken>} - -\newrobustcmd*{\robustify}[1]{% - \ifundef{#1} - {\etb@error{\string#1 undefined}\@eha} - {\ifdefmacro{#1} - {\ifdefltxprotect{#1} - {\letcs\etb@resrvda{\expandafter\@gobble\string#1 }% - \@tempswatrue} - {\let\etb@resrvda#1% - \@tempswafalse}% - \ifdefparam\etb@resrvda - {\etb@ifscanable\etb@resrvda - {\etb@robustify\etb@resrvda - \let#1\etb@resrvda} - {\etb@error{Failed to robustify \string#1} - {The command is special and cannot be - handled by \string\robustify.}% - \@tempswafalse}} - {\protected\edef#1{\expandonce\etb@resrvda}} - \if@tempswa - \ifcsdef{\string#1 } - {} - {\csundef{\expandafter\@gobble\string#1 }}% - \fi - \undef\etb@resrvda} - {\etb@error{\string#1 not a macro}\@eha}}} - -\def\etb@robustify#1{% - \begingroup - \edef\etb@resrvdb{% - \def\noexpand\etb@resrvdb####1\detokenize{macro}:####2->####3&{% - \protected####1\def\string#1\space####2{####3}}% - \edef\noexpand\etb@resrvdb{% - \noexpand\etb@resrvdb\meaning#1&}}% - \etb@resrvdb - \etb@patchcmd@scantoks\etb@resrvdb} - -% {<cstoken>}{<search>}{<true}{<false>} -% *{<cstoken>}{<true}{<false>} - -\newrobustcmd{\ifpatchable}{% - \etb@dbg@trce\ifpatchable - \begingroup - \@makeother\#% - \@ifstar\etb@ifpatchable@i\etb@ifpatchable} - -\long\def\etb@ifpatchable#1#2{% - \endgroup - \etb@dbg@init#1% - \ifundef{#1} - {\etb@dbg@fail{def}\@secondoftwo} - {\etb@dbg@info{def}% - \ifdefmacro{#1} - {\etb@dbg@info{mac}% - \etb@ifscanable{#1} - {\etb@ifhashcheck{#2} - {\etb@dbg@info{tok}% - \etb@ifpattern#1{#2} - {\etb@dbg@info{pat}% - \etb@dbg@info{pos}\@firstoftwo} - {\etb@dbg@fail{pat}\@secondoftwo}} - {\etb@dbg@fail{hsh}\@secondoftwo}} - {\etb@dbg@fail{tok}\@secondoftwo}} - {\etb@dbg@fail{mac}\@secondoftwo}}} - -\long\def\etb@ifpatchable@i#1{% - \endgroup - \etb@dbg@init#1% - \ifundef{#1} - {\etb@dbg@fail{def}\@secondoftwo} - {\etb@dbg@info{def}% - \ifdefmacro{#1} - {\etb@dbg@info{mac}% - \ifdefparam{#1} - {\etb@dbg@info{prm}% - \etb@ifscanable{#1} - {\etb@dbg@info{tok}% - \etb@dbg@info{pos}\@firstoftwo} - {\etb@dbg@fail{tok}\@secondoftwo}} - {\etb@dbg@info{prl}% - \ifdefprotected{#1} - {\etb@dbg@info{pro}} - {}% - \etb@dbg@info{pos}\@firstoftwo}} - {\etb@dbg@fail{mac}\@secondoftwo}}} - -% [<prefix>]{<cstoken>}{<search>}{<replace>}{<success>}{<failure>} - -\newrobustcmd*{\patchcmd}{% - \etb@dbg@trce\patchcmd - \begingroup - \@makeother\#% - \etb@patchcmd} - -\newcommand{\etb@patchcmd}[4][########1]{% - \etb@ifpatchable#2{#3} - {\etb@dbg@succ{ret}% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{macro:}####2->####3&{% - #1\def\string\etb@resrvda\space####2{\noexpand\etb@resrvdb####3&}}% - \def\noexpand\etb@resrvdb####1\detokenize{#3}####2&{% - ####1\detokenize{#4}####2}% - \edef\noexpand\etb@resrvda{% - \noexpand\etb@resrvda\meaning#2&}}% - \etb@resrvda - \etb@patchcmd@scantoks\etb@resrvda - \let#2\etb@resrvda - \undef\etb@resrvda - \@firstoftwo} - {\@secondoftwo}} - -\def\etb@patchcmd@scantoks#1{% - \edef\etb@resrvda{\endgroup - \unexpanded{\makeatletter\scantokens}{#1}% - \catcode\number`\@=\the\catcode`\@\relax}% - \etb@resrvda} - -% {<cstoken>}{<code>}{<success>}{<failure>} - -\newrobustcmd*{\apptocmd}{% - \etb@dbg@trce\apptocmd - \begingroup - \@makeother\#% - \etb@hooktocmd\etb@append} - -\newrobustcmd*{\pretocmd}{% - \etb@dbg@trce\pretocmd - \begingroup - \@makeother\#% - \etb@hooktocmd\etb@prepend} - -\long\def\etb@hooktocmd#1#2#3{% - \endgroup - \etb@dbg@init#2% - \ifundef{#2} - {\etb@dbg@fail{def}\@secondoftwo} - {\etb@dbg@info{def}% - \ifdefmacro{#2} - {\etb@dbg@info{mac}% - \ifdefparam{#2} - {\etb@dbg@info{prm}% - \etb@ifscanable{#2} - {\etb@ifhashcheck{#3} - {\etb@dbg@info{tok}% - \etb@dbg@succ{ret}% - \etb@hooktocmd@i#1#2{#3}% - \@firstoftwo} - {\etb@dbg@fail{hsh}\@secondoftwo}} - {\etb@dbg@fail{tok}\@secondoftwo}} - {\etb@dbg@info{prl}% - \ifdefprotected{#2} - {\etb@dbg@info{pro}% - \etb@dbg@succ{red}% - \protected} - {\etb@dbg@succ{red}}% - \edef#2{#1{\expandonce#2}{\unexpanded{#3}}}% - \@firstoftwo}} - {\etb@dbg@fail{mac}\@secondoftwo}}} - -\long\def\etb@hooktocmd@i#1#2#3{% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% - ####1\def\string\etb@resrvda\space####2{#1{####3}{\detokenize{#3}}}}% - \edef\noexpand\etb@resrvda{% - \noexpand\etb@resrvda\meaning#2&}}% - \etb@resrvda - \etb@patchcmd@scantoks\etb@resrvda - \let#2\etb@resrvda - \undef\etb@resrvda} - -\long\def\etb@append#1#2{#1#2} -\long\def\etb@prepend#1#2{#2#1} - -\newrobustcmd*{\tracingpatches}{% - \etb@info{Enabling tracing}% - \input{etoolbox.def}% - \global\let\tracingpatches\relax} -\@onlypreamble\tracingpatches - -\let\etb@dbg@trce\@gobble -\let\etb@dbg@init\@gobble -\let\etb@dbg@info\@gobble -\let\etb@dbg@succ\@gobble -\let\etb@dbg@fail\@gobble - -% {<numeral>} - -\newcommand{\rmntonum}[1]{% - \ifblank{#1} - {} - {\expandafter\etb@rti@end\number\numexpr - \expandafter\etb@rti@prs\detokenize{#1}&\relax}} - -\def\etb@rti@prs#1#2{% - \ifx% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {#1#2} - {\ifx% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\etb@rti@chk#1+\etb@rti@num#1#2} - {\etb@rti@chk#1\etb@rti@chk#2% - \ifnum\etb@rti@num#1<\etb@rti@num#2 % - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {+\etb@rti@num#2-\etb@rti@num#1\etb@rti@prs} - {+\etb@rti@num#1\etb@rti@prs#2}}}} - -\def\etb@rti@chk#1{% - \ifcsname etb@rmn@#1\endcsname - \else - \expandafter\etb@rti@brk - \fi} - -\def\etb@rti@brk#1&{+\z@&-1} -\def\etb@rti@end#1\relax{\ifblank{#2}{#1}{#2}} -\def\etb@rti@num#1{\csname etb@rmn@#1\endcsname} - -\chardef\etb@rmn@i=1 -\chardef\etb@rmn@I=1 -\chardef\etb@rmn@v=5 -\chardef\etb@rmn@V=5 -\chardef\etb@rmn@x=10 -\chardef\etb@rmn@X=10 -\chardef\etb@rmn@l=50 -\chardef\etb@rmn@L=50 -\chardef\etb@rmn@c=100 -\chardef\etb@rmn@C=100 -\mathchardef\etb@rmn@d=500 -\mathchardef\etb@rmn@D=500 -\mathchardef\etb@rmn@m=1000 -\mathchardef\etb@rmn@M=1000 - -% {<numeral>}{<true>}{<false>} - -\newcommand{\ifrmnum}[1]{% - \ifblank{#1} - {\@secondoftwo} - {\expandafter\etb@ifr@prs\detokenize{#1}\relax}} - -\def\etb@ifr@prs#1{% - \ifx\relax#1% - \expandafter\@firstoftwo - \else - \ifcsname etb@rmn@#1\endcsname - \expandafter\expandafter - \expandafter\etb@ifr@prs - \else - \expandafter\expandafter - \expandafter\etb@ifr@brk - \fi - \fi} - -\def\etb@ifr@brk#1\relax{\@secondoftwo} - -% <*>{<command>}{<separator>} - -\newrobustcmd*{\DeclareListParser}{% - \@ifstar - {\etb@defparser\etb@defparser@arg} - {\etb@defparser\etb@defparser@do}} - -\def\etb@defparser#1#2#3{% - \@ifdefinable#2{#1{#2}{#3}}} - -\def\etb@defparser@do#1#2{% - \begingroup - \edef\@tempa{\endgroup - \long\def\noexpand#1####1{% - \expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - \space####1\noexpand#2&}% - \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1\noexpand#2####2&{% - \noexpand\etb@listitem\noexpand\do{####1}% - \noexpand\ifblank{####2} - {\noexpand\listbreak} - {\expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - \space####2}&}}% - \@tempa} - -\def\etb@defparser@arg#1#2{% - \begingroup - \edef\@tempa{\endgroup - \long\def\noexpand#1####1####2{% - \expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - {####1}\space####2\noexpand#2&}% - \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1####2\noexpand#2####3&{% - \noexpand\etb@listitem{####1}{####2}% - \noexpand\ifblank{####3} - {\noexpand\listbreak} - {\expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - {####1}\space####3}&}}% - \@tempa} - -\long\def\etb@listitem#1#2{% - \ifblank{#2} - {} - {\expandafter\etb@listitem@i - \expandafter{\@firstofone#2}{#1}}} -\long\def\etb@listitem@i#1#2{#2{#1}} - -\newcommand*{\listbreak}{} -\long\def\listbreak#1&{} - -% {<item1>,<item2>,...} => \do{<item1>}\do{<item2>}... - -\DeclareListParser{\docsvlist}{,} - -% {<handler>}{<item1>,<item2>,...} => <handler>{<item1>}<handler>{<item2>}... - -\DeclareListParser*{\forcsvlist}{,} - -% {<listmacro>}{<string>} - -\newrobustcmd{\listadd}[2]{% - \ifblank{#2}{}{\appto#1{#2|}}} -\newrobustcmd{\listeadd}[2]{% - \begingroup - \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% - \etb@tempa{}{\eappto#1{#2|}}} -\newrobustcmd{\listgadd}[2]{% - \ifblank{#2}{}{\gappto#1{#2|}}} -\newrobustcmd{\listxadd}[2]{% - \begingroup - \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% - \etb@tempa{}{\xappto#1{#2|}}} - -% {<listcsname>}{<string>} - -\newrobustcmd{\listcsadd}[1]{% - \expandafter\listadd\csname#1\endcsname} -\newrobustcmd{\listcseadd}[1]{% - \expandafter\listeadd\csname#1\endcsname} -\newrobustcmd{\listcsgadd}[1]{% - \expandafter\listgadd\csname#1\endcsname} -\newrobustcmd{\listcsxadd}[1]{% - \expandafter\listxadd\csname#1\endcsname} - -% {<string>}{<listmacro>}{<true>}{<false>} - -\newrobustcmd{\ifinlist}[2]{% - \begingroup - \def\etb@tempa##1|#1|##2&{\endgroup - \ifblank{##2}\@secondoftwo\@firstoftwo}% - \expandafter\etb@tempa\expandafter|#2|#1|&} - -\newrobustcmd{\xifinlist}[1]{% - \begingroup - \edef\etb@tempa{\endgroup\ifinlist{#1}}% - \etb@tempa} - -% {<string>}{<listcsname>}{<true>}{<false>} - -\newrobustcmd{\ifinlistcs}[2]{% - \expandafter\etb@ifinlistcs@i\csname #2\endcsname{#1}} -\long\def\etb@ifinlistcs@i#1#2{\ifinlist{#2}{#1}} - -\newrobustcmd{\xifinlistcs}[1]{% - \begingroup - \edef\etb@tempa{\endgroup\ifinlistcs{#1}}% - \etb@tempa} - -% {<handler>}{<listmacro>} => <handler>{<item1>}<handler>{<item2>}... - -\newcommand*{\forlistloop}[2]{% - \expandafter\etb@forlistloop\expandafter{#2}{#1}} - -\long\def\etb@forlistloop#1#2{\etb@forlistloop@i{#2}#1|&} - -\long\def\etb@forlistloop@i#1#2|#3&{% - \ifblank{#2} - {} - {#1{#2}}% - \ifblank{#3} - {\listbreak} - {\etb@forlistloop@i{#1}#3}% - &} - -% {<handler>}{<listcsname>} => <handler>{<item1>}<handler>{<item2>}... - -\newcommand*{\forlistcsloop}[2]{% - \expandafter\expandafter\expandafter\etb@forlistloop - \expandafter\expandafter\expandafter{\csname#2\endcsname}{#1}} - -% {<listmacro>} => \do{<item1>}\do{<item2>}... - -\newcommand*{\dolistloop}{\forlistloop\do} - -% {<listcsname>} => \do{<item1>}\do{<item2>}... - -\newcommand*{\dolistcsloop}{\forlistcsloop\do} - -% {<code>} - -\newrobustcmd*{\AtEndPreamble}{\gappto\@endpreamblehook} -\newcommand*{\@endpreamblehook}{} - -\preto\document{% - \endgroup - \let\AtEndPreamble\@firstofone - \@endpreamblehook - \protected\def\AtEndPreamble{\@notprerr\@gobble}% - \undef\@endpreamblehook - \begingroup} - -% {<code>} - -\newrobustcmd*{\AfterPreamble}{\AtBeginDocument} -\AtEndPreamble{\let\AfterPreamble\@firstofone} - -% {<code>} - -\newrobustcmd*{\AfterEndPreamble}{\gappto\@afterendpreamblehook} -\newcommand*{\@afterendpreamblehook}{} - -\appto\document{% - \let\AfterEndPreamble\@firstofone - \@afterendpreamblehook - \protected\def\AfterEndPreamble{\@notprerr\@gobble}% - \undef\@afterendpreamblehook - \ignorespaces} - -\AtEndDocument{\let\AfterEndPreamble\@gobble} - -% {<code>} - -\newrobustcmd*{\AfterEndDocument}{\gappto\@afterenddocumenthook} -\newcommand*{\@afterenddocumenthook}{} - -\patchcmd\enddocument - {\deadcycles} - {\let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \deadcycles} - {} - {\let\etb@@end\@@end - \def\@@end{% - \let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \etb@@end}} - -% {<environment>}{<code>} - -\newrobustcmd{\AtBeginEnvironment}[1]{% - \csgappto{@begin@#1@hook}} - -\patchcmd\begin - {\csname #1\endcsname} - {\csuse{@begin@#1@hook}% - \csname #1\endcsname} - {} - {\etb@warning{% - Patching '\string\begin' failed!\MessageBreak - '\string\AtBeginEnvironment' will not work\@gobble}} - -% {<environment>}{<code>} - -\newrobustcmd{\AtEndEnvironment}[1]{% - \csgappto{@end@#1@hook}} - -\patchcmd\end - {\csname end#1\endcsname} - {\csuse{@end@#1@hook}% - \csname end#1\endcsname} - {} - {\etb@warning{% - Patching '\string\end' failed!\MessageBreak - '\string\AtEndEnvironment' will not work\@gobble}} - -% {<environment>}{<code>} - -\newrobustcmd{\BeforeBeginEnvironment}[1]{% - \csgappto{@beforebegin@#1@hook}} - -\pretocmd\begin - {\csuse{@beforebegin@#1@hook}} - {} - {\etb@warning{% - Patching '\string\begin' failed!\MessageBreak - '\string\BeforeBeginEnvironment' will not work\@gobble}} - -% {<environment>}{<code>} - -\newrobustcmd{\AfterEndEnvironment}[1]{% - \csgappto{@afterend@#1@hook}} - -\patchcmd\end - {\if@ignore} - {\csuse{@afterend@#1@hook}% - \if@ignore} - {} - {\etb@warning{% - Patching '\string\end' failed!\MessageBreak - '\string\AfterEndEnvironment' will not work\@gobble}} - -\endinput diff --git a/cfar-report/genesort.bib b/cfar-report/genesort.bib deleted file mode 100644 index 0e7230180a4c37af7a5eb4453e79b59e649f24bc..0000000000000000000000000000000000000000 --- a/cfar-report/genesort.bib +++ /dev/null @@ -1,159 +0,0 @@ -@INPROCEEDINGS{yotov03, - author = { Yotov, Kamen and Li, Xiaoming and Ren, Gang and Cibulskis, Michael - and DeJong, Gerald and Garzaran, Maria and Padua, David and Pingali, - Keshav and Stodghill, Paul and Wu, Peng}, - title = {A Comparison of Empirical and Model-driven Optimization }, - booktitle = {Programming Language Design and Implementation}, - year = { 2003}, - month = {06/09/}, - url = {http://iss.ices.utexas.edu/Publications/Papers/PLDI2003.pdf} -} -@inproceedings{spike:lcpc, - AUTHOR = "J. C. Brodman and G. C. Evans and M. Manguoglu and A. Sameh and M. J. Garzaran and D. Padua", - TITLE = "{Parallel Numerical Solver Using Hierarchically Tiled Arrays}", - booktitle = {In the Proc. of the International Workshop on Languages and Compilers for Parallel Computing}, - YEAR = {2010} } -@inproceedings{lctes, - AUTHOR = "B. Virlet and X. Zhou and J.P. Giacalone and B. Kuhn and M.J. Garzaran and D. Padua", - TITLE = "{Scheduling of Stream-Based Real-Time Applications for Heterogeneous Systems}", - booktitle = {In the Proc. of the Conference on Languages, Compilers, Tools and Theory for Embedded Systems}, - YEAR = {2011} } - -@inproceedings{cavazos, - AUTHOR = "J. Cavazos and G. Fursin and F. Agakov and E. Bonilla and .M. F. P. O'Boyle and O. Temam", - TITLE = "{Rapidly Selecting Good Compiler Optimizations using Performance Counters}", - booktitle = {International Symposium on Code Generation and Optimization}, - YEAR = {2007} } - -@inproceedings{hall, - AUTHOR = "A. Tiwari and C. Chen and J. Chame and M. Hall and J. Hollingsworth", - TITLE = "{Scalable Autotuning Framework for Compiler Optimization}", - booktitle = { IEEE International Parallel and Distributed Processing Symposium (IPDPS'09)}, - month= {May}, - YEAR = {2009} } -@inproceedings{rwerger, - AUTHOR = "N. Thomas and Gabriel Tanase and Olga Tkachyshyn and J. Perdue and N. M. Amato and L. Rauchwerger", - TITLE = "{A Framework for Adaptive Algorithm Selection in STAPL}", - booktitle = {ACM SIGPLAN Symp. Prin. Prac. Par. Prog. (PPOPP)}, - month= {June}, - pages={277--288}, - YEAR = {2005} } - - -@inproceedings{stencil:berkeley, - AUTHOR = "A. Ganapathi and K Datta and A. Fox and D. Patterson", - TITLE = "{A Case for Machine Learning to Optimize Multicore Performance}", - booktitle = {First USENIX Workshop on Hot Topics in Parallelism}, - month= {March}, - YEAR = {2009} } - - -@MastersThesis{danthesis, - author = {Daniel Hoeflinger}, - title = {{Automatic Tuning of a Sorting Library for Multicore Systems}}, - school = {Computer Science Department, University of Illinois at Urbana-Champaign}, - address = {the Netherlands}, - year = {2008} -} - - -@phdthesis{changhaothesis, - author="Changhao Jiang", - title="Automatic Software Performance Optimization on Modern Architectures", - school="Computer Science Department, University of Illinois at Urbana-Champaign", - year="2007" -} -@ARTICLE{darlington:synthsort, - AUTHOR = "John Darlington", - TITLE = "{A Synthesis of Several Sorting Algorithms}", - JOURNAL = {Acta Informatica}, - VOLUME = {11}, - PAGES = {1-30}, - YEAR = {1978} } - -@INPROCEEDINGS{li:adaptivesort, - AUTHOR = "Xiaoming Li and Mar\'{\i}a Jes\'us Garzar\'an and David Padua", - TITLE = "{A Dynamically Tuned Sorting Library}", - BOOKTITLE = "International Symposium on Code Generation and Optimization with Special Emphasis on Feedback-Directed and Runtime Optimization (CGO)", - YEAR = {2004} - } - -@inproceedings{Xiaoming05, - author = "X. Li and M. J. Garzar\'an and D. Padua", - title = "{Optimizing Sorting with Genetic Algorithms }", - booktitle = "Proc. of the Int. Symp. on Code Generation and Optimization", - pages ="99-110", - year = "2005"} - -@inproceedings{Xiaoming:classifier, - author = "X. Li and M. J. Garzar\'an", - title = "{Optimizing Matrix Matrix Multiplication with a Classifier Learning System}", - booktitle = "International Workshop on Languages and Compilers for Parallel Computing", - year = "2005"} - -@ARTICLE{yotov05, - author={Yotov, K. and Li, X. and Ren, G. and Garzaran, M.J.S. and Padua, D. and Pingali, K. and Stodghill, P.}, - journal={Proceedings of the IEEE}, - title={Is Search Really Necessary to Generate High-Performance BLAS?}, - year={2005}, - month={feb. }, - volume={93}, - number={2}, - pages={358 -386}, - keywords={ATLAS;BLAS;Basic Linear Algebra Subprograms;code generation;global search engine;library generators;model driven optimization engine;program compilers;program optimization;search based empirical optimization;linear algebra;mathematics computing;optimising compilers;software libraries;}, - doi={10.1109/JPROC.2004.840444}, - ISSN={0018-9219}, -} - -@article{ocaml, - author="A. Cohen and S. Donadio and M. J. Garzar\'an and C. Herrmann and O. Kiselyov and D. Padua", - title="In search of a program generator to implement generic transformations for high-performance computing", - journal="Science of Computer Programming", - Volume={62}, - number={1}, - pages={25--46}, - month={Septemter}, - year={2006}, - note={Special issue of the first MetaOcaml Workshop 2004} -} -@inproceedings{PRay, - author = "A. Duchateau and A. Sidelnik and M. J. Garzar\'an and D. Padua", - title = "{P-RAY: A Suite of Micro-benchmarks for Multi-core Architectures}", - booktitle = "International Workshop on Languages and Compilers for Parallel Computing", - year = "2008"} - -@inproceedings{Arkady, - author = "A. Epshteyn and M. J. Garzar\'an and G. Dejong and D. Padua and G. Ren and X. Li and K. Yotov and K. Pingali", - title = "{Analytic Models and Empirical Search: A Hybrid Approach to Code Optimization}", - booktitle = "International Workshop on Languages and Compilers for Parallel Computing", - year = "2005"} - - -@article{sparsity, - author = {Im, Eun-Jin and Yelick, Katherine and Vuduc, Richard}, - title = {Sparsity: Optimization Framework for Sparse Matrix Kernels}, - journal = {Int. J. High Perform. Comput. Appl.}, - volume = {18}, - number = {1}, - year = {2004}, - pages = {135--158}} - -@InProceedings{Demmel2005:selftune:linalg, - author = {James Demmel and Jack Dongarra and Victor Eijkhout and - Erika Fuentes and Antoine Petitet and Richard Vuduc and - R. Clint Whaley and Katherine Yelick}, - title = "{Self Adapting Linear Algebra Algorithms and Software}", - booktitle = {Proceedings of the IEEE: Special Issue on Program - Generation, Optimization, and Adaptation}, - year = {2005}, -} -@InProceedings{Vuduc2002:smvm:bounds, - author = {Richard Vuduc and James W. Demmel and Katherine A. Yelick - and Shoaib Kamil and Rajesh Nishtala and Benjamin Lee}, - title = "{Performance Optimizations and Bounds for Sparse Matrix-Vector - Multiply}", - booktitle = {Proceedings of Supercomputing}, - address = {Baltimore, MD, USA}, - month = {November}, - year = {2002} -} diff --git a/cfar-report/hetero.bib b/cfar-report/hetero.bib deleted file mode 100644 index 739383d86d09e46196da7c333a9e2a88a5757821..0000000000000000000000000000000000000000 --- a/cfar-report/hetero.bib +++ /dev/null @@ -1,1247 +0,0 @@ -@inproceedings{Ohshima:VECPAR06, - author = {Ohshima, Satoshi and Kise, Kenji and Katagiri, Takahiro and Yuba, Toshitsugu}, - title = {Parallel processing of matrix multiplication in a CPU and GPU heterogeneous environment}, - booktitle = {Proceedings of the 7th international conference on High performance computing for computational science}, - series = {VECPAR'06}, - year = {2007}, - isbn = {978-3-540-71350-0}, - location = {Rio de Janeiro, Brazil}, - pages = {305--318}, - numpages = {14}, - url = {http://dl.acm.org/citation.cfm?id=1761728.1761755}, - acmid = {1761755}, - publisher = {Springer-Verlag}, - address = {Berlin, Heidelberg}, -} - -@inproceedings{Lee:ISCA10, - author = {Lee, Victor W. and Kim, Changkyu and Chhugani, Jatin and Deisher, Michael and Kim, Daehyun and Nguyen, Anthony D. and Satish, Nadathur and Smelyanskiy, Mikhail and Chennupaty, Srinivas and Hammarlund, Per and Singhal, Ronak and Dubey, Pradeep}, - title = {Debunking the 100X GPU vs. CPU myth: an evaluation of throughput computing on CPU and GPU}, - booktitle = {Proceedings of the 37th annual international symposium on Computer architecture}, - series = {ISCA '10}, - year = {2010}, - isbn = {978-1-4503-0053-7}, - location = {Saint-Malo, France}, - pages = {451--460}, - numpages = {10}, - url = {http://doi.acm.org/10.1145/1815961.1816021}, - doi = {http://doi.acm.org/10.1145/1815961.1816021}, - acmid = {1816021}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {cpu architecture, gpu architecture, performance analysis, performance measurement, software optimization, throughput computing}, -} - -@inproceedings{Wu:ICS05, - author = {Wu, Peng and Eichenberger, Alexandre E. and Wang, Amy and Zhao, Peng}, - title = {An integrated simdization framework using virtual vectors}, - booktitle = {Proceedings of the 19th annual international conference on Supercomputing}, - series = {ICS '05}, - year = {2005}, - isbn = {1-59593-167-8}, - location = {Cambridge, Massachusetts}, - pages = {169--178}, - numpages = {10}, - url = {http://doi.acm.org/10.1145/1088149.1088172}, - doi = {http://doi.acm.org/10.1145/1088149.1088172}, - acmid = {1088172}, - publisher = {ACM}, - address = {New York, NY, USA}, -} - -@inproceedings{VaporSIMD:CGO11, - author = { Nuzman, D. and Dyshel, S. and Rohou, E. and Rosen, I. and - Williams, K. and Yuste, D. and Cohen, A. and Zaks, A.}, - title = {Vapor SIMD: Auto-vectorize once, run everywhere}, - booktitle = {9th Annual IEEE/ACM International Symposium on Code Generation - and Optimization (CGO)}, - year = 2011, - month = April, - pages = {151--160}, - addresss={Chamonix, France} -} - -@techreport{MLCReport:TR10, -author = { K. Nahrstedt and L. Angrave and M. Caccamo and R. Campbell and B. Godfrey and I. Gupta and K. Karahalios and R. Kravets and S. Kamin and S. Poole and W. Sanders }, -title = "Mobile Learning Communities à Are We There Yet?", -institution = "Information Trust Institute, University of Illinois at Urbana-Champaign", -month = {Nov}, -year = {2010} -} - -@article{CogniServe:Micro11, - title = {CogniServe: Heterogeneous Server Architecture for Large-Scale Recognition}, - author = {Ravi Iyer and Sadagopan Srinivasan and Omesh Tickoo and Zhen Fang and Ramesh Illikkal and Steven Zhang and Vineet Chadha and Paul M. Stillwell and Seung Eun Lee}, - year = {2011}, - doi = {http://dx.doi.org/10.1109/MM.2011.37}, - tags = {architecture}, - researchr = {http://researchr.org/publication/IyerSTFIZCSL11}, - cites = {0}, - citedby = {0}, - journal = {IEEE Micro}, - volume = {31}, - number = {3}, - pages = {20-31}, -} - - -@techreport{SARNeeds:TR04, -author = { James Wong and Cassandra Robinson }, -title = "Urban Search and Rescue Technology Needs: Identification of Needs", -number = 207771, -institution = "Savannah River National Laboratory", -month = {Nov}, -year = {2004}, -note = "Available at https://www.ncjrs.gov/pdffiles1/nij/grants/207771.pdf" -} - -@ARTICLE{CDSC:IEEEDTC11, -author={Cong, J. and Reinman, G. and Bui, A. and Sarkar, V.}, -journal={Design Test of Computers, IEEE}, -title={Customizable Domain-Specific Computing}, -year={2011}, -month={march-april }, -volume={28}, -number={2}, -pages={6 -15}, -keywords={computing industry;customizable domain specific computing;heat dissipation;parallel general purpose computing system;parallelization era;power density limitation;power performance efficiency;general purpose computers;parallel processing;}, -doi={10.1109/MDT.2010.141}, -ISSN={0740-7475},} - -@BOOK{KFBOOK, -TITLE = {Probabilistic Graphical Models: Principles and Techniques}, -AUTHOR = { Daphne Koller and Nir Friedman}, -PUBLISHER = {The MIT Press}, -EDITION = {1st}, -YEAR = {2009}, -} - -@BOOK{MLBOOK, -TITLE = {Machine Learning}, -AUTHOR = {Tom M. Mitchel}, -PUBLISHER = {McGraw-Hill}, -EDITION = {1st}, -YEAR = {1997}, -} - -@ARTICLE{ICCVTUT, -author={A. Blake and P. Kohli and M.P. Kumar and C. Rother}, -journal={tutorial at IEEE International Conference on Computer Vision}, -title={Introduction to MAP Inference in Discrete Models}, -year={2009}, -url={http://research.microsoft.com/en-us/um/cambridge/projects/tutorial/}, -} - -@INPROCEEDINGS{CUDACUTS, -author={Vineet, V. and Narayanan, P.J.}, -booktitle={Computer Vision and Pattern Recognition Workshops, 2008. CVPRW '08. IEEE Computer Society Conference on}, -title={CUDA cuts: Fast graph cuts on the GPU}, -year={2008}, -month={june}, -volume={}, -number={}, -pages={1 -8}, -keywords={CUDA cuts;GPU;Nvidia 8800 GTX;graph cuts;graphics processor unit;image restoration;image segmentation;maxflow algorithm;mincut algorithm;push-relabel algorithm;stereo vision;computer graphic equipment;computer graphics;image restoration;image segmentation;stereo image processing;}, -doi={10.1109/CVPRW.2008.4563095}, -ISSN={},} - -@ARTICLE{LBPVLSI, -author={Chia-Kai Liang and Chao-Chung Cheng and Yen-Chieh Lai and Liang-Gee Chen and Chen, H.H.}, -journal={Circuits and Systems for Video Technology, IEEE Transactions on}, -title={Hardware-Efficient Belief Propagation}, -year={2011}, -month={may }, -volume={21}, -number={5}, -pages={525 -537}, -keywords={Markov random field;graphical model;graphics processing unit;hardware implementation;hardware-efficient belief propagation;loopy belief propagation;message passing;robust functions;stereo matching;tile-wise processing;very large-scale integration circuit;Markov processes;VLSI;belief networks;graphical user interfaces;message passing;}, -doi={10.1109/TCSVT.2011.2125570}, -ISSN={1051-8215},} - -@techreport{CHOI, -author = {Jaesik Choi}, -title={Hardware implementation of MRF MAP estimation on FPGA platform, Ph.D. qualifying examination report, unpublished mss}, -institution={Dept of Electrical and Computer Engineering, University of Illinois at Urbana-Champaign}, -month = {Nov}, -year = {2011} -} - -@ARTICLE{TRWS, -author={Kolmogorov, V.}, -journal={Pattern Analysis and Machine Intelligence, IEEE Transactions on}, -title={Convergent Tree-Reweighted Message Passing for Energy Minimization}, -year={2006}, -month={oct. }, -volume={28}, -number={10}, -pages={1568 -1583}, -keywords={computer vision;convergent tree-reweighted message passing;discrete energy minimization;max-product message passing;computer vision;message passing;trees (mathematics);}, -doi={10.1109/TPAMI.2006.200}, -ISSN={0162-8828},} - -@misc{CONVEY, - author = {}, - title = {{Convey HC-1 Family}}, - howpublished = {http:// www.conveycomputer.com} -} - -@article{AutoPilot, - address = {Dordrecht}, - author = {Zhang, Zhiru and Fan, Yiping and Jiang, Wei and Han, Guoling and Yang, Changqi and Cong, Jason}, - booktitle = {High-Level Synthesis}, - chapter = {6}, - doi = {10.1007/978-1-4020-8588-8\_6}, - editor = {Coussy, Philippe and Morawiec, Adam}, - isbn = {978-1-4020-8587-1}, - keywords = {autoesl, hls, springer-book}, - pages = {99--112}, - posted-at = {2011-10-03 14:09:35}, - priority = {2}, - publisher = {Springer Netherlands}, - title = {{AutoPilot}: A {Platform-Based} {ESL} Synthesis System}, - url = {http://dx.doi.org/10.1007/978-1-4020-8588-8\_6}, - year = {2008} -} - -@misc{Impulse, - author = {}, - title = {{Impulse Accelerated Technologies, Impulse CoDeveloper}}, - howpublished = {http://www.impulseaccelerated.com/}, - year = {2010}, -} - -@misc{Altera, - author = {}, - title = {{Altera, ONIOS II C2H Compiler User Guide}}, - howpublished = {http://www.altera.com/literature/ug/ug_nios2_c2h_compiler.pdf}, - year = {2009}, -} - -@misc{MentorGraphics, - author = {}, - title = {{Mentor Graphics, Catapult C Synthesis}}, - howpublished = {http://www.mentor.com/products/esl/high_level_synthesis/catapult_synthesis/}, - year = {2010}, -} - -@INPROCEEDINGS{GAUT, -author={P. Coussy and G. Lhairech-Lebreton}, -booktitle={DATE}, -title={GAUT: An Open Source High-Level Synthesis Tool}, -year={2009}, -month={}, -volume={}, -number={}, -ISSN={},} - -@INPROCEEDINGS{NISC, -author={B. Gorjiara and D. Gajski}, -booktitle={Workshop on Embedded Systems for Real-time Multimedia (ESTIMEDIA)}, -title={Design Space Exploration of C Programs Using NISC: A Case-Study on DCT algorithm}, -year={2005}, -month={}, -volume={}, -number={}, -ISSN={},} - -@article{Diniz2005, -title = "Automatic mapping of C to FPGAs with the DEFACTO compilation and synthesis system", -journal = "Microprocessors and Microsystems", -volume = "29", -number = "2-3", -pages = "51 - 62", -year = "2005", -note = "<ce:title>Special Issue on FPGA Tools and Techniques</ce:title>", -issn = "0141-9331", -doi = "10.1016/j.micpro.2004.06.007", -url = "http://www.sciencedirect.com/science/article/pii/S0141933104000869", -author = "Pedro Diniz and Mary Hall and Joonseok Park and Byoungro So and Heidi Ziegler", -keywords = "Design automation", -keywords = "Parallelizing compiler technology and data dependence analysis", -keywords = "Behavioral synthesis and estimation", -keywords = "Reconfigurable computing", -keywords = "Field-programmable-gate-arrays (FPGAs)" -} - -@BOOK{SPARK, -TITLE = {SPARK: a parallelizing approach to the high-level synthesis of digital circuits}, -AUTHOR = {Sumit Gupta and Rajesh Gupta and Nikil D. Dutt}, -PUBLISHER = {Springer}, -EDITION = {}, -month = {June}, -YEAR = {2009}, -} - -@article{PAPA2009, -author = {Alexandros Papakonstantinou and Karthik Gururaj and John A. Stratton and Deming Chen and Jason Cong and Wen-Mei W. Hwu}, -title = {FCUDA: Enabling efficient compilation of CUDA kernels onto FPGAs}, -journal ={Application Specific Processors, Symposium on}, -volume = {0}, -isbn = {978-1-4244-4939-2}, -year = {2009}, -pages = {35-42}, -doi = {http://doi.ieeecomputersociety.org/10.1109/SASP.2009.5226333}, -publisher = {IEEE Computer Society}, -address = {Los Alamitos, CA, USA}, -} - -@INPROCEEDINGS{PAPA2011, - author={Papakonstantinou, A. and Yun Liang and Stratton, J.A. and Gururaj, K. and Deming Chen and Hwu, W.-M.W. and Cong, J.}, - booktitle={2011 IEEE 19th Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM)}, - title={Multilevel Granularity Parallelism Synthesis on FPGAs}, - year={2011}, - month={may}, - volume={}, - number={}, - pages={178 -185}, - keywords={CUDA kernel mapping;FPGA programming;FPGA-based accelerator;abstraction level;coarse grained parallelism;design layout information;design space search heuristic;hardware spatial parallelism;high-level synthesis technique;lengthy logic synthesis;multigranularity parallelism extraction;multilevel granularity parallelism synthesis;performance evaluation;physical design flow;reconfigurable computing;field programmable gate arrays;integrated circuit layout;logic design;}, - doi={10.1109/FCCM.2011.29}, - ISSN={}, -} - -@INPROCEEDINGS{vu-iShare-globecomm2010, - author={Long Vu and Nahrstedt, K. and Rimac, I. and Hilt, V. and Hofmann, M.}, - booktitle={2010 IEEE GLOBECOM Workshops (GC Wkshps)}, - title={iShare: Exploiting opportunistic ad hoc connections for improving data download of cellular users}, - year={2010}, - month={December}, - volume={}, - number={}, - pages={1475 -1480}, - keywords={ad hoc communication;ad hoc mesh network;cellular broadcast channel;cellular link user;cellular unicast channel;data download;iShare;mobile device;sharing protocol;tit-for-tat incentive mechanism;tree-based protocol;broadcast channels;cellular radio;mobile ad hoc networks;protocols;wireless mesh networks;}, - doi={10.1109/GLOCOMW.2010.5700183}, - ISSN={}, -} - -@ARTICLE{yuan-grace1-ieeeMobComp, - author={Wanghong Yuan and Nahrstedt, K. and Adve, S.V. and Jones, D.L. and Kravets, R.H.}, - journal={IEEE Transactions on Mobile Computing}, - title={GRACE-1: cross-layer adaptation for multimedia quality and battery energy}, - year={2006}, - month={July}, - volume={5}, - number={7}, - pages={ 799 - 815}, - keywords={ GRACE-1; battery energy; cross-layer adaptation; mobile devices; multimedia quality; multiple system layers; video quality; mobile computing; multimedia communication; quality of service;}, - doi={10.1109/TMC.2006.98}, - ISSN={1536-1233}, -} - -@inproceedings{yuan-rtMobileSched-sosp03, - author = {Yuan, Wanghong and Nahrstedt, Klara}, - title = {Energy-efficient soft real-time CPU scheduling for mobile multimedia systems}, - booktitle = {Proceedings of the Nineteenth ACM symposium on Operating Systems Principles}, - series = {SOSP '03}, - year = {2003}, - isbn = {1-58113-757-5}, - location = {Bolton Landing, NY, USA}, - pages = {149--163}, - numpages = {15}, - url = {http://doi.acm.org/10.1145/945445.945460}, - doi = {http://doi.acm.org/10.1145/945445.945460}, - acmid = {945460}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {mobile computing, multimedia, power management}, -} - -@article{yuan-multimediaSched-acmTOCS06, - author = {Yuan, Wanghong and Nahrstedt, Klara}, - title = {Energy-efficient CPU scheduling for multimedia applications}, - journal = {ACM Trans. Comput. Syst.}, - volume = {24}, - issue = {3}, - month = {August}, - year = {2006}, - issn = {0734-2071}, - pages = {292--331}, - numpages = {40}, - url = {http://doi.acm.org/10.1145/1151690.1151693}, - doi = {http://doi.acm.org/10.1145/1151690.1151693}, - acmid = {1151693}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {Power management, mobile computing, multimedia, soft real-time}, -} - -@INPROCEEDINGS{yuan-recalendar-percom03, - author={Wanghong Yuan and Nahrstedt, K.}, - booktitle={Proceedings of the First IEEE International Conference on Pervasive Computing and Communications, 2003 (PerCom 2003)}, - title={ReCalendar: calendaring and scheduling applications with CPU and energy resource guarantees for mobile devices}, - year={2003}, - month={march}, - volume={}, - number={}, - pages={ 425 - 432}, - keywords={ CPU advance reservation; CPU reservations; CPU resource guarantees; CPUfrequency/voltage adaptation; ReCalendar; admitted reservations; advance reservation scheme; calendaring applications; energy reservations; energy resource guarantees; mobile devices; resource manager; scheduling applications; soft real-time applications; computer power supplies; mobile communication; personal computing; real-time systems; resource allocation; scheduling; telecommunication computing; telecommunication congestion control;}, - doi={10.1109/PERCOM.2003.1192767}, - ISSN={}, -} - -@inproceedings{vu-btWiFi-mswim10, - author = {Vu, Long and Nahrstedt, Klara and Retika, Samuel and Gupta, Indranil}, - title = {Joint bluetooth/wifi scanning framework for characterizing and leveraging people movement in university campus}, - booktitle = {Proceedings of the 13th ACM international conference on Modeling, analysis, and simulation of wireless and mobile systems}, - series = {MSWIM '10}, - year = {2010}, - isbn = {978-1-4503-0274-6}, - location = {Bodrum, Turkey}, - pages = {257--265}, - numpages = {9}, - url = {http://doi.acm.org/10.1145/1868521.1868563}, - doi = {http://doi.acm.org/10.1145/1868521.1868563}, - acmid = {1868563}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {android phone, bluetooth trace, people movement characterization, wifi trace}, -} - -@article{vu-jyotish-percom11, - author = {Long Vu and Quang Do and Klara Nahrstedt}, - title = {Jyotish: Constructive approach for context predictions of people movement from joint Wifi/Bluetooth trace}, - journal = {Pervasive and Mobile Computing}, - booktitle = {The Ninth Annual IEEE International Conference on Pervasive Computing and Communications (PerCom 2011)}, - volume = {7}, - number = {6}, - pages = {690 - 704}, - year = {2011}, - issn = {1574-1192}, - doi = {10.1016/j.pmcj.2011.07.004}, - url = {http://www.sciencedirect.com/science/article/pii/S1574119211001167}, - keywords = {People movement prediction, People movement trace, Wifi trace, Bluetooth trace}, -} - -% MDS: I had to fill this in manually, so there may be some slightly incorrect -% information, especially in the volume/number. -@article{vu-coada-ijaras11, - author = {Vu, Long and Nahrstedt, Klara and Malik, Rahul and Wang, Qiyan}, - title = {COADA: Leveraging Dynamic Coalition Peer-to-Peer Network for Adaptive Content Download of Cellular Users}, - journal = {International Journal of Adaptive, Resilient, and Autonomic Systems (IJARAS)}, - year = {2011}, - volume = {2}, - number = {2}, - pages = {1 - 22}, - url = {http://www.igi-global.com/viewtitlesample.aspx?id=53463}, - publisher = {IGI Publisher}, -} - -@INPROCEEDINGS{vu-3R-wowmom11, - author={Long Vu and Quang Do and Nahrstedt, K.}, - booktitle={2011 IEEE International Symposium on a World of Wireless, Mobile and Multimedia Networks (WoWMoM 2011)}, - title={3R: Fine-grained encounter-based routing in Delay Tolerant Networks}, - year={2011}, - month={june}, - volume={}, - number={}, - pages={1 -6}, - keywords={3R routing protocol;delay tolerant networks;epidemic routing protocols;fine-grained encounter-based routing;large-scale Bluetooth;message delivery probability;mobile nodes;mobile users;prophet routing protocols;Bluetooth;mobile radio;routing protocols;}, - doi={10.1109/WoWMoM.2011.5986470}, - ISSN={} -} - -% DeNovo papers -@inproceedings{KomuravelliAdve2012, - author = {Rakesh Komuravelli and Sarita V. Adve and Ching-Tsun Chou}, - title = {{Revisiting the Complexity of Hardware Cache Coherence and Some Implications}}, - booktitle = {{Submitted for publication to the 26th IEEE International Parallel and Distributed Processing Symposium (IPDPS)}}, - year = {2012}, -} - -@inproceedings{ChoiKomuravelli2011, - author = {Byn Choi and Rakesh Komuravelli and Hyojin Sung and Robert Smolinski and Nima Honarmand and Sarita V. Adve and Vikram S. Adve and Nicholas P. Carter and Ching-Tsun Chou}, - title = {{DeNovo: Rethinking the Memory Hierarchy for Disciplined Parallelism}}, - booktitle = {{20th International Conference on Parallel Architectures and Compilation Techniques (PACT 2011)}}, - year = {2011}, - month = {October}, -} - -@inproceedings{SungKomuravelli2012, - author = {Hyojin Sung and Rakesh Komuravelli and Sarita V. Adve}, - title = {{Efficient Hardware Support for Disciplined Non-Determinism}}, - booktitle = {{Submitted for publication to Proceedings of the 39th annual International Symposium on Computer Architecture (ISCA), 2012}}, - year = {2012} -} - -@INPROCEEDINGS{RanganathanAdve1999, - author={Ranganathan, P. and Adve, S. and Jouppi, N.P.}, - booktitle={Proceedings of the 27th International Symposium on Computer Architecture, 2000.}, - title={Reconfigurable caches and their application to media processing}, - year={2000}, - month={june}, - volume={}, - number={}, - pages={214 -224}, - keywords={cache SRAM arrays;databases;general-purpose processors;media processing;on-chip transistors;reconfigurable cache design;reconfigurable caches;reconfigurable caches-instruction reuse;SRAM chips;cache storage;reconfigurable architectures;}, - doi={}, - ISSN={1063-6897}} - -@inproceedings{BanakarSteinke2002, - author = {Banakar, Rajeshwari and Steinke, Stefan and Lee, Bo-Sik and Balakrishnan, M. and Marwedel, Peter}, - title = {{Scratchpad memory: design alternative for cache on-chip memory in embedded systems}}, - booktitle = {Proceedings of the tenth international symposium on Hardware/software codesign}}, - series = {CODES '02}, - year = {2002}, - isbn = {1-58113-542-4}, - location = {Estes Park, Colorado}, - pages = {73--78}, - year = 2002, - numpages = {6}, - url = {http://doi.acm.org/10.1145/774789.774805}, - doi = {http://doi.acm.org/10.1145/774789.774805}, - acmid = {774805}, - publisher = {ACM}, - address = {New York, NY, USA}, -} - -@incollection {DominguezUdayakumaran2005, - journal = {{Journal of Embedded Computing}}, - booktitle = {{Journal of Embedded Computing}}, - title = {{Heap data allocation to scratch-pad memory in embedded systems}}, - volume = {1}, - issue = {4}, - pages = {521 - 540}, - year = {2005}, - month = {January}, - author = {Angel Dominguez and Sumesh Udayakumaran and Rajeev Barua}, - url = {http://iospress.metapress.com/content/967JFFUMFVPWJ0Y9}, -} - -@article{SasankaLi2007, - author = {Sasanka, Ruchira and Li, Man-Lap and Adve, Sarita V. and Chen, Yen-Kuang and Debes, Eric}, - title = {{ALP: Efficient support for all levels of parallelism for complex media applications}}, - journal = {{ACM Trans. Archit. Code Optim.}}, - volume = {4}, - issue = {1}, - month = {March}, - year = {2007}, - issn = {1544-3566}, - articleno = {3}, - url = {http://doi.acm.org/10.1145/1216544.1216546}, - doi = {http://doi.acm.org/10.1145/1216544.1216546}, - acmid = {1216546}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {DLP, Parallelism, SIMD, TLP, data-level parallelism, media applications, multimedia, vector}, -} - -%%%%%%%%% -% These come from various sections, but I put them all here for now to have -% them in a centralized place. -%%% motivation.tex -% I'm not convinced this is the correct article to cite for the first one. -@inproceedings{Borkar:2010, - author={Borkar, S.}, - title= {The Exascale Challenge}, - booktitle = {Keynote at 20th International Conference on Parallel Architectures and Compilation Techniques (PACT 2011)}, - year={2011}, - month={October}, - volume={}, - number={}, - pages={}, -} - -@inproceedings{DarkSilicon:ISCA11, - author={Hadi Esmaeilzadeh and Emily Blem and Renee St. Amant and Karthikeyan Sankaralingam and Doug Burger}, - title={{Dark Silicon and the End of Multicore Scaling}}, - booktitle="{Proceedings of the 38th International Symposium on Computer Architecture}", - year={2011}, - bib2html_dl_pdf = {http://bit.ly/fmPjY4}, - bib2html_pubtype = {Refereed Conference}, - bib2html_rescat = {Architecture}, - MONTH = {June} -} - -@INPROCEEDINGS{Hameed:ISCA10, - author = {Rehan Hameed and Wajahat Qadeer and Megan Wachs and Omid Azizi and Alex Solomatnikov and Benjamin C. Lee and Stephen Richardson and Christos Kozyrakis and Mark Horowitz}, - title = {Understanding sources of inefficiency in general-purpose chips}, - booktitle = {In Proceedings of the 37th Annual International Symposium on Computer Architecture (ISCA 2010)}, - year = {2010}, - url = {http://www.duke.edu/~BCL15/documents/hameed2010-isca-h264.pdf}, -} - -@misc{ARM, - author = {Kevin Krewell}, - title = {ARM Pairs Cortex-A7 With A15}, - howpublished = {http://www.linleygroup.com/newsletters/newsletter\_detail.php?num=4764}, - year = {2011}, - month = {November}, -} - -@INPROCEEDINGS{FCUDA:SASP09, - author={Papakonstantinou, A. and Gururaj, K. and Stratton, J.A. and Chen, D. and Cong, J. and Hwu, W.-M.W.}, - booktitle={Application Specific Processors, 2009. SASP '09. IEEE 7th Symposium on}, - title={FCUDA: Enabling efficient compilation of CUDA kernels onto FPGAs}, - year={2009}, - month={July}, - volume={}, - number={}, - pages={35 -42}, - keywords={CUDA kernel;FPGA programming;Moores law;application program interface;clock frequency;compute unified device architecture;computing industry;field programmable gate array;graphics processing unit;multicore system;multiprocessor system;parallel processing;performance per watt boosting;power dissipation;application program interfaces;field programmable gate arrays;multiprocessing systems;parallel architectures;}, - doi={10.1109/SASP.2009.5226333}, - ISSN={}, -} - -@misc{PTX2.3Manual:URL, - author = {Nvidia Compute}, - title = {PTX: Parallel Thread Execution ISA Version 2.3}, - howpublished = {\url{http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/ptx_isa_2.3.pdf}}, - year = {2011}, -} - -@inproceedings{LLVA:MICRO03, - author = {Adve, Vikram and Lattner, Chris and Brukman, Michael and Shukla, Anand and Gaeke, Brian}, - title = {LLVA: A Low-level Virtual Instruction Set Architecture}, - booktitle = {Proceedings of the 36th annual IEEE/ACM International Symposium on Microarchitecture}, - series = {MICRO 36}, - year = {2003}, - isbn = {0-7695-2043-X}, - pages = {205--}, - url = {http://dl.acm.org/citation.cfm?id=956417.956545}, - acmid = {956545}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} - -@inproceedings{VectorLLVA:VEE06, - author = {Bocchino,Jr., Robert L. and Adve, Vikram S.}, - title = {{Vector LLVA: a virtual vector instruction set for media processing}}, - booktitle = {Proceedings of the 2nd international conference on Virtual execution environments}, - series = {VEE '06}, - year = {2006}, - isbn = {1-59593-332-8}, - location = {Ottawa, Ontario, Canada}, - pages = {46--56}, - numpages = {11}, - url = {http://doi.acm.org/10.1145/1134760.1134769}, - doi = {http://doi.acm.org/10.1145/1134760.1134769}, - acmid = {1134769}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {SIMD, multimedia, vector, virtual instruction sets}, -} - -@inproceedings{SVA:SOSP07, - author = {Criswell, John and Lenharth, Andrew and Dhurjati, Dinakar and Adve, Vikram}, - title = {Secure virtual architecture: a safe execution environment for commodity operating systems}, - booktitle = {Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles}, - series = {SOSP '07}, - year = {2007}, - isbn = {978-1-59593-591-5}, - location = {Stevenson, Washington, USA}, - pages = {351--366}, - numpages = {16}, - url = {http://doi.acm.org/10.1145/1294261.1294295}, - doi = {http://doi.acm.org/10.1145/1294261.1294295}, - acmid = {1294295}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {compiler, memory safety, operating systems, security, type safety, typed assembly language, virtual machine}, -} - -@inproceedings{SVA:UsenixSecurity09, - author = {Criswell, John and Geoffray, Nicolas and Adve, Vikram}, - title = {Memory safety for low-level software/hardware interactions}, - booktitle = {Proceedings of the 18th conference on USENIX security symposium}, - series = {SSYM'09}, - year = {2009}, - location = {Montreal, Canada}, - pages = {83--100}, - numpages = {18}, - url = {http://dl.acm.org/citation.cfm?id=1855768.1855774}, - acmid = {1855774}, - publisher = {USENIX Association}, - address = {Berkeley, CA, USA}, -} - -@inproceedings{Lime:OOPSLA10, - author = {Auerbach, Joshua and Bacon, David F. and Cheng, Perry and Rabbah, Rodric}, - title = {Lime: a Java-compatible and synthesizable language for heterogeneous architectures}, - booktitle = {Proceedings of the ACM international conference on Object oriented programming systems languages and applications}, - series = {OOPSLA '10}, - year = {2010}, - isbn = {978-1-4503-0203-6}, - location = {Reno/Tahoe, Nevada, USA}, - pages = {89--108}, - numpages = {20}, - url = {http://doi.acm.org/10.1145/1869459.1869469}, - doi = {http://doi.acm.org/10.1145/1869459.1869469}, - acmid = {1869469}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {fpga, functional programming, high level synthesis, object oriented, reconfigurable architecture, streaming, value type}, -} - -@misc{UPCRC:URL, - howpublished = {http://upcrc.illinois.edu/}, - author = {Universal Parallel Computing Research Center}, -} - -@misc{UPCRCSummerSchool2011:URL, - howpublished = {http://upcrc.illinois.edu/summer/2011/index.html}, - author = {UPCRC Illinois Summer School on Multicore Programming}, - month = {July}, - year = {2011}, -} - -@misc{CUDASummerSchool09:URL, - howpublished = {http://www.greatlakesconsortium.org/events/GPUMulticore/agenda.html}, - author = {Summer School 2008: Accelerators for Science and Engineering Applications: GPUs and Multicores}, - month = {August}, - year = {2008}, -} - -%%% programmability.tex -@misc{OpenCL:URL, - howpublished = {http://www.khronos.org/opencl/}, - author = {{Khronos Group -- OpenCL}}, -} - -@misc{Renderscript:URL, - title = {Renderscript}, - howpublished = {http://developer.android.com/reference/android/renderscript/package-summary.html}, - author = {{Android Developers}}, -} - -@misc{LLVMReferenceManual:URL, - howpublished = {http://llvm.org/releases/2.9/docs/LangRef.html}, - title = {{LLVM Language Reference Manual}}, -} - -@misc{ArBB:WHERE, - title = {{Array Building Blocks: A Flexible Parallel Programming Model for Multicore and Many-Core Architectures}}, - author = {Anwar Ghuloum and Amanda Sharp and Noah Clemons and Stefanus Du Toit and Rama Malladi and Mukesh Gangadhar and Michael McCool and Hans Pabst}, - howpublished = {http://drdobbs.com/go-parallel/article/showArticle.jhtml?articleID=227300084}, - year = {2010}, - month = {September}, - note = {URL}, -} - -@article{CnC:SciProg10, - title = {{Concurrent Collections}}, - author = {Zoran Budimlic and Michael Burke and Vincent Cavé and Kathleen Knobe and Geoff Lowney and Ryan Newton and Jens Palsberg and David Peixotto and Vivek Sarkar and Frank Schlimbach and Sagnak Tasirlar}, - journal = {Scientific Programming}, - year = {2010}, - pages = {203-217}, - keywords = {Computer & Communication Sciences}, - volume = {18}, - number = {3-4}, - url = {http://iospress.metapress.com/content/83w0360mk786443n/}, -} - -@incollection {StreamIt:WHERE, - author = {Thies, William and Karczmarek, Michal and Amarasinghe, Saman}, - affiliation = {Massachusetts Institute of Technology Laboratory for Computer Science Cambridge MA 02139}, - title = {StreamIt: A Language for Streaming Applications}, - booktitle = {Compiler Construction}, - series = {Lecture Notes in Computer Science}, - editor = {Horspool, R.}, - publisher = {Springer Berlin / Heidelberg}, - isbn = {978-3-540-43369-9}, - keyword = {Computer Science}, - pages = {49-84}, - volume = {2304}, - url = {http://dx.doi.org/10\.1007/3\-540\-45937\-5\_14}, - note = {10.1007/3\-540\-45937\-5\_14}, - year = {2002} -} - -@inproceedings{APA:PLDI05, - author = {Chris Lattner and Vikram Adve}, - title = "{Automatic Pool Allocation: Improving Performance by Controlling Data Structure Layout in the Heap}", - booktitle = "{Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'05)}", - address = {Chigago, Illinois}, - month = {June}, - year = {2005} -} - -@inproceedings{DPJ:HotPar09, - author = {Robert Bocchino and Vikram Adve and Sarita Adve and Marc -Snir}, - title = {{Parallel programming must be deterministic by default}}, - booktitle = {First USENIX Workshop on Hot Topics in Parallelism -(HotPar)}, - year = {2009}, -} - -@inproceedings{DPJ:OOPSLA09, - author = {Bocchino,Jr., Robert L. and Adve, Vikram S. and Dig, Danny and Adve, Sarita V. and Heumann, Stephen and Komuravelli, Rakesh and Overbey, Jeffrey and Simmons, Patrick and Sung, Hyojin and Vakilian, Mohsen}, - title = {A type and effect system for deterministic parallel Java}, - booktitle = {Proceeding of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications}, - series = {OOPSLA '09}, - year = {2009}, - isbn = {978-1-60558-766-0}, - location = {Orlando, Florida, USA}, - pages = {97--116}, - numpages = {20}, - url = {http://doi.acm.org/10.1145/1640089.1640097}, - doi = {http://doi.acm.org/10.1145/1640089.1640097}, - acmid = {1640097}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {commutativity, determinism, deterministic parallelism, effect systems, effects}, -} - -@inproceedings{DPJ:POPL11, - author = {Bocchino, Robert and Stephen Heumann and Nima Honarmand and -Sarita Adve and Vikram Adve and Adam Welc and Tatiana Shpeisman}, - title = {{Safe nondeterminism in a deterministic-by-default parallel -language}}, - booktitle = {POPL}, - year = {2011}, -} - -@inproceedings{Bocchino:ECOOP11, - author = {Bocchino, Robert L. and Adve, Vikram S.}, - title = {Types, regions, and effects for safe programming with -object-oriented parallel frameworks}, - booktitle = {Proceedings of the 25th European conference on Object-oriented -programming}, - series = {ECOOP'11}, - year = {2011}, - isbn = {978-3-642-22654-0}, - location = {Lancaster, UK}, - pages = {306--332}, - numpages = {27}, - url = {http://dl.acm.org/citation.cfm?id=2032497.2032519}, - acmid = {2032519}, - publisher = {Springer-Verlag}, - address = {Berlin, Heidelberg}, -} - - -@inproceedings{bikshandi:htas:ppopp:06, - author = {Bikshandi, Ganesh and Guo, Jia and Hoeflinger, Daniel and Almasi, Gheorghe and Fraguela, Basilio B. and Garzar\'{a}n, Mar\'{\i}a J. and Padua, David and von Praun, Christoph}, - title = {Programming for parallelism and locality with hierarchically tiled arrays}, - booktitle = {Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming}, - series = {PPoPP '06}, - year = {2006}, - isbn = {1-59593-189-9}, - location = {New York, New York, USA}, - pages = {48--57}, - numpages = {10}, - url = {http://doi.acm.org/10.1145/1122971.1122981}, - doi = {http://doi.acm.org/10.1145/1122971.1122981}, - acmid = {1122981}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {data-parallel, locality enhancement, parallel programming, tiling}, -} - -@inproceedings{guo:htas:ppopp:08, - author = {Guo, Jia and Bikshandi, Ganesh and Fraguela, Basilio B. and Garzaran, Maria J. and Padua, David}, - title = {Programming with tiles}, - booktitle = {Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming}, - series = {PPoPP '08}, - year = {2008}, - isbn = {978-1-59593-795-7}, - location = {Salt Lake City, UT, USA}, - pages = {111--122}, - numpages = {12}, - url = {http://doi.acm.org/10.1145/1345206.1345225}, - doi = {http://doi.acm.org/10.1145/1345206.1345225}, - acmid = {1345225}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {data-parallel, locality, parallel programming, tiling}, -} - - - -@InProceedings{KimNarayanan2011, - author = {E. P. Kim and S. P. Narayanan and N. R. Shanbhag and D. L. Jones}, - title = {Low-power and error-resilient PN code acquisition filter via statistical error compensation}, - OPTcrossref = {}, - OPTkey = {}, - OPTbooktitle = {IEEE Custom Integrated Circuits Conference}, - OPTpages = {}, - OPTyear = {2011}, - OPTeditor = {}, - OPTvolume = {}, - OPTnumber = {}, - OPTseries = {}, - OPTaddress = {}, - OPTmonth = {}, - OPTorganization = {}, - OPTpublisher = {}, - OPTnote = {}, - OPTannote = {} -} - - - -@Article{HegdeShanbhag2001, - author = {R. Hegde and N. R. Shanbhag}, - title = {Soft digital signal processing}, - journal = {IEEE Trans. VLSI Systems}, - year = {2001}, - OPTkey = {}, - OPTvolume = {9}, - OPTnumber = {6}, - OPTpages = {813--823}, - OPTmonth = {}, - OPTnote = {}, - OPTannote = {} -} - - - - -@Article{KimShanbhag2010, - author = {E. Kim and Naresh R. Shanbhag}, - title = {Soft N-modular redundancy}, - journal = {IEEE Computer}, - year = {2010}, - OPTkey = {}, - OPTvolume = {}, - OPTnumber = {}, - OPTpages = {}, - OPTmonth = {dec}, - OPTnote = {}, - OPTannote = {} -} - - - -@Article{NarayananVaratkar2010, - author = {S. Narayanan and G. Varatkar and D. L. Jones and N. R. Shanbhag}, - title = {Computation as estimation: A general framework for robustness and energy-efficiency in SoCs}, - journal = {IEEE Transactions on Signal Processing}, - year = {2010}, - OPTkey = {}, - OPTvolume = {58}, - OPTnumber = {8}, - OPTpages = {4416--4421}, - OPTmonth = {}, - OPTnote = {}, - OPTannote = {} -} - - - -@InProceedings{AbdallahShanbhag2010, - author = {R. Abdallah and N. Shanbhag}, - title = {Robust energy-efficient DSP systems via output probability processing}, - OPTcrossref = {}, - OPTkey = {}, - OPTbooktitle = {Proc. of Int. Conf. on Computer Design}, - OPTpages = {}, - OPTyear = {2010}, - OPTeditor = {}, - OPTvolume = {}, - OPTnumber = {}, - OPTseries = {}, - OPTaddress = {}, - OPTmonth = {oct}, - OPTorganization = {}, - OPTpublisher = {}, - OPTnote = {}, - OPTannote = {} -} - - -@Article{LowPowerDSPs:IEEEJSSC02, - title = {A Design Environment for High-Throughput Low-Power - Dedicated Signal Processing Systems}, - author = {W. Rhett Davis and Ning Zhang and Kevin Camera and - Dejan Markovic and Tina Smilkstein and M. Josie Ammer and - Engling Yeo and Stephanie Augsburger and Borivoje Nikolic - and Robert W. Brodersen}, - year = {2011}, - journal = {IEEE Journal of Solid-State Circuits}, - volume = {37}, - number = {3}, - pages = {420-431} -} - -@conference{MicronMemory, - author = {J. Thomas Pawlowski}, - title = {{Hybrid Memory Cube (HMC)}}, - journal = {Hot Chips 23}, - year = {2011}, - month = {August}, - howpublished = {hotchips.org/uploads/hc23/HC23.18.3-memory-FPGA/HC23.18.320-HybridCube-Pawlowski-Micron.pdf}, -} - -@INPROCEEDINGS{MaiPaaske2000, -author={Mai, K. and Paaske, T. and Jayasena, N. and Ho, R. and Dally, W.J. and Horowitz, M.}, -booktitle={Computer Architecture, 2000. Proceedings of the 27th International Symposium on}, title={Smart Memories: a modular reconfigurable architecture}, -year={2000}, -month={june}, -volume={}, -number={}, -pages={161 -171}, -keywords={Hydra speculative multiprocessor;Imagine stream processor;Smart Memories;VLSI technology scaling;conflicting requirements;modular reconfigurable architecture;performance degradation;simulations;digital simulation;multiprocessing systems;performance evaluation;reconfigurable architectures;}, -doi={}, -ISSN={1063-6897}, -} - -@inproceedings{LeverichArakida2007, - author = {Leverich, Jacob and Arakida, Hideho and Solomatnikov, Alex and Firoozshahian, Amin and Horowitz, Mark and Kozyrakis, Christos}, - title = {Comparing memory systems for chip multiprocessors}, - booktitle = {Proceedings of the 34th annual international symposium on Computer architecture}, - series = {ISCA '07}, - year = {2007}, - isbn = {978-1-59593-706-3}, - location = {San Diego, California, USA}, - pages = {358--368}, - numpages = {11}, - url = {http://doi.acm.org/10.1145/1250662.1250707}, - doi = {10.1145/1250662.1250707}, - acmid = {1250707}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {chip multiprocessors, coherent caches, locality optimizations, parallel programming, streaming memory}, -} - -@inproceedings{FiroozshahianSolomatnikov2009, - author = {Firoozshahian, Amin and Solomatnikov, Alex and Shacham, Ofer and Asgar, Zain and Richardson, Stephen and Kozyrakis, Christos and Horowitz, Mark}, - title = {A memory system design framework: creating smart memories}, - booktitle = {Proceedings of the 36th annual international symposium on Computer architecture}, - series = {ISCA '09}, - year = {2009}, - isbn = {978-1-60558-526-0}, - location = {Austin, TX, USA}, - pages = {406--417}, - numpages = {12}, - url = {http://doi.acm.org/10.1145/1555754.1555805}, - doi = {10.1145/1555754.1555805}, - acmid = {1555805}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {cache coherence, memory access protocol, memory systems, multi-core processors, protocol controller, reconfigurable architecture, stream programming, transactional memory}, -} - -@misc{SPIRKhronosSpec, - howpublished = {http://www.khronos.org/registry/cl/specs/spir\_spec-1.0-provisional.pdf}, - author = {{Khronos Group}}, - title = {{SPIR 1.0 Specification for OpenCL}}, -} - -@article{Delite:SIGPLAN11, - author = {Rompf, Tiark and Odersky, Martin}, - title = {Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs}, - journal = {SIGPLAN Not.}, - issue_date = {Febuary 2011}, - volume = {46}, - number = {2}, - month = oct, - year = {2010}, - issn = {0362-1340}, - pages = {127--136}, - numpages = {10}, - url = {http://doi.acm.org/10.1145/1942788.1868314}, - doi = {10.1145/1942788.1868314}, - acmid = {1868314}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {code generation, domain-specific languages, language virtualization, multi-stage programming}, -} - -@misc{RiverTrail:WHERE, - howpublished = {https://github.com/RiverTrail/RiverTrail/wiki}, - author = {{Intel Corp.}}, - title = {{River Trail API}}, -} - -@inproceedings{DPJNondet:POPL2011, - author = {Bocchino,Jr., Robert L. and Heumann, Stephen and Honarmand, Nima and Adve, Sarita V. and Adve, Vikram S. and Welc, Adam and Shpeisman, Tatiana}, - title = {Safe nondeterminism in a deterministic-by-default parallel language}, - booktitle = {Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages}, - series = {POPL '11}, - year = {2011}, - isbn = {978-1-4503-0490-0}, - location = {Austin, Texas, USA}, - pages = {535--548}, - numpages = {14}, - url = {http://doi.acm.org/10.1145/1926385.1926447}, - doi = {10.1145/1926385.1926447}, - acmid = {1926447}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {atomic sections, atomicity, data race freedom, determinism, effect systems, effects, nondeterminism, parallel programming languages, strong isolation, tranasctions, transactional memory}, -} - -@mastersthesis{Komuravelli2011, - author = {Komuravelli Rakesh}, - title = {Verification and Performance of the DeNovo Cache Coherence Protocol}, - year = {2010}, - school = {University of Illinois at Urbana-Champaign}, - } - -@inproceedings{ChoiKomuravelli2010, - author = {Choi, Byn and Komuravelli, Rakesh and Lu, Victor and Sung, Hyojin and Bocchino, Robert L. and Adve, Sarita V. and Hart, John C.}, - title = {Parallel SAH k-D tree construction}, - booktitle = {Proceedings of the Conference on High Performance Graphics}, - series = {HPG '10}, - year = {2010}, - location = {Saarbrucken, Germany}, - pages = {77--86}, - numpages = {10}, - url = {http://dl.acm.org/citation.cfm?id=1921479.1921492}, - acmid = {1921492}, - publisher = {Eurographics Association}, - address = {Aire-la-Ville, Switzerland, Switzerland}, -} - -@misc{HSA, - author = {George Kyriazis}, - title = {{Heterogeneous System Architecture: A Technical Review}}, - howpublished = {http://developer.amd.com/Resources/hc/heterogeneous-systems-architecture/Asset/hsa10.pdf}, - year = {2012}, -} - -@article{MiloHillSorinCACM, - author = {Martin, Milo M. K. and Hill, Mark D. and Sorin, Daniel J.}, - title = {Why on-chip cache coherence is here to stay}, - journal = {Commun. ACM}, - issue_date = {July 2012}, - volume = {55}, - number = {7}, - month = jul, - year = {2012}, - issn = {0001-0782}, - pages = {78--89}, - numpages = {12}, - url = {http://doi.acm.org/10.1145/2209249.2209269}, - doi = {10.1145/2209249.2209269}, - acmid = {2209269}, - publisher = {ACM}, - address = {New York, NY, USA}, -} - -@article{SARC, - author={Kaxiras, S. and Keramidas, G.}, - journal={{IEEE Micro}}, - title={{SARC Coherence: Scaling Directory Cache Coherence in Performance and Power}}, - year={2010}, - month={sept.-oct.}, - volume={30}, - number={5}, - pages={54 -65}, - keywords={SARC coherence;directory cache coherence;directory coherence protocols;power scalability;shared-memory chip multiprocessors;microprocessor chips;shared memory systems;}, - doi={10.1109/MM.2010.82}, - ISSN={0272-1732}, -} - -@inproceedings{KelmJohnson2009, - author = {Kelm, John H. and Johnson, Daniel R. and Johnson, Matthew R. and Crago, Neal C. and Tuohy, William and Mahesri, Aqeel and Lumetta, Steven S. and Frank, Matthew I. and Patel, Sanjay J.}, - title = {{Rigel: An Architecture and Scalable Programming Interface for a 1000-core Accelerator}}, - booktitle = {ISCA}, - year = {2009}, - isbn = {978-1-60558-526-0}, - pages = {}, - location = {Austin, TX, USA}, - doi = {http://doi.acm.org/10.1145/1555754.1555774}, - weblink = {http://doi.acm.org/10.1145/1555754.1555774} -} - -@misc{Tilera, - title={Tilera TILEPro64 processor}, - author={Tilera}, - note={\url{http://www.tilera.com/products/processors/TILEPRO64}}, -} - -@inproceedings{MattsonRiepen2010, - author = {Mattson, Timothy G. and Riepen, Michael and Lehnig, Thomas and Brett, Paul and Haas, Werner and Kennedy, Patrick and Howard, Jason and Vangal, Sriram and Borkar, Nitin and Ruhl, Greg and Dighe, Saurabh}, - title = {{The 48-core SCC Processor: the Programmer's View}}, - booktitle = {{Proceedings of the 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis}}, - series = {SC '10}, - year = {2010}, - isbn = {978-1-4244-7559-9}, - pages = {1--11}, - numpages = {11}, - url = {http://dx.doi.org/10.1109/SC.2010.53}, - doi = {10.1109/SC.2010.53}, - acmid = {1884676}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} - -@inproceedings{MattsonRiepen2010, - author = {Michael Bauer and Sean Treichler and Elliot Slaughter and Alex Aiken}, - title = {{Legion: Expressing Locality and Independence with Logical Regions}}, - booktitle = {{Proceedings of the 2012 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis}}, - series = {SC '12}, - year = {2012}, - pages = {1--11}, - numpages = {11}, - url = {http://dx.doi.org/10.1109/SC.2010.53}, -} - -@misc{Fermi, - author = {{nVidia}}, - title = {{NVIDIA's Next Generation CUDA Compute Architecture: Fermi}}, - howpublished = {http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdf} -} - -@INPROCEEDINGS{Hofstee2005, - author={Hofstee, H.P.}, - booktitle={High-Performance Computer Architecture, 2005. HPCA-11. 11th International Symposium on}, - title={Power efficient processor architecture and the cell processor}, - year={2005}, - month={feb.}, - volume={}, - number={}, - pages={ 258 - 262}, - keywords={ architecture decision; cell processor; design decision; media applications; microarchitectural enhancement; microprocessor design; nonhomogeneous\ - SMP; cellular radio; microprocessor chips; power supply circuits;}, - doi={10.1109/HPCA.2005.26}, - ISSN={1530-0897}, -} - -@ARTICLE{GschwindHofstee2006, - author={Gschwind, M. and Hofstee, H.P. and Flachs, B. and Hopkin, M. and Watanabe, Y. and Yamazaki, T.}, - journal={Micro, IEEE}, - title={Synergistic Processing in Cell's Multicore Architecture}, - year={2006}, - month={march-april }, - volume={26}, - number={2}, - pages={10 -24}, - keywords={Cell Broadband Engine;Cell multicore architecture;RISC principle;SIMD processing;compiler optimization;data-parallel architecture;multithreaded ex\ -ecution environment;synergistic processor unit;thread-level parallelism;logic design;microprocessor chips;multi-threading;parallel architectures;program com\ -pilers;reduced instruction set computing;}, - doi={10.1109/MM.2006.41}, - ISSN={0272-1732}, -} - -@article{LyonsHempstead2012, - author = {Lyons, Michael J. and Hempstead, Mark and Wei, Gu-Yeon and Brooks, David}, - title = {The accelerator store: A shared memory framework for accelerator-based systems}, - journal = {ACM Trans. Archit. Code Optim.}, - issue_date = {January 2012}, - volume = {8}, - number = {4}, - month = jan, - year = {2012}, - issn = {1544-3566}, - pages = {48:1--48:22}, - articleno = {48}, - numpages = {22}, - url = {http://doi.acm.org/10.1145/2086696.2086727}, - doi = {10.1145/2086696.2086727}, - acmid = {2086727}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {Hardware acceleration, low power, memory systems, shared memory}, -} - -@article{UdayakumaranDominguez2006, - author = {Udayakumaran, Sumesh and Dominguez, Angel and Barua, Rajeev}, - title = {Dynamic allocation for scratch-pad memory using compile-time decisions}, - journal = {ACM Trans. Embed. Comput. Syst.}, - issue_date = {May 2006}, - volume = {5}, - number = {2}, - month = may, - year = {2006}, - issn = {1539-9087}, - pages = {472--511}, - numpages = {40}, - url = {http://doi.acm.org/10.1145/1151074.1151085}, - doi = {10.1145/1151074.1151085}, - acmid = {1151085}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {Memory allocation, compiler, embedded systems, scratch pad, software caching, software-managed cache}, -} diff --git a/cfar-report/jpaper.cls b/cfar-report/jpaper.cls deleted file mode 100644 index 24429615655c9f989483529b10e0760a9e2907e6..0000000000000000000000000000000000000000 --- a/cfar-report/jpaper.cls +++ /dev/null @@ -1,207 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -% \ProvidesClass{jpaper}[ASPLOS 2014 Submission template] -\ProvidesClass{jpaper}[2012/08/02 ISCA Submission template] - -% jpaper provides two modes: -% In addition to the usual options leqno and fleqn, jpaper also provides the -% following additional flags (each of which can be turned on by specifying the -% flag as an option, or turned off by specifying "no"flag as an option): -% * lineno: Enables line numbering. This may be useful while editing. -% * pageno: Enables page numbering. This is useful for anything that is not -% * hyperref: Enables the hyperref package. While the hyperref package is -% normally convenient for your readers, IEEE PDF-eXpress does not allow it. -% -% The default set of options is camera,nolineno,nopageno,nohyperref. - -\RequirePackage{etoolbox} - -\DeclareOption{leqno}{\input{leqno.clo}} -\DeclareOption{fleqn}{\input{fleqn.clo}} -\newtoggle{jp@lineno} -\newtoggle{jp@pageno} -\newtoggle{jp@hyperref} -\DeclareOption{lineno}{\toggletrue{jp@lineno}} -\DeclareOption{nolineno}{\togglefalse{jp@lineno}} -\DeclareOption{pageno}{\toggletrue{jp@pageno}} -\DeclareOption{nopageno}{\togglefalse{jp@pageno}} -\DeclareOption{hyperref}{\toggletrue{jp@hyperref}} -\DeclareOption{nohyperref}{\togglefalse{jp@hyperref}} -\ExecuteOptions{nolineno,pageno,hyperref} -\ProcessOptions - -% Load the underlying article class. -\LoadClass[letterpaper,10pt,twocolumn]{article} - - -% Standard packages. -\RequirePackage[utf8]{inputenc} -\RequirePackage[T1]{fontenc} -\RequirePackage{verbatim} -\RequirePackage{fixltx2e} -\RequirePackage[usenames,dvipsnames,svgnames,table]{xcolor} - -% Basic text typesetting options. -\RequirePackage{mathptmx} -\RequirePackage[scaled=0.833]{helvet} -\RequirePackage[scaled=0.875]{couriers} -\setlength{\parindent}{1em} -\RequirePackage{setspace} -\newcommand{\normalspacing}{} -\RequirePackage{microtype} - -% High penalty for widows and orphans -\widowpenalty=300 \clubpenalty=300 - -% Page margins: -% 3/4" left and right, 1" top, 1 1/8" bottom. -\RequirePackage{geometry} -\geometry{lmargin=0.75in,rmargin=0.75in,tmargin=1in,bmargin=1in} - -% 1/4" space between columns. -\setlength{\columnsep}{0.25in} - -% Title formatting. -\RequirePackage{titling} -\setlength{\droptitle}{-3.5em} - -\pretitle{\begin{center}\vspace{-.5in} -%ASPLOS Submission \#\asplossubmissionnumber -- Confidential Draft -- Do Not Distribute!!\\ -\vspace{.35in} -\normalfont\Large\bfseries} -\posttitle{\par\end{center}} -\preauthor{\begin{center}\normalfont\large% - \begin{tabular}[t]{c}} -\postauthor{\end{tabular}\par\end{center}} -\predate{} -\postdate{} - - -% The abstract should be normally sized and italicized. Abstract leading -% should, in general, follow the normal leading. -\RequirePackage{abstract} -\newcommand{\abstractspacing}{\normalspacing} -\renewcommand{\abstractnamefont}{\normalfont\large\bfseries} -\renewcommand{\abstracttextfont}{\normalfont\itshape\abstractspacing} -\setlength{\absleftindent}{0in} -\setlength{\absrightindent}{0in} -\setlength{\abstitleskip}{-1.5em} - -% Compress vertical space around section and subsection headings. Make -% subsubsection headings run-in (i.e. part of the following paragraph). -\RequirePackage[compact]{titlesec} -\titleformat{\section}[hang]{\normalfont\large\bfseries}{\thesection. }% - {0pt}{}{} -\titleformat{\subsection}[hang]{\normalfont\bfseries}{\thesubsection. }% - {0pt}{}{} -\titleformat{\subsubsection}[runin]{\normalfont\bfseries}{\thesubsubsection. }% - {0pt}{}{} -\newlength{\sectionspace} -\setlength{\sectionspace}{1.5ex plus 0.25ex} -\titlespacing*{\section}{0pt}{\sectionspace}{\sectionspace} -\titlespacing*{\subsection}{0pt}{\sectionspace}{\sectionspace} -\titlespacing*{\subsubsection}{0pt}{\parskip}{0.25em plus 0.1em minus 0.05em} - -% Compress itemize and enumerate environments. -\RequirePackage{enumerate} -\RequirePackage{enumitem} -\setlist{noitemsep, leftmargin=*, topsep=0pt, partopsep=0pt} - -% Bibliography formatting. -\newcommand{\bibspacing}{\setstretch{0}} -\let\jp@bibliography\thebibliography -\renewcommand{\thebibliography}[1]{% - \jp@bibliography{#1}% - \setlength{\itemsep}{-0.25em} \footnotesize \bibspacing% - \vspace{-0.25em}} -% This is IEEEtran's bibliography formatting control macro. -\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} -\def\@bstctlcite[#1]#2{\@bsphack - \@for\@citeb:=#2\do{% - \edef\@citeb{\expandafter\@firstofone\@citeb}% - \if@filesw\immediate\write\csname #1\endcsname% - {\string\citation{\@citeb}}\fi}% - \@esphack} - -% Settings for figures and tables. Figure captions are placed below the figure, -% while table captions are placed above the table. All captions are sans-serif. -\RequirePackage[font={normalsize,sf,bf}]{caption} -\RequirePackage[position=bottom]{subfig} -\captionsetup[table]{aboveskip=0.5em, belowskip=0.5em} -\captionsetup[figure]{aboveskip=0.5em, belowskip=0em} -\captionsetup[subfloat]{font={small,sf}} -\setcounter{topnumber}{2} -\setcounter{dbltopnumber}{2} -\setcounter{bottomnumber}{2} -\setcounter{totalnumber}{4} -\renewcommand{\topfraction}{0.85} -\renewcommand{\dbltopfraction}{0.9} -\renewcommand{\bottomfraction}{0.85} -\renewcommand{\textfraction}{0.07} -\renewcommand{\floatpagefraction}{0.85} -\renewcommand{\dblfloatpagefraction}{0.85} - -\setlength{\floatsep}{0.5em plus 0.2em minus 0.2em} -\setlength{\dblfloatsep}{0.5em plus 0.2em minus 0.2em} -\setlength{\textfloatsep}{0.5em plus 0.2em minus 0.2em} -\setlength{\dbltextfloatsep}{0.5em plus 0.2em minus 0.2em} - -% Utility packages for floats and tables. -\RequirePackage{float} -\RequirePackage{graphicx} -\RequirePackage{booktabs} -\RequirePackage{multirow} - -% Page numbering. -\iftoggle{jp@pageno}{% - \pagestyle{plain} - \newcommand{\jp@mt@pageno}{}}{% - \pagestyle{empty} - \newcommand{\jp@mt@pageno}{\thispagestyle{empty}}} - -% Line numbering. -\iftoggle{jp@lineno}{% - \RequirePackage{lineno} - \renewcommand{\linenumberfont}{\normalfont\tt\small} - \newcommand{\jp@mt@lineno}{\linenumbers} -}{% - \newcommand{\jp@mt@lineno}{} -} - -% Replace maketitle to invoke settings for leading, page numbering, and line -% numbering. -\let\jp@maketitle\maketitle -\renewcommand{\maketitle}{% - \jp@maketitle% - \jp@mt@pageno% - \jp@mt@lineno% - \normalspacing} - -% Footnotes may not span pages. -\interfootnotelinepenalty=10000 - -% Formatting for margin notes (which you may find useful during editing). -\let\jp@marginpar\marginpar -\renewcommand\marginpar[1]{\jp@marginpar% - [\raggedleft\singlespacing\footnotesize\color{red} #1]% - {\raggedright\singlespacing\footnotesize\color{red} #1}} - -\setlength{\marginparwidth}{0.65in} - -% Link and URL formatting. -\iftoggle{jp@hyperref}{% - \RequirePackage{hyperref} - \hypersetup{% - unicode=true,% - pdfstartview={FitH},% - colorlinks=true,% - citecolor=red,% - %filecolor=black,% - %linkcolor=black,% - %urlcolor=black -}}{} -\RequirePackage{url} - -% Scientific units. -\RequirePackage[squaren]{SIunits} - -\endinput diff --git a/cfar-report/optimization.bib b/cfar-report/optimization.bib deleted file mode 100644 index 225751e801fbce4c94bf9cae4f7ef7cb7b94d93e..0000000000000000000000000000000000000000 --- a/cfar-report/optimization.bib +++ /dev/null @@ -1,3680 +0,0 @@ -%%===----------------------------------------------------------------------===%% -%% -%% LLVM Research Group Bibtex File -%% -%%===----------------------------------------------------------------------===%% -%% -%% When adding an entry to this file, please keep the following in mind: -%% -%% -- Please make all entries consistent :-) -%% -- Include the authors names spelled out, first and last with an optional -%% middle initial. e.g. Chris A. Lattner or Chris Lattner, but NOT C. -%% Lattner. -%% -- Please use the abbreviations at the top of the file for publications, -%% e.g. booktitle = PLDI, instead of booktitle = "Proceedings of -%% ...". This makes it much easier to shorten the citations when trying -%% to cram a paper in (make a local change to change the substitution -%% strings at the top of the file). It also keeps all of the cites for a -%% conference identical. -%% -- Please spell things right! :) -%% -- Include city and date in all InProceedings entries. -%% -- Also, please use a consistent naming scheme for cite keys, where -%% possible. If 1-3 authors: Lastname1Lastname2Lastname3:WHEREYY -%% e.g., LattnerAdve:MSP05. If 4 or more authors: InitialsList:WHEREYY -%% with the initials of the last names of the first 4 authors, e.g, -%% DKAL:TECS05. For more weird cases, there's not much hope but most -%% cases work as above. -%% -- Please make all entries consistent! :-) -%% -- Did I say, please make all entries consistent? -%% -%% When the final version of a paper is done, please *COPY* the current -%% version of this file to the paper directory and check it into CVS for -%% that paper. -%% -%% TO-DO: -%% -- Replace full conference names with abbrevs -%% -- Make all entries consistent -%% -- Replace ...WHEREYY with ...WHERE:YYYY in all cite keys -%% -%%===----------------------------------------------------------------------===%% - -%%% -%%% Substitutions: Replace these with shorter string to shrinkify refs. -%%% - - -%% Journals - -@string{CACM = "Communications of the ACM"} -@string{JACM = "Journal of the ACM"} -@string{SPE = "Software--Practice and Experience"} - -%% Conferences - -@string{PLDI = "ACM SIGPLAN Conference on Programming Language Design and Implementation"} -@string{ISSTA = "Proc. ACM SIGSOFT Int'l Symp. on Software Testing and Analysis"} -@string{CASES = "Proc. Int'l Conf. on Compilers, Architecture and Synthesis for Embedded Systems (CASES)"} -@string{SAS = "Proc. Int'l Symp. on Static Analysis (SAS)"} -@string{ISCA = "Proc. Int'l Conf. on Computer Architecture (ISCA)"} -@string{CC = "Proc. Int'l Conf. on Compiler Construction (CC)"} -@string{PACT = "Proc. Int'l Conf. on Parallel Architectures and Compilation Techniques (PACT)"} -@string{ISMM = "Proc. Int'l Symp. On Memory Management (ISMM)"} -@string{ESEC = "Proc. European Software Engineering Conf. (ESEC)"} -@string{SIGMOD = "Proc. ACM SIGMOD Int'l Conf. on Management of Data (SIGMOD)"} -@string{ICS = "Proc. Int'l Conf. on Supercomputing (ICS)"} -@string{TECS = "ACM Transactions in Embedded Computing Systems (TECS)"} - -%% Workshops - -@string{LCPC = "Proc. Int'l Workshop on Languages and Compilers for - Parallel Computing (LCPC)"}, -@string{MSP = "Proc. ACM Workshop on Memory System Performance"} -%@string{MSP = "MSP"} -@string{PASTE = "Proc. ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE)"} -@string{IWMM = "Proc. Int'l Workshop on Memory Management"} - -@string{WCRE = "Proc. Working Conf. on Reverse Engineering (WCRE)"} -@string{FMPC = "Proc. Symp. on the Frontiers of Massively Parallel Computation"} -@string{ICCD = "Proc. Int'l Conf. on Computer Design (CDES)"} -@string{CC = "Proc. Int'l Conf. on Compiler Construction (CC)"} -@string{IPDPS = "Proc. Int'l Parallel and Distributed Processing Symp."} -@string{SC = "Proc. Int'l Conf. on High Performance Computing, Networking, Storage And Analysis"} -@string{CGO = "Proc. Conf. on Code Generation and Optimization"} - -%%============================================================================ -%% CATEGORY: Current list of categories: -%%============================================================================ -%% COMPILERS: LANGUAGE SPECS -%% COMPILERS: SCALAR: SYSTEMS, -%% COMPILERS: SCALAR: SAFETY CHECKING -%% COMPILERS: SCALAR: SOFTWARE RELIABILITY -%% COMPILERS: SCALAR: POINTER, HEAP, AND SHAPE ANALYSIS -%% COMPILERS: SCALAR: DATAFLOW OPTIMIZATION -%% COMPILERS: SCALAR: MEMORY HIERARCHY OPTIMIZATIONS -%% COMPILERS: SCALAR: INTERPROCEDURAL OPTIMIZATION -%% COMPILERS: SCALAR: INSTRUCTION SELECTION -%% COMPILERS: SCALAR: INSTRUCTION SCHEDULING -%% COMPILERS: SCALAR: REGISTER ALLOCATION -%% COMPILERS: SCALAR: RUNTIME COMPILATION AND OPTIMIZATION -%% COMPILERS: PARALLEL: PARALLEL PROGRAMMING LANGUAGES -%% COMPILERS: VECTOR: SUBWORD SIMD -%% ARCHITECTURES: SCALAR: CHIP PARALLELISM -%% ARCHITECTURES: STREAMING AND VECTOR -%%============================================================================ - - -%%============================================================================ -%% COMPILERS: SCALAR: SAFETY CHECKING -%%============================================================================ - - -@InProceedings{KDA:CASES02, - author = {Sumant Kowshik and Dinakar Dhurjati and Vikram Adve}, - title = {Ensuring Code Safety Without Runtime Checks for Real-time Control Systems}, - booktitle = CASES, - year = 2002, - address = {Grenoble}, - month = {Oct}, - annote = {COMPILERS: SCALAR: SAFETY CHECKING} -} - -@InProceedings{DKAL:LCTES03, - Author = {Dinakar Dhurjati and Sumant Kowshik and Vikram Adve and - Chris Lattner}, - Title = {Memory Safety Without Runtime Checks or Garbage Collection}, - booktitle = LCTES, - year = {2003}, - month = {June}, - annote = {COMPILERS: SCALAR: SAFETY CHECKING} -} -% address = {San Diego}, - -@Article{DKAL:TECS05, - author = {Dinakar Dhurjati and Sumant Kowshik and Vikram Adve and - Chris Lattner}, - title = {Memory Safety Without Garbage Collection for Embedded Applications}, - Journal = TECS, - month = Feb, - year = {2005}, - annote = {COMPILERS: SCALAR: SAFETY CHECKING} -} -%% volume = "4", -%% number = "1", -%% pages = "73--111", -% {\rm Special issue on the best papers of the} -% {\it 2003 Conf. on Languages, Compilers and Tools for Embedded Systems (LCTES)}}, - - -@Misc{DKA:OSDISubmission04, - Author = {Dinakar Dhurjati and Sumant Kowshik and Vikram Adve}, - Title = {SAFECode: Safe Execution Without Garbage Collection for - System Software}, - Note = {(Submitted for publication)}, - year = {2004}, - month = {May}, - annote = {COMPILERS: SCALAR: SAFETY CHECKING} -} - -@Misc{DKA:Submitted03, - Author = {Dinakar Dhurjati and Sumant Kowshik and Vikram Adve}, - Title = {SAFECode: Safe Execution Without Garbage Collection for - Type-Safe and Low-level Code}, - Note = {(Submitted for publication)}, - year = {2003}, - month = {Nov}, - annote = {COMPILERS: SCALAR: SAFETY CHECKING} -} - -@inproceedings{Omniware:PLDI96, - author = {Ali-Reza Adl-Tabatabai and Geoff Langdale and Steven Lucco and Robert Wahbe}, - title = {Efficient and language-independent mobile programs}, - booktitle = PLDI, - year = {1996}, - isbn = {0-89791-795-2}, - pages = {127--136}, - location = {Philadelphia, Pennsylvania, United States}, - doi = {http://doi.acm.org/10.1145/231379.231402}, -} - -@inproceedings{DISC:FCCM95, - author = "M. Wirthlin and B. Hutchings", - title = "A Dynamic Instruction Set Computer", - booktitle = "{IEEE} Symp. on {FPGA}s for Custom Computing Machines", - publisher = "{IEEE} Computer Society Press", - address = "Los Alamitos, CA", - editor = "Peter Athanas and Kenneth L. Pocek", - pages = "99--107", - year = "1995", - url = "citeseer.nj.nec.com/wirthlin95dynamic.html" -} - -@inproceedings{DARK:WCAE00, - author = {Ola {\AA}gren}, - title = {Virtual Machines as an Aid in Teaching Computer Concepts}, - booktitle = {Workshop on Computer Architecture Education}, - year = {2000}, - month = {jun}, -} - -@InProceedings{VISC:PACT02, - author = "Jack Liu and Tim Kong and Fred Chow", - title = "Effective Compilation Support for - Variable Instruction Set Architecture", - booktitle = PACT, - location = "Charlottesville, USA", - month = Sept, - year = 2002, -} - -@Book{Gosling:JavaSpec, - Author = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha}, - Title = {The {J}ava {L}anguage {S}pecification}, - Publisher = {Sun Microsystems}, - Edition = {2nd}, - Year = {2000}} - -@InProceedings{Sha:Simplex1, - author = "Lui Sha", - title = "Dependable System Upgrades", - booktitle = "Proceedings of IEEE Real Time System Symp.", - year = 1998 -} - -@article{Sha:Simplex, - author = "Lui Sha", - title = "Using Simplicity to Control Complexity", - journal = "IEEE Software", - month = "July/August", - year = 2001 -} - -@article{UNCOL, - author = "T.B. Steel", - title = "UNCOL: The Myth and the Fact", - journal = "Annual Review in Automated Programming 2", - year = "1961" -} - -@misc{ANDF, - author = "{{ANDF Consortium}}", - title = "{The Architectural Neutral Distribution Format}", - HowPublished = "{\tt http://www.andf.org/}" -} - -@misc{ManagedC++, - author = "{{Microsoft Corp.}}", - title = {Managed Extensions for {C++} Specification}, - HowPublished = "{.NET Framework Compiler and Language Reference}" -} - - -@Article{Chase94:Exceptions, - author = "David Chase", - title = "Implementation of exception handling", - journal = "The Journal of {C} Language Translation", - volume = "5", - number = "4", - pages = "229--240", - month = jun, - year = "1994", - ISSN = "1042-5721", - bibdate = "Fri Nov 21 14:40:20 1997", - remark = "The details of handling exceptions in C++ and similar - languages.", -} - -@inproceedings{Shao98:TypedIL, - author = "Zhong Shao and Christopher League and Stefan Monnier", - title = "{Implementing Typed Intermediate Languages}", - booktitle = ICFP, - pages = "313-323", - year = "1998", - url = "citeseer.nj.nec.com/shao98implementing.html" } - - -%%============================================================================ -%% COMPILERS: SCALAR: SOFTWARE RELIABILITY -%%============================================================================ - - -@InProceedings{ESP:PLDI02, - author = {Manuvir Das and Sorin Lerner and Mark Siegle}, - title = {ESP: Path-Sensitive Program Verification in Polynomial Time}, - booktitle = PLDI, - address = {Berlin, Germany}, - month = {June}, - year = {2002} -} - -@InProceedings{Metal:PLDI02, - author = {Seth Hallem and Benjamin Chelf and Yichen Xie and - Dawson Engler}, - title = {A System and Language for Building System-Specific, - Static Analyses}, - booktitle = PLDI, - address = {Berlin, Germany}, - month = {June}, - year = {2002} -} - -%%============================================================================ - -@misc{LLVMOnlineRef, - author = {Chris Lattner and Vikram Adve}, - title = {{LLVM Language Reference Manual}}, - note = "{http://llvm.org/docs/LangRef.html}" -} - -@misc{LLVMCommandGuide, - title = {{LLVM Command Guide}}, - note = "http://llvm.org/docs/CommandGuide/index.html", - url = "http://llvm.org/docs/CommandGuide/index.html" -} - -@misc{LLVMLinkTimeOpt, - title = {{LLVM Link Time Optimization: Design and Implementation}}, - note = "http://llvm.org/docs/LinkTimeOptimization.html", - url = "http://llvm.org/docs/LinkTimeOptimization.html" -} - -@misc{LLVMPassManager, - author = {Chris Lattner and Jim Laskey}, - title = {{Writing an LLVM Pass}}, - note = "http://llvm.org/docs/WritingAnLLVMPass.html", - url = "http://llvm.org/docs/WritingAnLLVMPass.html" -} - -@misc{LLVMGC, - author = {Chris Lattner}, - title = {Accurate Garbage Collection with {LLVM}}, - note = "http://llvm.org/docs/GarbageCollection.html", - url = "http://llvm.org/docs/GarbageCollection.html" -} - -@misc{Clang, - title = {clang: a {C} language family frontend for {LLVM}}, - note = "http://clang.llvm.org", -} - -@misc{DragonEgg, - title = {DragonEgg - Using {LLVM} as a {GCC} backend}, - note = "http://dragonegg.llvm.org", -} - -@misc{Lattner:llvm:AliasAnalysis, - author = {Chris Lattner}, - title = {{LLVM Alias Analysis Infrastructure}}, - note = "{\tt http://llvm.cs.uiuc.edu/docs/AliasAnalysis.html}" -} - -@MastersThesis{Lattner:MSThesis02, - author = {Chris Lattner}, - title = {{LLVM}: An Infrastructure for Multi-Stage Optimization}, - school = {Computer Science Dept., University of Illinois at Urbana-Champaign}, - year = {2002}, - address = {Urbana, IL}, - month = {Dec}, - note = {{\em See {\tt http://llvm.cs.uiuc.edu}.}} -} - -@PhdThesis{Lattner:PHD, - author = {Chris Lattner}, - title = {{Macroscopic Data Structure Analysis and Optimization}}, - school = {Comp. Sci. Dept., Univ. of Illinois}, - year = {2005}, - address = {Urbana, IL}, - month = {May}, -} -%% note = {{\em See {\tt http://llvm.cs.uiuc.edu}.}} - -@Misc{Hidden:Lattner:PHD, - author = {Anonymous}, - title = {{Omitted for blind review}}, - year = {2005}, - month = {May}, -} -%% note = {{\em See {\tt http://llvm.cs.uiuc.edu}.}} - -%% Shukla:MSThesis03i -@MastersThesis{Shukla:MSThesis03, - author = {Anand Shukla}, - title = {Lightweight, Cross-procedure Tracing for Runtime Optimization}, - school = {Computer Science Deptartment, University of Illinois at Urbana-Champaign}, - year = {2003}, - address = {Urbana, IL}, - month = {Aug} -} - -@TechReport{berndl:cgo03, - Author = {Marc Berndl and Laurie Hendren}, - Title = {Dynamic Profiling and Trace Cache Generation for a -Java Virtual Machine}, - Institution = {McGill University, Canada}, - Type = {Tech. Report}, - Month = {Oct}, - Year = {2002} -} - -%%% -%%% NOTE: New papers should not cite this paper. Instead, they should cite -%%% "Lattner:MSThesis02" -%%% -@TechReport{LattnerAdve:LLVMTR, - Author = {Chris Lattner and Vikram Adve}, - Title = {The {LLVM} {I}nstruction {S}et and {C}ompilation {S}trategy}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2002-2292}, - Type = {Tech. Report}, - Month = {Aug}, - Year = {2002}, - URL = {\tt http://llvm.cs.uiuc.edu/pubs/LLVMCompilationStrategy.pdf}, - Annote = { CATEGORY: COMPILERS: SCALAR: SYSTEMS } -} - -@TechReport{LLVM:LifeLongOptTR03, - Author = {Chris Lattner and Vikram Adve}, - Title = {{LLVM}: {A} {C}ompilation {F}ramework for {L}ifelong {P}rogram {A}nalysis and {T}ransformation}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2003-2380}, - Type = {Tech. Report}, - Month = {Sept}, - Year = {2003}, - URL = {\tt http://llvm.cs.uiuc.edu/pubs/2003-10-01-LLVMLifelongOpt.html}, - Annote = { CATEGORY: COMPILERS: SCALAR: SYSTEMS } -} - -@InProceedings{LLVM:CGO04, - Author = {Chris Lattner and Vikram Adve}, - Title = {{LLVM}: A Compilation Framework for Lifelong Program Analysis and Transformation}, - Booktitle = CGO, - Address = {San Jose, CA, USA}, - Month = {Mar}, - Year = {2004}, - pages = {75--88}, -} - -@InProceedings{LLVM:GCCSummit03, - Author = {Chris Lattner and Vikram Adve}, - Title = {{A}rchitecture for a {N}ext-{G}eneration {GCC}}, - Booktitle = {Proc. First Annual GCC Developers' Summit}, - Address = {Ottawa, Canada}, - Month = {May}, - Year = {2003}, -} - -@InProceedings{LattnerAdve:MSP02, - Author = {Chris Lattner and Vikram Adve}, - Title = {{A}utomatic {P}ool {A}llocation for {D}isjoint {D}ata {S}tructures}, - Booktitle = MSP, - Address = {Berlin, Germany}, - Month = {June}, - Year = {2002}, - URL = {{\tt http://llvm.cs.uiuc.edu/pubs/MSP2002-FinalSubmission.pdf}}, -} - -@InProceedings{LattnerAdve:PtrComp:MSP05, - Author = {Chris Lattner and Vikram Adve}, - Title = {{T}ransparent {P}ointer {C}ompression for {L}inked {D}ata {S}tructures}, - Booktitle = MSP, - Address = {Chicago, IL}, - Month = {June}, - Year = {2005}, -} - -@TechReport{LattnerAdve:DSGTR03, - Author = {Chris Lattner and Vikram Adve}, - Title = {{D}ata {S}tructure {A}nalysis: {A} {F}ast and {S}calable {C}ontext-{S}ensitive {H}eap {A}nalysis}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2003-2340}, - Type = {Tech. Report}, - Month = {Apr}, - Year = {2003}, - URL = {\tt http://llvm.cs.uiuc.edu/pubs/2003-04-29-DataStructureAnalysisTR.html} -} - -@TechReport{LattnerAdve:PoolAllocTR04, - Author = {Chris Lattner and Vikram Adve}, - Title = {Automatic Pool Allocation: Compile-Time Control of - Data Structure Layout in the Heap}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2004-2465}, - Type = {Tech. Report}, - Month = {July}, - Year = {2004} -} -% URL = {\tt http://llvm.cs.uiuc.edu/pubs/}, -% URL = {\tt http://llvm.cs.uiuc.edu/pubs/2003-04-29-DataStructureAnalysisTR.html}, - -@InProceedings{DSA:PLDI07, - author = {Chris Lattner and Andrew D. Lenharth and Vikram S. Adve}, - title = {Making Context-sensitive Points-to Analysis with Heap Cloning - Practical For The Real World}, - booktitle = PLDI, - address = {San Diego, CA, USA}, - month = {June}, - year = {2007}, - pages = {278--289}, -} - -@TechReport{DSAEvaluation:TR05, - Author = {Patrick Meredith and Balpreet Pankaj and Swarup Sahoo and - Chris Lattner and Vikram Adve}, - Title = "How Successful Is Data Structure Analysis in Isolating and -Analyzing Linked Data Structures?", - Institution= {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2005-2658}, - Type = {Tech. Report}, - Month = {Nov}, - Year = {2005} -} - -@Misc{Hidden:DSAEvaluation:TR05, - author = {Anonymous}, - title = {{Omitted for blind review}}, - year = {2005}, - month = {Nov}, -} - -@InProceedings{LA:PLDI05, - author = {Chris Lattner and Vikram Adve}, - title = {Automatic Pool Allocation: Improving Performance by Controlling Data Structure Layout in the Heap}, - booktitle = PLDI, - address = {Chicago, IL}, - month = {June}, - year = {2005} -} - -@Misc{Hidden:LA:PLDI05, - author = {Anonymous}, - title = {{Omitted for blind review}}, - year = {2005}, - month = {June}, -} - -@inproceedings{CLA:PLDI01, - author = {Heintze, Nevin and Tardieu, Olivier}, - title = {Ultra-fast aliasing analysis using CLA: a million lines of C code in a second}, - booktitle = {Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation}, - series = {PLDI '01}, - year = {2001}, - isbn = {1-58113-414-2}, - location = {Snowbird, Utah, United States}, - pages = {254--263}, - numpages = {10}, - url = {http://doi.acm.org/10.1145/378795.378855}, - doi = {http://doi.acm.org/10.1145/378795.378855}, - acmid = {378855}, - publisher = {ACM}, - address = {New York, NY, USA}, -} - - -@inproceedings{ConnectivityGC:OOPSLA03, - author = {Martin Hirzel and Amer Diwan and Matthew Hertz}, - title = {Connectivity-based Garbage Collection}, - booktitle = OOPSLA, - year = {2003}, - pages = {359--373}, - location = {Anaheim, California, USA}, - } - -@inproceedings{GCLocality:OOPSLA04, - author = {Xianglong Huang and Stephen Blackburn and Kathryn McKinley and Eliot Moss and Zhenlin Wang and Perry Cheng}, - title = {The garbage collection advantage: improving program locality}, - booktitle = OOPSLA, - year = {2004}, - isbn = {1-58113-831-9}, - pages = {69--80}, - location = {Vancouver, BC, Canada} - } - -@inproceedings{BergerZornMcKinley:OOPSLA2002, - author = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley}, - title = {Reconsidering custom memory allocation}, - booktitle = OOPSLA, - year = {2002}, - isbn = {1-58113-471-1}, - pages = {1--12}, - location = {Seattle, Washington, USA}, - doi = {http://doi.acm.org/10.1145/582419.582421}, -} - -@inproceedings{Takagi:FieldArrayComp:ISHPC03, - author = {Masamichi Takagi and Kei Hiraki}, - title = {Field Array Compression in Data Caches for Dynamically Allocated - Recursive Data Structure.}, - booktitle = {Proceedings of 5th International Symp. on High Performance Computing (ISHPC'03)}, - location = {Tokyo-Odaiba, Japan}, - month = {October}, - year = {2003}, - pages = {127-145}, -} - - -@InProceedings{JavaPtrComp:CGO04, - Author = {Ali-Reza Adl-Tabatabai and Jay Bharadwaj and Michal Cierniak and Marsha Eng and Jesse Fang and Brian T. Lewis and Brian R. Murphy and James M. Stichnoth}, - Title = {Improving 64-bit {Java} {IPF} performance by compressing heap references}, - Booktitle = CGO, - Pages = "100--110", - month = {March}, - year = "2004" -} - -@inproceedings{Mogul:USENIX95:PointerSizes, - author = "Jeffrey C. Mogul and Joel F. Bartlett and Robert N. Mayo and Amitabh Srivastava", - title = "Performance Implications of Multiple Pointer Sizes", - booktitle = "{USENIX} Winter", - pages = "187-200", - year = "1995", - url = "citeseer.ist.psu.edu/mogul89performance.html" } - -@inproceedings{Ghiya:PointerAnalysisToWork:POPL98, - author = {Rakesh Ghiya and Laurie J. Hendren}, - title = {Putting pointer analysis to work}, - booktitle = "POPL", - year = {1998}, - isbn = {0-89791-979-3}, - pages = {121--133}, - location = {San Diego, California, United States}, - doi = {http://doi.acm.org/10.1145/268946.268957}, - address = {New York, NY, USA}, - } - - -@inproceedings{Yarvin:USENIX93, - author = "Curtis Yarvin and Richard Bukowski and Thomas Anderson", - title = "Anonymous {RPC}: Low-Latency Protection in a 64-Bit Address Space", - booktitle = "{USENIX} Summer", - pages = "175-186", - year = "1993", - url = "citeseer.ist.psu.edu/131881.html" } - -@article{Heiser:Mungi:SPE98, - author = "Gernot Heiser and Kevin Elphinstone and Jerry Vochteloo and Stephen Russell and Jochen Liedtke", - title = "The {Mungi} Single-Address-Space Operating System", - journal = SPE, - volume = "28", - number = "9", - pages = "901--928", - year = "1998", - url = "citeseer.ist.psu.edu/heiser98mungi.html" } - -@inproceedings{HindPioli:ISSTA00, - author = {Michael Hind}, - title = "{Which Pointer analysis Should I Use?}", - booktitle = ISSTA, - year = {2000}, - mon = {Aug}} - -@inproceedings{Hind:PASTE01, - author = {Michael Hind}, - title = {Pointer Analysis: Haven't we solved this problem yet?}, - booktitle = "PASTE", - year = {2001}, - location = {Snowbird, United States}, - isbn = {1-58113-413-4}, - doi = {http://doi.acm.org/10.1145/379605.379665}, -} -; pages = {54--61}, - -@inproceedings{BurkCarini:IWLCPC95, - author = {Michael G. Burke and Paul R. Carini and Jong-Deok Choi and Michael Hind}, - title = {Flow-Insensitive Interprocedural Alias Analysis in the Presence of Pointers}, - booktitle = LCPC, - year = {1995}, - isbn = {3-540-58868-X}, - pages = {234--250}, - publisher = {Springer-Verlag}, - } - -@inproceedings{Fanhdrich:OnlineCycleElim:PLDI98, - author = {Manuel F\"{a}hndrich and Jeffrey S. Foster and Zhendong Su and Alexander Aiken}, - title = {Partial online cycle elimination in inclusion constraint graphs}, - booktitle = PLDI, - year = {1998}, - isbn = {0-89791-987-4}, - pages = {85--96}, - location = {Montreal, Quebec, Canada}, - doi = {http://doi.acm.org/10.1145/277650.277667}, -} - -@inproceedings{Rountev:OfflineVarSub:PLDI00, - author = {Atanas Rountev and Satish Chandra}, - title = {Off-line variable substitution for scaling points-to analysis}, - booktitle = PLDI, - year = {2000}, - isbn = {1-58113-199-2}, - pages = {47--56}, - location = {Vancouver, British Columbia, Canada}, - doi = {http://doi.acm.org/10.1145/349299.349310}, -} - -@inproceedings{Pearce:CycleDet:SCAM03, - author = {David J. Pearce and Paul H. J. Kelly and Chris Hankin}, - title = {Online Cycle Detection and Difference Propagation for Pointer Analysis}, - booktitle = {Proc. Int'l IEEE Workshop on Source Code Analysis and Manipulation (SCAM)}, - year = {2003}, - location = {Amsterdam}, -} - - -@inproceedings{PearceKellyHankin:PASTE04, - author = {David J. Pearce and Paul H. J. Kelly and Chris Hankin}, - title = {Efficient field-sensitive pointer analysis for C}, - booktitle = PASTE, - year = {2004}, - isbn = {1-58113-910-1}, - pages = {37--42}, - location = {Washington DC, USA}, - doi = {http://doi.acm.org/10.1145/996821.996835}, - } - -@inproceedings{WhaleyLam:PLDI04, - author = {John Whaley and Monica S. Lam}, - title = {Cloning-based Context-Sensitive Pointer Alias Analysis using Binary Decision Diagrams}, - booktitle = PLDI, - year = {2004}, - isbn = {1-58113-807-5}, - location = {Washington DC, USA}, - doi = {http://doi.acm.org/10.1145/996841.996859}, -} -; pages = {131--144}, - -@inproceedings{Foster:ContextSensPrecision:SAS00, - author = {Jeffrey S. Foster and Manuel F\"{a}hndrich and Alexander Aiken}, - title = {Polymorphic versus Monomorphic Flow-Insensitive Points-to Analysis for C}, - booktitle = SAS, - year = {2000}, - isbn = {3-540-67668-6}, - address = {London, UK}, -} -; pages = {175--198}, - -@inproceedings{CAS:SAS09, - author = {Niedzielski, David and Ronne, Jeffery and Gampe, Andreas and Psarris, Kleanthis}, - title = {A Verifiable, Control Flow Aware Constraint Analyzer for Bounds Check Elimination}, - booktitle = SAS, - year = {2009}, - isbn = {978-3-642-03236-3}, - address = {Berlin, Heidelberg}, -} - -@inproceedings{Nystrom:Cloning:PASTE04, - author = {Erik M. Nystrom and Hong-Seok Kim and Wen-mei W. Hwu}, - title = {Importance of heap specialization in pointer analysis}, - booktitle = PASTE, - year = {2004}, - isbn = {1-58113-910-1}, - pages = {43--48}, - location = {Washington DC, USA}, - doi = {http://doi.acm.org/10.1145/996821.996836}, - address = {New York, NY, USA}, - } - -@inproceedings{Nystrom:SubsetBasedCS:SAS04, - author = {Erik M. Nystrom and Hong-Seok Kim and Wen-mei W. Hwu}, - title = {Bottom-up and Top-down Context-Sensitive Summary-based Pointer Analysis}, - booktitle = "SAS 2004", - year = {2004}, - } - - - -@inproceedings{ChoiBurkCarini:POPL93, - author = {Jong-Deok Choi and Michael Burke and Paul Carini}, - title = {Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects}, - booktitle = POPL, - year = {1993}, - isbn = {0-89791-560-7}, - pages = {232--245}, - location = {Charleston, South Carolina, United States}, - doi = {http://doi.acm.org/10.1145/158511.158639}, - } - -@inproceedings{Golf:SAS01, - author = {Manuvir Das and Ben Liblit and Manuel F\"{a}hndrich and Jakob Rehof}, - title = {Estimating the Impact of Scalable Pointer Analysis on Optimization}, - booktitle = "SAS", - year = {2001}, - isbn = {3-540-42314-1}, - } -; pages = {260--278}, -; publisher = {Springer-Verlag}, - -@InProceedings{RothSohi:ISCA99, - author = "Amir Roth and Gurindar S. Sohi", - title = "Effective jump-pointer prefetching for linked data structures", - booktitle = ISCA, - pages = "111-121", - month = May, - year = 1999 -} - - -@InProceedings{Tullsen:ISCA95, - author = "Dean M. Tullsen and Susan Eggers and Henry M. Levy", - title = "Simultaneous Multithreading: Maximizing On-Chip Parallelism", - booktitle = ISCA, - year = "1995", - url = "citeseer.nj.nec.com/32969.html" } - - -@InProceedings{Tullsen:ISCA96, - author = "Dean M. Tullsen and Susan J. Eggers and Joel S. Emer and Henry M. Levy and Jack L. Lo and Rebecca L. Stamm", - title = "Exploiting Choice: Instruction Fetch and Issue on an Implementable Simultaneous Multithreading Processor", - booktitle = ISCA, - pages = "191-202", - month = May, - year = "1996", - url = "citeseer.nj.nec.com/tullsen96exploiting.html" } - - -@Article{RinardDiniz:TOPLAS97, - author = {Martin C. Rinard and Pedro C. Diniz}, - title= {Commutativity analysis: a new analysis technique for parallelizing compilers}, - journal = TOPLAS, - volume = {19}, - number = {6}, - year = {1997}, - issn = {0164-0925}, - pages = {942--991}, - doi = {http://doi.acm.org/10.1145/267959.269969}, - } - - -@InProceedings{Chin:RegionInference:PLDI04, - author = {Wei-Ngan Chin and Florin Craciun and Shengchao Qin and - Martin Rinard }, - title = {Region Inference for an Object-Oriented Language}, - booktitle = PLDI, - year = {2004}, - address = {Washington, DC}, - month = {June}, -} - - -@InProceedings{WilsonLamMoher:PLDI91, - author = {Paul R. Wilson and Michael S. Lam and Thomas G. Moher}, - title= {Effective "static-graph" reorganization to improve locality in garbage-collected systems}, - booktitle = PLDI, - year = {1991}, - isbn = {0-89791-428-7}, - pages = {177--191}, - location = {Toronto, Ontario, Canada}, - doi = {http://doi.acm.org/10.1145/113445.113461}, - } - -@Article{Courts:CACM88, - author = {Robert Courts}, - title= {Improving locality of reference in a garbage-collecting memory management system}, - journal = CACM, - volume = {31}, - number = {9}, - year = {1988}, - issn = {0001-0782}, - pages = {1128--1138}, - doi = {http://doi.acm.org/10.1145/48529.48536}, - } - -@inproceedings{Chilimbi:PLDI99:CacheConscious, - author = {Trishul M. Chilimbi and Bob Davidson and James R. Larus}, - title = {Cache-conscious structure definition}, - booktitle = PLDI, - year = {1999}, - isbn = {1-58113-094-5}, - pages = {13--24}, - location = {Atlanta, Georgia, United States}, - doi = {http://doi.acm.org/10.1145/301618.301635}, - } - -@inproceedings{Chilimbi:PLDI99:StructureReorg, - author = {Trishul M. Chilimbi and Mark D. Hill and James R. Larus}, - title = {Cache-conscious structure layout}, - booktitle = PLDI, - year = {1999}, - isbn = {1-58113-094-5}, - pages = {1--12}, - location = {Atlanta, Georgia, United States}, - doi = {http://doi.acm.org/10.1145/301618.301633}, - } - -@InProceedings{TruongEtAl:PACT98, - author = "Dan N. Truong and Fran\c{c}ois Bodin and Andr\'e Seznec", - title = "Improving Cache Behavior of Dynamically Allocated Data Structures", - pages = "322--329", - booktitle = PACT, - location = "Paris, France", - month = Oct, - year = 1998, - url = "citeseer.nj.nec.com/truong98improving.html" } - -@article{RabbahPalem:TECS03, - author = {Rodric M. Rabbah and Krishna V. Palem}, - title = {Data remapping for design space optimization of embedded memory systems}, - journal = TECS, - volume = {2}, - number = {2}, - year = {2003}, - pages = {186--218}, - address = {New York, NY, USA}, - } - -@InProceedings{ZhangGupta:ICCC02, - author = "Youtao Zhang and Rajiv Gupta", - title = "Data Compression Transformations for Dynamically Allocated Data Structures", - booktitle = CC, - location = "Grenoble, France", - month = "Apr", - year = "2002", - url = "citeseer.nj.nec.com/zhang02data.html" } - - -@inproceedings{ValueCompression:MICRO00, - author = {Jun Yang and Youtao Zhang and Rajiv Gupta}, - title = {Frequent value compression in data caches}, - booktitle = {MICRO 33: Proceedings of the 33rd annual ACM/IEEE international symposium on Microarchitecture}, - year = {2000}, - isbn = {1-58113-196-8}, - pages = {258--265}, - location = {Monterey, California, United States}, - doi = {http://doi.acm.org/10.1145/360128.360154}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@InProceedings{CompressedMemoryInterfaces:MemoryWall00, - author = {C.D. Benveniste and P.A. Franaszek and and J.T. Robinson}, - title = {Cache-Memory Interfaces in Compressed Memory Systems}, - booktitle = {Workshop on Solving the Memory Wall Problem}, - year = {2000}, - month = June, -} - -@InProceedings{OSHwCompression:MemoryWall00, - author = {B. Abali and H. Franke}, - title = {Operating System Support for Fast Hardware Compression of Main Memory Contents}, - booktitle = {Workshop on Solving the Memory Wall Problem}, - year = {2000}, - month = June, -} - -@inproceedings{CompressedMemory:ICCD99, - author = { J-S. Lee and W-K. Hong and S-D. Kim}, - title = {Design and Evaluation of a Selective Compressed Memory System}, - booktitle = {ICCD '99: Proceedings of the 1999 IEEE International Conference on Computer Design}, - year = {1999}, - isbn = {0-7695-0406-X}, - pages = {184}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, - } - -@phdthesis{PhD:Larin:2000, - author = {Sergei Yuri Larin}, - note = {Chair-Thomas Conte}, - title = {Exploiting program redundancy to improve performance, cost and power consumption in embedded systems}, - year = {2000}, - isbn = {0-493-46648-7}, - } - - -@InProceedings{AnanianRinard:LCTES03, - Author = {C. Scott Ananian and Martin Rinard}, - Title = {Data {S}ize {O}ptimizations for {J}ava {P}rograms}, - booktitle = LCTES, - address = {San Diego, CA}, - year = {2003}, - month = {June} -} - -@Article{BurkeTorczon:TOPLAS93, - author = {Michael Burke and Linda Torczon}, - title= {Interprocedural optimization: eliminating unnecessary recompilation}, - journal = TOPLAS, - volume = {15}, - number = {3}, - year = {1993}, - issn = {0164-0925}, - pages = {367--399}, - doi = {http://doi.acm.org/10.1145/169683.169678}, - } - - -@InProceedings{SeidlZorn:ASPLOS98, - author = {Matthew L. Seidl and Benjamin G. Zorn}, - title= {Segregating heap objects by reference behavior and lifetime}, - booktitle = ASPLOS, - year = {1998}, - pages = {12--23}, - address = {San Jose, USA} - } - -@InProceedings{Calder:ASPLOS98, - author = "Brad Calder and Chandra Krintz and Simmi John and Todd Austin", - title = "Cache-Conscious Data Placement", - booktitle = ASPLOS, - year = "1998", - pages = {139--149}, - address = {San Jose, USA} -} - -@inproceedings{JavaHeapProfiling:PLDI01, - author = {Ran Shaham and Elliot K. Kolodner and Mooly Sagiv}, - title = {Heap Profiling for Space-Efficient Java}, - booktitle = PLDI, - year = {2001}, - month = June, - location = {Snowbird, USA} -} - - -@Book{Jones:GCAlgorithms:Wiley99, - Author = {Richard Jones}, - Title = {Garbage Collection. {A}lgorithms for Automatic - Dynamic Memory Management}, - Publisher = {John Wiley \& Sons}, - Year = {1999}} - -@inproceedings{Wilson:GCSurvey:IWMM92, - author = "Paul R. Wilson", - title = "Uniprocessor Garbage Collection Techniques", - booktitle = IWMM, - number = "637", - publisher = "Springer-Verlag", - address = "Saint-Malo (France)", - year = "1992" } - -@inproceedings{Shaham:StaticGC:SAS01, - author = "Ran Shaham and Eran Yahav and Elliot K. Kolodner and Mooly Sagiv", - title = "Establishing Local Temporal Heap Safety Properties with - Applications to Compile-Time Memory Management", - booktitle = SAS, - year = "2003", - month = June, - address = "San Diego, USA"} - -@inproceedings{BergerZornMckinley:Reaps:OOPSLA02, - author = "Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley", - title = "Reconsidering Custom Memory Allocation", - booktitle = OOPSLA, - address = "Seattle, Washington", - month = Nov, - year = "2002", - url = "citeseer.nj.nec.com/berger01reconsidering.html" } - -@InProceedings{GhiyaHendren:POPL96, - author = "Rakesh Ghiya and Laurie J. Hendren", - title = "Is it a Tree, a {DAG}, or a Cyclic Graph? {A} Shape Analysis for Heap-Directed Pointers in {C}", - booktitle = "POPL", - year = "1996", - url = "citeseer.nj.nec.com/ghiya96is.html" } -% pages = "1-15", - - -@inproceedings{ChongRugina:SAS03:AccessRegionsRDS, - author = {Stephen Chong and Radu Rugina}, - title = {Static Analysis of Accessed Regions in Recursive Data Structures}, - booktitle = "SAS", - year = {2003}, - isbn = {3-540-40325-6}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} -; month = June, -; address = {San Diego, CA}, - -@inproceedings{YahavRamalingam:PLDI04, - author = {Eran Yahav and G. Ramalingam}, - title = {Verifying safety properties using separation and heterogeneous abstractions}, - booktitle = PLDI, - year = {2004}, - isbn = {1-58113-807-5}, - pages = {25--34}, - location = {Washington DC, USA}, - doi = {http://doi.acm.org/10.1145/996841.996846}, - address = {New York, NY, USA} - } - -@inproceedings{HackettRugina:POPL05, - author = {Brian Hackett and Radu Rugina}, - title = {Region-based shape analysis with tracked locations}, - booktitle = "POPL", - year = {2005}, - isbn = {1-58113-830-X}, - pages = {310--323}, - location = {Long Beach, California, USA}, - doi = {http://doi.acm.org/10.1145/1040305.1040331}, - address = {New York, NY, USA} - } - -@inproceedings{JeannetEtAl:SAS04, - author = {Bertrand Jeannet and Alexey Loginov and Thomas Reps and Mooly Sagiv}, - title = {A relational approach to interprocedural shape analysis}, - booktitle = SAS, - address = {Verona, Italy}, - month = Aug, - year = {2004} -} - -@inproceedings{CheremRugina:RegionsForJava:ISMM04, - author = {Sigmund Cherem and Radu Rugina}, - title = {Region Analysis and Transformation for Java Programs}, - booktitle = ISMM, - address = {Vancouver, Canada}, - month = Oct, - year = {2004} -} - - -@Article{GhiyaHendren:IJPP96, - Author = "Rakesh Ghiya and Laurie J. Hendren", - Title = {Connection Analysis: A Practical Interprocedural Heap Analysis for {C}}, - Journal = {International Journal of Parallel Programming}, - Volume = {24}, - Number = {6}, - Pages = {547-578}, - Year = {1996}} - -@InProceedings{KRS:LCM, - author = "Jens Knoop and O. Ruthing and B. Steffen", - title = "Lazy Code Motion", - booktitle = PLDI, - pages = "249-260", - address = "San Francisco, CA", - month = June, - year = 1992 -} - -@InProceedings{CahoonMcKinley:ICS01, - author = "Brendon Cahoon and Kathryn S. McKinley", - title = "Data Flow Analysis for Software Prefetching Linked Data Structures in Java", - booktitle = PACT, - address = "Barcelona, Spain", - month = Sep, - year = 2001 -} - -@InProceedings{CKP:Prefetch, - Author = "David Callahan and Ken Kennedy and Allan Porterfield", - Title = "Software Prefetching", - BookTitle = ASPLOS, - Address = {Santa Clara, USA}, - Month = Apr, - Year = 1991, - Pages = "40-52"} - - -@article{LM99:GreedyPrefetch, - author = "Chi-Keung Luk and Todd C. Mowry", - title = "Automatic Compiler-Inserted Prefetching for Pointer-Based Applications", - journal = "IEEE Transactions on Computers", - volume = "48", - number = "2", - pages = "134-141", - year = "1999", - url = "citeseer.ist.psu.edu/luk99automatic.html" } - -@InProceedings{MLG:Prefetch, - Author = "Todd Mowry and Monica S. Lam and Anoop Gupta", - Title = "Design and Evaluation of a Compiler Algorithm for Prefetching", - BookTitle = ASPLOS, - Pages = {62--73}, - Address = "Boston, USA", - Month = Oct, - Year = 1992} - -@Article{grunwald93customalloc, - author = "Dirk Grunwald and Benjamin Zorn", - title = "CustoMalloc: Efficient Synthesized Memory Allocators", - journal = {SP\&E}, - volume = "23", - number = "8", - pages = "851-869", - year = "1993", - url = "citeseer.nj.nec.com/grunwald92customalloc.html" } - -@InProceedings{LukMowry:ASPLOS96, - Author = "C. Luk and T. Mowry", - Title = "{C}ompiler-based {P}refetching for {R}ecursive {D}ata {S}tructures", - Booktitle = ASPLOS, - Address = "Boston", - Month = Oct, - Year = 1996, - Annote = { CATEGORY: ARCHITECTURE: SHARED-MEMORY: SOFTWARE DSM } -} - -@InProceedings{PCMO:PLDI98, - author = "Andrew Ayers and Stuart de Jong and John Peyton and Richard Schooler", - Title = {Scalable Cross-Module Optimization}, - Booktitle = PLDI, - Address = "Montreal", - Month = June, - Year = 1998 -} - - -@inproceedings{IntelPointsTo:PLDI01, - author = {Rakesh Ghiya and Daniel Lavery and David Sehr}, - title = {On the importance of points-to analysis and other memory disambiguation methods for {C} programs}, - booktitle = PLDI, - year = {2001}, - isbn = {1-58113-414-2}, - location = {Snowbird, Utah, United States}, - doi = {http://doi.acm.org/10.1145/378795.378806}, -} - - - -@Article{ConvexAppsCompiler:Sigplan94, - Title = {Developing an Interprocedural Optimizing Compiler}, - Author = {J. Loeliger and R. Metzger}, - Journal = "ACM Sigplan Notices", - Month = Apr, - Year = 1994, - Volume = 29, - Number = 4 -} - -@InProceedings{Wall:PLDI86, - Author = {David Wall}, - Title = {Global Register Allocation at Link-Time}, - Booktitle = PLDI, - Address = "Palo Alto, CA", - Year = 1986, - Annote = { CATEGORY: COMPILERS: PARALLEL } -} - -@Misc{IBM:XLFWhitePaper, - Author = "{IBM Corp.}", - Title = "{XL FORTRAN: Eight Ways to Boost Performance}", - Year = 2000, - HowPublished = "White Paper" -} - -@InProceedings{Calder:PLDI01, - Author = {B. Calder}, - Title = {Using Annotations to Reduce Dynamic Optimization Time}, - Booktitle = PLDI, - Address = "Salt Lake City, UT", - Month = June, - Year = 2001 -} - -@Article{ExceptOpt:Sigplan98, - Title = {Optimizing Away C++ Exception Handling }, - Author = {Jonathan L. Schilling}, - Journal = "ACM Sigplan Notices", - Month = Aug, - Year = 1998, - Volume = 33, - Number = 8 -} - -@Book{SedgewickBook:1988, - author = "Robert Sedgewick", - title = "Algorithms", - publisher = "Addison-Wesley, Inc.", - address = "Reading, MA", - year = 1988 -} - -@Article{ChilimbiLarus:ISSM98, - author = {Trishul M. Chilimbi and James R. Larus}, - title= {Using generational garbage collection to implement cache-conscious data placement}, - journal = {ACM SIGPLAN Notices}, - volume = {34}, - number = {3}, - year = {1999}, - issn = {0362-1340}, - pages = {37--48}, - doi = {http://doi.acm.org/10.1145/301589.286865}, -} - -@Article{KistlerFranz:TOPLAS03, - author = {Thomas Kistler and Michael Franz}, - title = {Continuous Program Optimization: A Case Study}, - journal = TOPLAS, - year = {2003}, - volume = {25}, - number = {4}, - pages = {500-548}, - month = {Jul} -} - -@Article{franz97communications, - author = "Michael Franz and Thomas Kistler", - title = "Slim binaries", - journal = CACM, - volume = {40}, - number = {12}, - year = "1997" -} - -@InProceedings{SafeTSA:Amme:PLDI01, - Author = "Wolfram Amme and Niall Dalton and Jeffery {von Ronne} and Michael Franz", - Title = "Safe{TSA}: A type safe and referentially secure mobile-code representation based on static single assignment form", - Booktitle = PLDI, - City = "Snowbird, Utah", - Month = June, - Year = 2001 -} - -@InProceedings{DAISY:ISCA97, - author = "Kemal Ebcioglu and Erik R. Altman", - title = "{DAISY}: Dynamic Compilation for 100\% Architectural Compatibility", - booktitle = ISCA, - pages = {26-37}, - year = 1997, - url = "citeseer.nj.nec.com/2006.html" -} - -@Article{Transmeta:MPR00, - author = "T. Halfhill", - title = "Transmeta Breaks x86 Low-Power Barrier", - Journal = "Microprocessor Report", - Volume = 14, - Number = "Archive 2", - Publisher = "Digital Equipment Corporation", - Month = Feb, - Year = 2000 -} - -@InProceedings{Dynamo:PLDI00, - author = "Vasanth Bala and Evelyn Duesterwald and Sanjeev Banerjia", - title = "Dynamo: {A} Transparent Dynamic Optimization System", - Booktitle = PLDI, - Month = June, - Year = 2000, - pages = "1-12", - url = "citeseer.nj.nec.com/vasanth00dynamo.html" -} - -@TechReport{Dynamo:TR99, - author = "V. Bala and E. Duesterwald and S. Banerjia", - title = "Transparent Dynamic Optimization", - institution = {HP Laboratories}, - number = {Report \#HPL-1999-77}, - type = {Tech. Report}, - year = "1999", - url = "citeseer.nj.nec.com/bala99transparent.html" } - -@Article{Spike:1997, - Author = "Robert S. Cohn and David W. Goodwin and P. Geoffrey Lowney", - Title = "Optimizing {A}lpha Executables on {W}indows {NT} with {S}pike", - Journal = "Digital Technical Journal", - volume = 9, - number = 4, - publisher = "Digital Equipment Corporation", - year = 1997 -} - -@Misc{Spike:Cohn:DTJ97, - author = "R. Cohn and D. Goodwin and P. Lowney and N. Rubin", - title = "Spike: An Optimizer for {Alpha/NT} Executables", - text = "R. Cohn, D. Goodwin, P. G. Lowney, and N. Rubin, Spike: An Optimizer for - Alpha/NT Executables, The USENIX Windows NT Workshop Proceedings, Seattle, - Wash. (August 1997): 17--24.", - year = "1997" -} - -@InProceedings{Etch:Romer:Usenix97, - author = "Ted Romer and Geoff Voelker and Denis Lee and Alec Wolman and Wayne Wong and Hank Levy and Brian Bershad and Brad Chen", - title = "Instrumentation and Optimization of {Win32/Intel} Executables Using {Etch}", - booktitle = {Proc. USENIX Windows NT Workshop}, - location = {Seattle WA}, - month = {August}, - year = "1997" -} - - -@Article{OM:Srivastava:JOPL93, - author = "Amitabh Srivastava and David Wall", - title = "{A} practical system for intermodule code optimization at link-time", - journal = "Journal of Programming Languages", - volume = "1", - number = "1", - month = "Dec.", - pages = "1--18", - year = "1992", - url = "citeseer.nj.nec.com/srivastava92practical.html" } - - -@Article{TAL:Morrisett:TOPLAS99, - Author = {Greg Morrisett and David Walker and Karl Crary and Neal Glew}, - Title = {From {System F} to typed assembly language}, - Journal = TOPLAS, - Volume-comment = 21, - Number-comment = 3, - Pages-comment = {528-569}, - Month = May, - Year = 1999} - - -@InProceedings{LTAL:PLDI03, - author = {Juan Chen and Dinghao Wu and Andrew W. Appel and Hai Fang}, - title = {A Provably Sound {TAL} for Back-end Optimization}, - booktitle= PLDI, - year = {2003}, - address = {San Diego, CA}, - month = {June} -} - - -@PhdThesis{Alto:MuthThesis99, - author = "Robert M. Muth", - title = "{A}lto: A Platform for Object Code Modification", - type = "Ph.D. {T}hesis, {D}epartment of {C}omputer {S}cience", - school = "University of Arizona", - year = "1999", - url = "citeseer.nj.nec.com/Article/muth99alto.html" -} - -@Article{MLD:Fernandez:PLDI95, - author = "Mary F. Fern{\'a}ndez", - title = "Simple and effective link-time optimization of {Modula-3} programs", - booktitle = PLDI, - year = "1995", - url = "citeseer.nj.nec.com/fernandez95simple.html" } - -@misc{Fisher:TraceScheduling, - author = "J. Fisher", - title = "Trace Scheduling: A General Technique for Global Microcode Compaction", - text = "J. Fisher. Trace Scheduling: A General Technique for Global Microcode Compaction. - IEEE Transactions on Computers, C-30(7):478--490, 1981.", - year = "1981" -} - -@misc{CLR, - author = "{Microsoft Corporation}", - title = "The {.NET} {C}ommon {L}anguage {R}untime", - note = "See web site at: http://msdn.microsoft.com/net" -} - -@misc{CLIOverview:TR01, - author = "Erik Meijer and John Gough", - title = {{A Technical Overview of the Common Language Infrastructure}}, - howpublished = "{http://research.microsoft.com/$\tilde{\ }$emeijer}", - year = 2002 -} - - -@Article{WalkTime:Computer97, - author = {Joseph Fisher}, - title = {Walk-Time Techniques: Catalyst for Architectural Change}, - journal = {IEEE Computer}, - year = {1997}, - volume = {30}, - number = {9}, - pages = {46-42}, - month = {Sept} -} - -@inproceedings{SmithHeil:IWIA99, - author = {James E. Smith and Timothy Heil and Subramanya Sastry and Todd Bezenek}, - title = "Achieving High Performance via Co-designed Virtual Machines" , - booktitle = "Proc. Int'l Workshop on Innovative Architecture (IWIA)", - year = "1999"} - -@misc{SmithDhodapkar:WCED2001, - author = {Dhodapkar, A. and Smith, J. }, - booktitle = {Workshop on Complexity-Effective Design}, - month = {June}, - title = {Saving and Restoring Implementation Contexts with co-Designed Virtual Machines}, - url = {http://citeseer.ist.psu.edu/dhodapkar01saving.html}, - year = {2001} -} - -@InProceedings{Self:OOPSLA87, - author = "David Ungar and Randall B. Smith", - title = "Self: The Power of Simplicity", - booktitle = OOPSLA, - year = "1987" -} - - -%% Note this really is in POPL despite the cite name -@InProceedings{SmallTalk80:PLDI84, - author = {L. Peter Deutsch and Allan M. Schiffman}, - title = {Efficient implementation of the Smalltalk-80 system}, - booktitle = POPL, - pages = {297-302}, - year = {1984}, - month = {Jan}, -} - -@InProceedings{GayAiken:PLDI01, - author = "David Gay and Alex Aiken", - title = "Language Support for Regions", - booktitle = PLDI, - address = "Snowbird, UT", - pages = "70-80", - month = June, - year = 2001 -} - -@InProceedings{BarrettZorn:PLDI93, - author = "David A. Barrett and Ben G. Zorn", - title = "Using Lifetime Predictors to Improve Memory Allocation Performance", - booktitle = PLDI, - address = "Albuquerque, New Mexixo", - pages = "187-196", - month = June, - year = 1993 -} - -@Article{Hanson:SPE90, - author = {David R. Hanson}, - title = "{Fast Allocation and Deallocation of Memory Based on - Object Lifetimes}", - journal = SPE, - year = {1990}, - volume = {20}, - number = {1}, - pages = {5-12}, - month = {Jan}, -} - -@InProceedings{Demers:POPL90, - author = "Alan Demers and Mark Weiser and Barry Hayes and Hans Boehm and - Daniel Bobrow and Scott Shenker", - title = "Combining generational and conservative garbage collection: - framework and implementations", - booktitle = POPL, - pages = "261--269", - year = "1990", -} - -@InProceedings{CraryWalkerMorrisett:POPL99, - author = "Karl Crary and David Walker and Greg Morrisett", - title = "Typed Memory Management in a Calculus of Capabilities", - booktitle = POPL, - address = "San Antonio, USA", - pages = "262--275", - year = "1999" -} - -@InProceedings{GayAiken:PLDI98, - author = "David Gay and Alexander Aiken", - title = "Memory Management with Explicit Regions", - booktitle = PLDI, - pages = "313-323", - year = "1998", - address = "Montreal, Canada" -} - -@Article{TofteTalpin:IC97, - author = "Mads Tofte and Jean-Pierre Talpin", - title = "Region-Based Memory Management", - journal = "Information and Computation", - year = "1997", - month = Feb, - pages = "132(2):109-176" -} - -@InProceedings{TofteTalpin:POPL94, - author = "Mads Tofte and Jean-Pierre Talpin", - title = "Implementation of the Typed Call-by-value $\lambda$-calculus Using a Stack of Regions", - booktitle = POPL, - pages = "188-201", - year = "1994", -} - -@InProceedings{Aiken:PLDI95, - author = {Alex Aiken and Manuel F\"{a}hndrich and Ralph Levien}, - title = "Better Static Memory Management: Improving Region-Based Analysis of Higher-Order Languages", - booktitle = PLDI, - pages = "174-185", - address = "La Jolla, CA", - month = June, - year = 1995 -} - -@InProceedings{EmamiEtAl:PLDI94, - author = "Maryam Emami and Rakesh Ghiya and Laurie J. Hendren", - title = "Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers", - booktitle = PLDI, - pages = "242-256", - year = "1994", - address = "Orlando, FL", - month = Jun -} - -@InProceedings{HendrenEtAl:PLDI92, - author = "Laurie J. Hendren and Joseph Hummel and Alexandru Nicolau", - title = "Abstractions for Recursive Pointer Data Structures: Improving the Analysis and Transformation of Imperative Programs", - booktitle = PLDI, - pages = "249-260", - address = "San Francisco, CA", - month = June, - year = 1992 -} - -@inproceedings{HindPioli:SAS98:FlowSensitive, - author = "Michael Hind and Anthony Pioli", - title = "Assessing the Effects of Flow-Sensitivity on Pointer Alias Analyses", - booktitle = SAS, - pages = "57-81", - year = "1998", - url = "citeseer.ist.psu.edu/hind98assessing.html" } - - - -@InProceedings{ChengHwu:PLDI00, - author = "Ben-Chung Cheng and Wen-mei Hwu", - title = "Modular Interprocedural Pointer Analysis Using Access Paths: Design, Implementation, and Evaluation", - booktitle = "PLDI", - address = "Vancouver, British Columbia, Canada", - month = June, - year = 2000 -} -; pages = "57-69", - -@InProceedings{WilsonLam:PLDI95, - author = "Robert P. Wilson and Monica S. Lam", - title = "Effective Context Sensitive Pointer Analysis for {C} Programs", - booktitle = PLDI, - pages = "1-12", - month = June, - year = 1995 -} - -@inproceedings{HeineLam:PLDI03, - author = {David L. Heine and Monica S. Lam}, - title = {A Practical Flow-sensitive and Context-sensitive C and C++ Memory Leak Detector}, - booktitle = PLDI, - year = {2003}, - isbn = {1-58113-662-5}, - pages = {168--181}, - location = {San Diego}, - doi = {http://doi.acm.org/10.1145/781131.781150}, - } - -@InProceedings{Deutsch:PLDI94, - author = "Alain Deutsch", - title = "Interprocedural may-alias analysis for pointers: Beyond k-limiting", - booktitle = PLDI, - pages = "230-241", - month = June, - year = 1994 -} - -@inproceedings{Cooper:PLDI97:RegisterPromotion, - author = "Keith D. Cooper and John Lu", - title = "Register Promotion in {C} Programs", - booktitle = PLDI, - pages = "308-319", - year = "1997", - url = "citeseer.ist.psu.edu/cooper97register.html" } - -@InProceedings{Steensgaard:POPL96, - author = {Bjarne Steensgaard}, - title = {Points-to analysis in almost linear time}, - booktitle = POPL, - year = {1996}, - isbn = {0-89791-769-3}, - location = {St. Petersburg Beach, Florida, United States}, - doi = {http://doi.acm.org/10.1145/237721.237727}, -} - -@inproceedings{Steensgaard:CC96:FieldSensitive, - author = {Bjarne Steensgaard}, - title = {Points-to Analysis by Type Inference of Programs with Structures and Unions}, - booktitle = "Compiler Construction", - year = {1996}, - isbn = {3-540-61053-7}, - pages = {136--150}, - address = {London, UK}, - } - - -@inproceedings{FahndrichEtAl:PLDI00, - author = {Manuel F\"{a}hndrich and Jakob Rehof and Manuvir Das}, - title = "Scalable Context-Sensitive Flow Analysis Using Instantiation Constraints", - booktitle = PLDI, - year = "2000", - url = "citeseer.nj.nec.com/colby00certifying.html" -} -; month = June, -; address = "Vancouver", - -@inproceedings{YongHorwitzReps:PLDI99, - author = {Suan Hsi Yong and Susan Horwitz and Thomas Reps}, - title = {Pointer analysis for programs with structures and casting}, - booktitle = PLDI, - year = {1999}, - isbn = {1-58113-094-5}, - pages = {91--103}, - location = {Atlanta, Georgia, United States}, - doi = {http://doi.acm.org/10.1145/301618.301647}, -} - -@inproceedings{LiangHarrold:ESEC99, - author = "Donglin Liang and Mary Jean Harrold", - title = "Efficient Points-to Analysis for Whole-Program Analysis", - booktitle = "ESEC", - year = "1999", - url = "citeseer.nj.nec.com/liang99efficient.html" } -; pages = "199-215", - -@inproceedings{LiangHarrold:SAS01, - author = "Donglin Liang and Mary Jean Harrold", - title = "Efficient Computation of Parameterized Pointer Information for Interprocedural Analysis", - booktitle = "SAS 2001", - year = "2001", - month = "July"} - -@inproceedings{DAS:PLDI00, - author = {Manuvir Das}, - title = {Unification-based Pointer Analysis with Directional Assignments}, - booktitle = PLDI, - year = {2000}, - isbn = {1-58113-199-2}, - pages = {35--46}, - location = {Vancouver, British Columbia, Canada}, - doi = {http://doi.acm.org/10.1145/349299.349309} -} - -@PhdThesis{Andersen:PhD, - author = "Lars O. Andersen", - title = "Program Analysis and Specialization for the C Programming Language", - school = "DIKU, University of Copenhagen", - month = May, - year = 1994 -} - -@inproceedings{VivienRinard:PLDI01, - author = {Frédéric Vivien and Martin Rinard}, - title = {Incrementalized pointer and escape analysis}, - booktitle = PLDI, - year = {2001}, - isbn = {1-58113-414-2}, - pages = {35--46}, - location = {Snowbird, Utah, United States}, - doi = {http://doi.acm.org/10.1145/378795.378804}, -} - -@InProceedings{LarusHilfinger:PLDI88, - author = "James R. Larus and Paul N. Hilfinger", - title = "Detecting conflicts between structure accesses", - booktitle = PLDI, - month = "July", - year = "1988", - pages = "21-34", -} - -@Article{HendrenNicolau:TPDS90, - author = "Laurie J. Hendren and Alexandru Nicolau", - title = "Parallelizing programs with recursive data structures", - journal = "IEEE Transactions on Parallel and Distributed System", - year = "1990", - pages = "35-47" -} - -@article{Zilles:llubench, - author = {Craig B. Zilles}, - title = {Benchmark Health Considered Harmful}, - journal = {ACM SIGARCH Computer Architecture News}, - volume = {29}, - number = {3}, - year = {2001}, - issn = {0163-5964}, - pages = {4--5}, - doi = {http://doi.acm.org/10.1145/503205.503206}, - } - -@Article{Olden:Dynamic:TOPLAS95, - Author = {Anne Rogers and Martin C. Carlisle and John H. Reppy and Laurie J. Hendren}, - Title = {Supporting Dynamic Data Structures on Distributed - Memory Machines}, - Journal = TOPLAS, - Volume = {17}, - Number = 2, - Month = Mar, - Year = 1995} - -@Misc{PtrDist:URL95, - Title = {{The Pointer-intensive Benchmark Suite}}, - Author = {{Todd Austin}}, - Month = {September}, - Year = {1995}, - HowPublished = "\verb+www.cs.wisc.edu/~austin/ptr-dist.html+" -} - -@Misc{FreeBench:URL, - Title = {{The FreeBench v1.0 Benchmark Suite}}, - Author = "Peter Rundberg and Fredrik Warg", - Month = "Jan", - Year = "2002", - HowPublished = "\verb+http://www.freebench.org+" -} - - -@inproceedings{fpgrowth:SIGMOD00, - author = {Jiawei Han and Jian Pei and Yiwen Yin}, - title = {Mining frequent patterns without candidate generation}, - booktitle = SIGMOD, - year = {2000}, - isbn = {1-58113-217-4}, - pages = {1--12}, - location = {Dallas, TX}, - doi = {http://doi.acm.org/10.1145/342009.335372}, - } - -@Article{TheSSAPaper, - author = "Ron Cytron and Jeanne Ferrante and Barry K. Rosen and Mark N. Wegman and F. Kenneth Zadeck", - title = "Efficiently computing static single assignment form and the control dependence graph", - journal = TOPLAS, - pages = "13(4):451-490", - month = "October", - year = 1991 -} - - -@inproceedings{Pearce:WEA04, - title = {A dynamic algorithm for topologically sorting directed acyclic graphs}, - author = {David J. Pearce and Paul H. J. Kelly}, - booktitle = {Proc. 3rd Int'l Workshop on Efficient and Experimental Algorithms (WEA 2004)}, - series = {Lecture Notes in Computer Science}, - publisher = {Springer-Verlag}, - year = {2004}, - url = {http://www.doc.ic.ac.uk/~phjk/Publications/DynTopoSortWEA2004.pdf} -} - -@Article{Sagiv:TOPLAS98, - author = "Mooly Sagiv and Thomas Reps and Reinhard Wilhelm", - title = "Solving shape-analysis problems in languages with destructive updating", - journal = TOPLAS, - volume = 20, - number = 1, - month = Jan, - year = 1998 -} - - -@Article{Cobrera:ShapeAnalysis:TPDS04, - author = {Francisco Cobrera and Rafael Asenjo and Emilio R. Zapata}, - title = {A Framework to Capture Dynamic Data Structures in Pointer-Based Codes}, - journal = {IEEE Transactions on Parallel and Distributed Systems}, - year = {2004}, - volume = {15}, - number = {2}, - pages = {151--166}, - month = {Feb}, -} - -@inproceedings{Corbera:ISC:ShapeAnalysis, - author = {Francisco Corbera and Rafael Asenjo and Emilio L. Zapata}, - title = {New shape analysis techniques for automatic parallelization of C codes}, - booktitle = ICS, - year = {1999}, - isbn = {1-58113-164-X}, - pages = {220--227}, - location = {Rhodes, Greece}, - doi = {http://doi.acm.org/10.1145/305138.305196}, - } - - -@Article{TofteBirkedal:TOPLAS98, - author = "Mads Tofte and Lars Birkedal", - title = "A region inference algorithm", - journal = TOPLAS, - volume = 20, - number = 4, - month = "July", - year = 1998, - pages = "724-768", -} - - -@InProceedings{Birkedal:POPL96, - author = "Lars Birkedal and Mads Tofte and M. Vejlstrup", - title = "From Region Inference to von Neumann Machines via Region Representation Inference", - booktitle = POPL, - pages = "171-183", - year = "1996", -} - -@Article{Blanchet:TOPLAS03, - author = {Bruno Blanchet}, - title = {{Escape Analysis for Java(TM): Theory and Practice}}, - journal = TOPLAS, - year = {2003}, - volume = {25}, - number = {6}, - pages = {713-775}, - month = {Nov}, -} - -@InProceedings{Hallenberg:PLDI02, - author = "Niels Hallenberg and Martin Elsman and Mads Tofte", - title = "Combining region inference and garbage collection", - booktitle = PLDI, - address = "Berlin, Germany", - month = June, - year = 2002 -} - -@InProceedings{Wilhelm:CC00, - author = "Reinhard Wilhelm and Mooly Sagiv and Thomas Reps", - title = "Shape analysis", - booktitle = CC, - month = "Mar-Apr", - year = 2000 -} -% address = "Berlin, Ger.", - -@Misc{DavidSehr:Personal02, - Author = "David Sehr", - Month = "April", - Year = "2002", - Annote = { CATEGORY: PERSONAL COMMUNICATION }, - HowPublished = "Personal communication" -} - - -@inproceedings{ABCD:PLDI00, - author = "Rastislav Bodik and Rajiv Gupta and Vivek Sarkar", - title = "{ABCD}: eliminating array bounds checks on demand", - booktitle = PLDI, - year = "2000", - url = "citeseer.nj.nec.com/bodik00abcd.html" } - -@Article{LimLeeSha:PDCP, - Title = {Ensuring Integrity and Serivce Availability in a Web Based - Control Laboratory}, - Author = {Sungsoo Lim and Kihwal Lee and Lui Sha}, - Journal = "Journal of Parallel and Distributed Computing Practices" -} - - - -@article{ rtjava:COMPUTER00, - author = "Greg Bollella and James Gosling", - title = "The Real-Time Specification for {Java}", - journal = "IEEE Computer", - volume = "33", - number = "6", - pages = "47--54", - year = "2000", - url = "citeseer.nj.nec.com/bollella00realtime.html" -} - - -@book{JVM, - author = "Tim Lindholm and Frank Yellin", - title = "The {Java} {V}irtual {M}achine {S}pecification", - publisher = "Ad{\-d}i{\-s}on-Wes{\-l}ey", - address = "Reading, MA", - isbn = "0-201-63452-X", - year = "1997" -} - -@book{JavaSpec, - author = "James Gosling and Bill Joy and Guy Steele and Gilad Bracha", - title = "The {Java} {L}anguage {S}pecification, 2$^{nd}$ Ed.", - publisher = "Ad{\-d}i{\-s}on-Wes{\-l}ey", - address = "Reading, MA", - isbn = "0-201-310082", - year = "2000" -} - -@manual{Ada:Manual, -note = {International Standard ISO/IEC 8652:1995}, -organization = {International Organisation for Standardisation}, -title = {Ada95 Reference Manual}, -year = {1995} -} - -@misc{TinyOS, - Title = "{TinyOS}, A Component-based {OS} for the {N}etworked {S}ensor {R}egime", - HowPublished = "http://webs.cs.berkeley.edu/tos/" -} - -@InProceedings{EMachine:PLDI02, - author = "Thomas A. Henzinger and Christoph M. Kirsch", - title = "The Embedded Machine: Predictable, Portable Real-Time Code", - booktitle = PLDI, - address = "Berlin, Germany", - month = June, - year = 2002 -} - -@InProceedings{ XuMillerReps:PLDI01, - author = "Zhichen Xu and Barton P. Miller and Thomas Reps", - title = "Safety checking of machine code", - booktitle = PLDI, - address = "Vancouver B.C., Canada", - pages = "70--82", - year = "2000", - } - - - -@inproceedings{Boyapati:PLDI03, - author = "Chandrasekhar Boyapati and Alexandru Salcianu and William Beebee and Martin Rinard", - title = "Ownership Types for Safe Region-Based Memory Management in Real-Time Java", - booktitle = PLDI, - year = "2003" -} - -@inproceedings{PCC:POPL97, - author = {George C. Necula}, - title = {Proof-Carrying Code}, - booktitle = POPL, - month = Jan, - address-comment = {Paris}, - pages-comment = {106--119}, - year = 1997, - url = "citeseer.nj.nec.com/50371.html" } - -@inproceedings{PCCForKernels:OSDI96, - author = "George C. Necula and Peter Lee", - title = "Safe Kernel Extensions Without Run-Time Checking", - booktitle = OSDI, - publisher-comment = "USENIX", - address-comment = "Berkeley, CA, USA", - editor-comment = "{USENIX}", - pages-comment = "229--243", - city-comment = "Seattle, {WA}", - month = Oct, - year = "1996" -} - -%% url = "citeseer.nj.nec.com/necula96safe.html" - -@inproceedings{CertifyingCompilerC:PLDI98, - author = "G. C. Necula and P. Lee", - title = "The Design and Implementation of a Certifying Compiler", - booktitle = PLDI, - pages = "333--344", - year = "1998", - url = "citeseer.nj.nec.com/necula98design.html" -} - -@inproceedings{CertifyingCompilerJava:PLDI00, - author = "Christopher Colby and Peter Lee and George C. Necula and Fred Blau and Mark Plesko and Kenneth Cline", - title = "A certifying compiler for {Java}", - booktitle = PLDI, - month = June, - year = "2000", - url = "citeseer.nj.nec.com/colby00certifying.html" -} -% address = "Vancouver, Canada", - - -@InProceedings{Vault:PLDI01, - author = {Robert DeLine and Manuel F\"{a}hndrich}, - title = "Enforcing high-level protocols in low-level software", - booktitle = PLDI, - address = "Snowbird, UT", - month = June, - year = 2001 -} - -@InProceedings{Cyclone:Usenix02, - author = "Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and Yanling Wang", - title = "Cyclone: A Safe Dialect of {C}", - booktitle = "USENIX Annual Technical Conference", - address = "Monterey, CA", - year = 2002 -} - -@InProceedings{Cyclone:PLDI02, - author = "Dan Grossman and Greg Morrisett and Trevor Jim and Michael Hicks and Yanling Wang and James Cheney", - title = "Region-based Memory Management in Cyclone", - booktitle = PLDI, - month = June, - year = 2002 -} -% address = "Berlin, Germany", - -@InProceedings{CCured:POPL02, - author = "George C. Necula and Scott McPeak and Westley Weimer", - title = "CCured: Type-Safe Retrofitting of Legacy Code", - booktitle = POPL, - address = "London", - month = Jan, - year = 2002 -} - -@Article{Pugh:CACM, - Author = {W. Pugh}, - Title = {A practical algorithm for exact array dependence analysis}, - Journal = CACM, - Volume = {35}, - Number = 8, - Pages = {102--114}, - Month = Aug, - Year = 1992} - -@TechReport{OmegaManual, - Author = {Wayne Kelly and Vadim Maslov and William Pugh and - Evan Rosser and Tatiana Shpeisman and David Wonnacott}, - Title = {{T}he {O}mega {L}ibrary {I}nterface {G}uide}, - Institution = {Computer Science Dept., U. Maryland, College Park}, - Month = Apr, - Year = 1996} - -@inproceedings{ fischer74superexponential, - author = "Fischer and Rabin", - title = "Super-Exponential Complexity of Presburger Arithmetic", - booktitle = "{SIAMAMS}: Complexity of Computation: Proceedings of a Symp. in Applied Mathematics of the American Mathematical Society and the Society for Industrial and Applied Mathematics", - year = "1974", - url = "citeseer.nj.nec.com/fischer74superexponential.html" - } - -@Book{DecisionProcsBook, - Author = {Daniel Kroening and Ofer Strichman}, - Title = {Decision Procedures: An Algorithmic Point of View}, - Publisher = {Springer}, - Edition = {1st}, - Year = {2007}, - Month = {July} -} - - -@Inproceedings{Wagner:NDSS00, - author = "David Wagner and Jeffrey S. {Foster} and Eric A. Brewer and Alexander Aiken", - title = "A First Step towards Automated Detection of Buffer Overrun Vulnerabilities", - booktitle ="Network and Distributed System Security Symp.", - address = "San Diego, CA", - pages = "3--17", - month ="February", - year="2000", - url = "citeseer.nj.nec.com/wagner00first.html" -} - -@inproceedings{AddrSpaceRandomization:CCS04, - author = {Hovav Shacham and Matthew Page and Ben Pfaff and Eu-Jin Goh and Nagendra Modadugu and Dan Boneh}, - title = {On the effectiveness of address-space randomization}, - booktitle = {Proceedings ACM Conf. on Computer and Communications Security (CCS '04)}, - year = {2004}, - pages = {298--307}, - location = {Washington DC, USA}, - doi = {http://doi.acm.org/10.1145/1030083.1030124}, -} - -@MastersThesis{Razafimahefa:SideEffectForJava:Thesis99, - author = "Chrislain Razafimahefa", - title = "A study of side-effect analyses for Java", - school = "McGill University", - year = "1999", - month = {Dec}, - url = "citeseer.ist.psu.edu/razafimahefa99study.html" -} -@inproceedings{Milanova:ModRef:ISSTA02, - author = "Ana Milanova and Atanas Rountev and Barbara Ryder", - title = "Parameterized object sensitivity for points-to and side-effect analyses for Java", - booktitle = ISSTA, - pages = "1--11", - year = "2002", - url = "citeseer.ist.psu.edu/milanova02parameterized.html" } - -@inproceedings{Stocks:ModRef:ISSTA98, - author = "Phil Stocks and Barbara G. Ryder and William Landi and Sean Zhang", - title = "Comparing Flow and Context Sensitivity on the Modification-Side-Effects Problem", - booktitle = ISSTA, - pages = "21-31", - year = "1998", - url = "citeseer.ist.psu.edu/article/stocks98comparing.html" } - -@InProceedings{CooperKennedy:PLDI88, - Author = {Keith Cooper and Ken Kennedy}, - Title = {Interprocedural Side-effect Analysis in Linear Time}, - BookTitle = PLDI, - Address = {Atlanta, GA}, - Month = June, - Year = 1988} - -@InProceedings{LRZ:PLDI93, - Author = {William Landi and Barbara Ryder and Sean Zhang}, - Title = {Interprocedural Modification Side Effect Analysis with Pointer Aliasing}, - BookTitle = PLDI, - Address = {Albuquerque, NM}, - Month = June, - Year = 1993} - -@inproceedings{Banning:ModRef:POPL79, - author = {John P. Banning}, - title = {An efficient way to find the side effects of procedure calls and the aliases of variables}, - booktitle = POPL, - year = {1979}, - pages = {29--41}, - location = {San Antonio, Texas}, - doi = {http://doi.acm.org/10.1145/567752.567756}, - address = {New York, NY, USA}, - } - -@inproceedings{Cooper:ModRef:POPL85, - author = {Keith D. Cooper}, - title = {Analyzing aliases of reference formal parameters}, - booktitle = POPL, - year = {1985}, - isbn = {0-89791-147-4}, - pages = {281--290}, - location = {New Orleans, Louisiana, United States}, - doi = {http://doi.acm.org/10.1145/318593.318658}, - address = {New York, NY, USA}, - } - -@Article{RyderEtAl:TOPLAS01, - Author = {Barbara Ryder and William Landi and Philip Stocks and Sean Zhang and Rita Altucher}, - Title = {A Schema for Interprocedural Modification Side-Effect Analysis with Pointer Aliasing}, - journal = TOPLAS, - Volume = {23}, - Number = 2, - Pages = {105--186}, - Month = Mar, - Year = 2001} - - -@Article{SSAPRE:TOPLAS99, - author = {Robert Kennedy and Sun Chan and Shin-Ming Liu and Raymond Lo and Peng Tu and Fred Chow}, - title = {Partial Redundancy Elimination in SSA Form}, - journal = TOPLAS, - year = {1999}, - volume = {21}, - number = {3}, - pages = {627-676}, - month = {May}, -} - -%%============================================================================ -%% COMPILERS: SCALAR: DATAFLOW OPTIMIZATION -%%============================================================================ - -@article{KamUllman:JACM76, - author = {Kam, John B. and Ullman, Jeffrey D.}, - title = {Global Data Flow Analysis and Iterative Algorithms}, - journal = {J. ACM}, - volume = {23}, - issue = {1}, - month = {January}, - year = {1976}, - issn = {0004-5411}, - pages = {158--171}, - numpages = {14}, - url = {http://doi.acm.org/10.1145/321921.321938}, - doi = {http://doi.acm.org/10.1145/321921.321938}, - acmid = {321938}, - publisher = {ACM}, - address = {New York, NY, USA}, -} - -%%============================================================================ -%% COMPILERS: SCALAR: OTHER OPTIMIZATION -%%============================================================================ - -@InProceedings{Stampede:ASPLOS02, - author = {Antonia Zhai and Christopher B. Colohan and J. Gregory Steffan - and Todd C. Mowry}, - title = "{Compiler Optimization of Scalar Value Communication Between - Speculative Threads}", - booktitle = ASPLOS, - address = {San Jose, CA, USA}, - month = {Oct}, - year = {2002} -} - -%%============================================================================ -%% COMPILERS: SCALAR: RUNTIME COMPILATION AND OPTIMIZATION -%%============================================================================ - -@InProceedings{VCODE:PLDI96, - author = "Dawson Engler", - title = "VCODE: A retargetable, extensible, very fast dynamic code generation system", - booktitle = PLDI, - year = "1996" -} - -@InProceedings{TCC:PLDI97, - author = "M. Poletto and D. Engler and M. Kaashoek", - title = "{tcc: A System for Fast, Flexible, and High-level Dynamic - Code Generation}", - booktitle = PLDI, - year = "1997" -} - -%% author = "Michael G. Burke and Jong-Deok Choi and Stephen Fink and David Grove and Michael Hind and Vivek Sarkar and Mauricio J. Serrano and Vugranam C. Sreedhar and Harini Srinivasan and John Whaley", -%% -@InProceedings{Jalapeno, - author = {Burke, Michael G. and Choi, Jong-Deok and Fink, Stephen and Grove, David and Hind, Michael and Sarkar, Vivek and Serrano, Mauricio J. and Sreedhar, V. C. and Srinivasan, Harini and Whaley, John}, - title = "{The Jalape{\~n}o Dynamic Optimizing Compiler for Java}", - booktitle = "Java Grande", - pages = "129-141", - year = "1999", - url = "citeseer.nj.nec.com/burke99jalapeno.html" } - -@Misc{Hotspot, - author = "D. Griswold", - title = "{The Java HotSpot Virtual Machine Architecture}", - text = "D. Griswold, The Java HotSpot Virtual Machine Architecture, March 1998. - Sun Microsystems Whitepaper.", - year = "1998" } - - - -@InProceedings{IntelJIT;PLDI98, - author = {A-R. Adl-Tabatabai and M. Cierniak and G-Y. Lueh and V. M. Parikh and J. M. Stichnoth}, - title = "{Fast and effective code generation in a Just-In-Time Java compiler}", - booktitle = PLDI, - year = {1998}, - month = {May} -} - -@InProceedings{DyC:PLDI99, - author = "Brian Grant and Matthai Philipose and Markus Mock and Craig Chambers and Susan J. Eggers", - title = "An Evaluation of Staged Run-Time Optimizations in {DyC}", - booktitle = PLDI, - pages = "293-304", - year = "1999" -} - -@InProceedings{Transmeta:CGO03, - author = {James C. Dehnert and Brian K. Grant and John P. Banning and Richard Johnson and Thomas Kistler and Alexander Klaiber and Jim Mattson}, - title = {The {T}ransmeta {C}ode {M}orphing {S}oftware: {U}sing Speculation, Recovery and Adaptive Retranslation to Address Real-life Challenges}, - booktitle = CGO, - address = {San Francisco, CA}, - year = {2003}, - month = {Mar} -} - -@Misc{TransmetaWhitePaper:Jan00, - author = {A. Klaiber}, - title = "{The Technology Behind Crusoe Processors}", - text = {White Paper, Transmeta Corp.}, - year = {2000} -} - -@InProceedings{RPA:MICRO00, - author = {Timothy H. Heil and James E. Smith}, - title = {Relational profiling: enabling thread-level parallelism in virtual machines}, - booktitle = MICRO, - pages = "281-290", - year = {2000}, - address = {Monterey, CA}, - month = {Dec}, - url = {citeseer.nj.nec.com/heil00relational.html} -} - -@InProceedings{LLVM:MICRO03, - author = {Vikram Adve and Chris Lattner and Michael Brukman and - Anand Shukla and Brian Gaeke}, - title = "{LLVA: A Low-Level Virtual Instruction Set Architecture}", - booktitle = {MICRO 36: Proceedings of the 36th annual ACM/IEEE Int´l Symp. on Microarchitecture}, - pages-comment = "205-216", - year = {2003}, - address-comment = {San Diego, CA}, - month = Dec -} - -@InProceedings{VISCSoftware:NGS04, - author = {Vikram Adve and Michael Brukman and Alkis Evlogimenos and - Brian Gaeke}, - title = {Software Implications of Virtual Instruction Set Computers}, - booktitle = {Proc. Workshop on Next Generation Software}, - pages = {205--216}, - year = {2004}, - month = {Apr}, - address = {Santa Fe, NM}, -} - - -@MastersThesis{Monroe:MSThesis05, - author = {Brent M. Monroe}, - title = {Measuring and Improving the Performance of {L}inux on a Virtual Instruction Set Architecture}, - school = {Computer Science Dept., Univ. of Illinois at Urbana-Champaign}, - year = {2005}, - address = {Urbana, IL}, - month = {Dec}, -} -% note = {{\em See {\tt http://llvm.cs.uiuc.edu}.}} - -@InProceedings{WSAnalyis:ISCA02, - author = {A. S. Dhodapkar and J. E. Smith}, - title = "{Managing Multi-Configuration Hardware via Dynamic Working Set Analysis}", - booktitle = ISCA, - year = {2002}, - address = {Alaska}, - month = {May} -} - -@InProceedings{KimSmith:ISCA02, - author = {H-S. Kim and J. E. Smith}, - title = {An Instruction Set and Microarchitecture for Instruction Level Distributed Processing}, - booktitle = ISCA, - year = {2002}, - address = {Alaska}, - month = {May} -} - -@InProceedings{OberoiSohi:ISCA03, - author = {Paramjit Oberoi and Gurinder S. Sohi}, - title = {Parallelism in the Front-End}, - booktitle = ISCA, - year = {2003}, - month = {June} -} - -@InProceedings{TRIPS:ISCA03, - author = {K. Sankaralingam and R. Nagarajan and H. Liu and C. Kim and and J. Huh}, - title = {Exploiting {ILP}, {TLP}, and {DLP} with the {P}olymorphous {TRIPS} {A}rchitecture}, - booktitle = ISCA, - year = {2003}, - month = {June} -} - -@InProceedings{ReplayEval:MICRO01, - author = {B. Fahs and S. Bose and M. Crum and B. Slechta and F. Spadini and T. Tung and S. J. Patel and S. S. Lumetta}, - title = {{P}erformance {C}haracterization of a {H}ardware {F}ramework for {D}ynamic {O}ptimization}, - booktitle = MICRO, - year = {2001}, - month = {Dec} -} - -@Article{Replay:TOC01, - author = {S. J. Patel and S. S. Lumetta}, - title = {re{PL}ay: A {H}ardware {F}ramework for {D}ynamic {O}ptimization}, - journal = {IEEE Transactions on Computers}, - year = {2001}, - month = {June}, -} - -@InProceedings{Hotspot:ISCA00, - author = {M. C. Merten and A. R. Trick and E. M. Nystrom and R. D. Barnes and W-m. W. Hwu}, - title = {A Hardware Mechanism for Dynamic Extraction and Relayout of Program Hot Spots}, - booktitle = ISCA, - pages = {59--70}, - year = {2000}, - month = {June} -} - -@InProceedings{ZillesSohi:HPCA01, - author = {Craig Zilles and Gurindar S. Sohi}, - title = {A Programmable Coprocessor for Profiling}, - booktitle = HPCA, - year = {2001}, - month = {Jan} -} - -@InProceedings{TraceProcessors:MICRO97, - author = {E. Rotenberg and Q. A. Jacobson and Y. Sazeides and J. E. Smith}, - title = {Trace Processors}, - booktitle = MICRO, - pages = {138--148}, - year = {1997}, - month = {Dec} -} - -@Article{AS400:IBMSJ89, - author = {B. E. Clark and M. J. Corrigan}, - title = {{Application System/400} Performance Characteristics}, - journal = {{IBM} Systems Journal}, - year = {1989}, - volume = {28}, - number = {3}, - pages = {407--423}, -} - -@Article{IBM:s38, - author = {IBM Corporation}, - title = {{System/38-A high-level machine}}, - journal = {IBM SYSTEM/38 Technical Developments}, - year = {1978}, - volume = {}, - number = {}, - pages = {}, - isbn = {0-933186-03-7}, - note = {available through IBM branch offices}, -} - -@article{soltis:computer81, - author = {F.G. Soltis}, - title = {Design of a Small Business Data Processing System}, - journal ={IEEE Computer}, - volume = {14}, - issn = {0018-9162}, - year = {1981}, - pages = {77-93}, - doi = {http://doi.ieeecomputersociety.org/10.1109/C-M.1981.220610}, - publisher = {IEEE Computer Society}, - address = {Los Alamitos, CA, USA}, -} - -@Article{FX32:Micro98, - author = {Anton Chernoff and Mark Herdeg and Ray Hookway and Chris Reeve and Norman Rubin and Tony Tye and S. Bharadwaj Yadavalli and John Yates}, - title = {{FX!32}: A Profile-Directed Binary Translator}, - journal = MICRO, - year = {1998}, - volume = {18}, - number = {2}, - pages = {56--64} -} - -@Article{FX32:TCCA99, - author = {Paul J. Drongowski and David Hunter and Morteza Fayyazi and David Kaeli and Jason Casmira}, - title = {Studying the Performance of the {FX!32} Binary Translation System}, - journal = {{IEEE} Computer Society Technical Committee Computer Architecture Newsletter}, - year = {1999}, - month = {Dec}, - pages = {56--68} -} - - -@InProceedings{LinearScan:PLDI98, - author = {O. Traub and G. Holloway and M. D. Smith}, - title = {Quality and Speed in Linear-scan Register Allocation}, - booktitle = PLDI, - year = {1998}, - month = {May} -} - - -@article{BallLarus:TOPLAS94, - author = "T. Ball and J. R. Larus", - title = "Optimally Profiling and Tracing Programs", - journal = TOPLAS, - volume = "16", - number = "4", - month = "July", - pages = "1319--1360", - year = "1994", - url = "citeseer.nj.nec.com/ball92optimally.html" -} - -@article{Knuth:BIT, - author = "D. E. Knuth and F. R. Stevenson", - title = "Optimal Measurement Points for Program Frequency Counts", - journal = "BIT", - volume = "13", - pages = "313--322", - year = "1973" -} - -@InProceedings{MDSmith:tracecache, - author = {Kim Hazelwood and Michael D. Smith}, - title = {Code Cache Management Schemes for Dynamic Optimizers}, - booktitle = {Proc. Workshop on Interaction between Compilers and Computer Architecture}, - year = {2002}, - address = {Boston, MA}, - month = {Feb} -} - -@misc{anderson97continuous, - Author = {J. Anderson and L. Berc and J. Dean and S. Ghemawat and M. Henzinger and S. Leung and D. Sites and M. Vandevoorde and C. Waldspurger and W. Weihl}, - Title = {Continuous profiling: Where have all the cycles gone}, - BookTitle = {Technical Note 1997-016. Digital Equipment - Corporation Systems Research Center, Palo Alto, Calif., July 1997}, - Year = "1997", -} - -@article{Roar:merten, - author = "Matthew C. Merten and Andrew R. Trick and Ronald D. Barnes and Erik M. Nystrom and Christopher N. George and John C. Gyllenhaal and Wen-mei W. Hwu", - title = "An Architectural Framework for Run-Time Optimization", - journal = "IEEE Transactions on Computers", - volume = "50", - pages = "567--589", - year = "2001" -} - -@inproceedings{WuLarus:MICRO94:StaticProfile, - author = {Youfeng Wu and James R. Larus}, - title = {Static branch frequency and program profile analysis}, - booktitle = MICRO, - year = {1994}, - isbn = {0-89791-707-3}, - pages = {1--11}, - location = {San Jose, California, United States}, - doi = {http://doi.acm.org/10.1145/192724.192725}, - } - -@inproceedings{BallLarus:PLDI93:StaticProfile, - author = "Thomas Ball and James R. Larus", - title = "Branch Prediction For Free", - booktitle = PLDI, - pages = "300-313", - year = "1993", - url = "citeseer.ist.psu.edu/ball93branch.html" } - -@inproceedings{Patterson:PLDI95:StaticProfile, - author = "Jason R. C. Patterson", - title = "Accurate Static Branch Prediction by Value Range Propagation", - booktitle = PLDI, - pages = "67-78", - year = "1995", - url = "citeseer.ist.psu.edu/patterson95accurate.html" } - -@InProceedings{Larus:WholeProgramPaths, - author = {James Larus}, - title = {Whole Program Paths}, - booktitle = PLDI, - year = {1999}, - month = {May} -} - -@InProceedings{arnold:jalapeno, - author = "Matthew Arnold and Stephen J. Fink and David Grove and Michael Hind and Peter F. Sweeney", - title = "{Adaptive optimization in the Jalape{\~n}o JVM}", - booktitle = OOPSLA, - pages = "47-65", - year = 2000 -} - -@inproceedings{arnold:pldi01, - author = "Matthew Arnold and Barbara G. Ryder", - title = "A Framework for Reducing the Cost of Instrumented Code", - booktitle = PLDI, - pages = "168--179", - year = "2001" -} - - - -@InProceedings{arnold:oopsla02, - author = "Matthew Arnold and Michael Hind and Barbara G. Ryder", - title = "Online Feedback-Directed Optimization of Java", - booktitle = OOPSLA, - month = Nov, - year = 2002 -} - -@InProceedings{Tracecache:ISCA98, - author = {Daniel H. Friendly and Sanjay J. Patel and Yale N. Patt}, - title = {Putting the Fill Unit to Work: Dynamic Optimizations for Trace Cache Microprocessors}, - booktitle = ISCA, - year = {1998}, - month = {June} -} - -%%============================================================================ -%% COMPILERS: PARALLEL: PARALLEL PROGRAMMING LANGUAGES -%%============================================================================ - - -@InProceedings{Cilk:PPOPP95, - Title = {Cilk: An Efficient Multithreaded Runtime System}, - Author = {Robert D. Blumofe and Christopher F. Joerg and - Charles E. Leiserson and Keith H. Randall and Yuli Zhou}, - BookTitle = "Proc. 5$^{th}$ {ACM} {SIGPLAN} Symp. on - Principles and Practice of Parallel Programming (PPOPP)", - Address = {Santa Barbara, CA}, - Month = Jul, - Year = 1995, - Pages = {207-216}, -} - - -@InProceedings{Cilk:PLDI98, - Title = {The Implementation of the {C}ilk-5 Multithreaded Language}, - Author = {M. Frigo and C. Leiserson and K. Randall}, - BookTitle = PLDI, - Address = Montreal, - Month = June, - Year = 1998, - Pages = {212-223}, - Annote = {CATEGORY: LANGUAGES: PARALLEL.} -} - -@InProceedings{CacheOblivious:FOCS99, - Title = {Cache-Oblivious Algorithms}, - Author = {Matteo Frigo and Charles E. Leiserson and Harald Prokop and S -ridhar Ramachandran}, - BookTitle = {40th Ann. Symp. Foundations of Computer Science}, - Address = {New York, USA}, - Month = Oct, - Year = 1999, - Pages = {17-18}, - Annote = {CATEGORY: LANGUAGES: PARALLEL.}} - - -%%============================================================================ -%% CATEGORY: ARCHITECTURES: SCALAR: CHIP PARALLELISM -%%============================================================================ - -@Article{BillionQ:Computer97, - author = {D. Burger and J. R. Goodman}, - title = {Billion-Transistor Architectures}, - journal = {IEEE Computer}, - year = {1997}, - volume = {30}, - number = {9}, - pages = {46-49}, - month = {Sept} -} - -@InProceedings{tullsen95smt, - author = {Dean M. Tullsen and Susan Eggers and Henry M. Levy}, - title = "{Simultaneous Multithreading: Maximizing On-Chip Parallelism}", - booktitle = ISCA, - pages = {392--403}, - month = {June}, - year = {1995} -} - -@article{olukotun96cmp, - author = {Kunle Olukotun and Basem A. Nayfeh and Lance Hammond and Ken - Wilson and Kunyung Chang}, - title = "{The case for a single-chip multiprocessor}", - journal = "{SIGPLAN Notices}", - volume = {31}, - number = {9}, - year = {1996}, - pages = {2--11}, -} - -@article{IntelHT:IJ02, - author = {Deborah T. Marr and Frank Binns and David L. Hill and - Glenn Hinton and David A. Koufaty and J. Alan Miller and - Michael Upton}, - title = "{Hyper-Threading Technology Architecture and Microarchitecture: - A Hypertext History}", - journal = "{Intel Technology Journal}", - volume = {6}, - number = {1}, - month = {Feb}, - year = {2002} -} - -@article{IMT, - author = {Il Park and Babak Falsafi and T. N. Vijaykumar}, - title = "{Implicitly-multithreaded processors}", - journal = "{SIGARCH Computer Architecture News}", - volume = {31}, - number = {2}, - year = {2003}, - pages = {39--51}, -} - -@InProceedings{IMT:ISCA03, - author = {Il Park and Babak Falsafi and T. N. Vijaykumar}, - title = "{Implicitly-multithreaded processors}", - booktitle = ISCA, - pages = {39--51}, - address = {San Diego, California}, - month = {June}, - year = {2003} -} - -@article{RAW:IEEE02, - author = {Michael Bedford Taylor and Jason Kim and Jason Miller and - David Wentzlaff and Fae Ghodrat and Ben Greenwald and - Henry Hoffmann and Paul Johnson and Jae-Wook Lee and Walter Lee and - Albert Ma and Arvind Saraf and Mark Seneski and Nathan Shnidman and - Volker Strumpen and Matt Frank and Saman Amarasinghe and - Anant Agarwal}, - title = "{The Raw Microprocessor: A Computational Fabric for Software - Circuits and General Purpose Programs}", - journal = MICRO, - month = {Mar/Apr}, - year = {2002} -} - -%%============================================================================ -%% CATEGORY: ARCHITECTURES: SCALAR: CHIP PARALLELISM, SPECULATIVE -%%============================================================================ - -@article{krishnan99tls, - author = {Venkata Krishnan and Josep Torrellas}, - title = "{A Chip-Multiprocessor Architecture with Speculative - Multithreading}", - journal = "{IEEE Transactions on Computers}", - volume = {48}, - number = {9}, - month = {Sep}, - year = {1999}, - pages = {866--880} -} - -@InProceedings{SpeculativeSync:ASPLOS02, - author = {by Jos\'{e} F. Mart\'{i}nez and Josep Torrellas}, - - title = {Speculative Synchronization: Applying Thread-Level Speculation to Explicitly Parallel Applications}, - booktitle = ASPLOS, - year = {2002}, - month = {Oct}} - - -@Article{FastCommInCMP:IPP01, - author = {Venkata Krishnan and Josep Torrellas}, - title = {The Need for Fast Communication in Hardware-Based - Speculative Chip Multiprocessors}, - journal = {International Journal of Parallel Processing}, - year = {2001}, - volume = {29}, - number = {1}, - pages = {3-33}, - month = {Feb}} - -@InProceedings{zilles02mssp, - author = {Craig Zilles and Gurindar S. Sohi}, - title = "{Master/slave speculative parallelization}", - booktitle = MICRO, - address = {Istanbul, Turkey}, - pages = {85--96}, - month = {Nov}, - year = {2002} -} - -@InProceedings{IntelHT:HelperThreads:CGO04, - author = {Dongkeun Kim and Steve Shih-wei Liao and Perry H. Wang and - Juan del Cuvillo and Xinmin Tian and Xiang Zou and Hong Wang and - Donald Yeung and Milind Girkar and John P. Shen}, - title = "{Physical Experimentation with Prefetching Helper Threads on - Intel's Hyper-Threaded Processors}", - booktitle = CGO, - address = {San Jose, California}, - month = {Mar}, - year = {2004} -} - -@InProceedings{Multiplex:ICS01, - author = {Chong-Liang Ooi and Seon Wook Kim and Il Park and Rudolf - Eigenmann and Babak Falsafi and T. N. Vijaykumar}, - title = {Multiplex: unifying conventional and speculative thread-level - parallelism on a chip multiprocessor}, - booktitle = ICS, - pages = {368--380}, - address = {Sorrento, Italy}, - year = {2001} -} - -@InProceedings{MultiScalar:ISCA95, - author = {Gurindar S. Sohi and Scott E. Breach and T. N. Vijaykumar}, - title = "{Multiscalar processors}", - booktitle = ISCA, - pages = {414--425}, - month = {June}, - year = {1995} -} - -@article{SpMT:TPDS04, - author = {Anasua Bhowmik and Manoj Franklin}, - title = "{A General Compiler Framework for Speculative Multithreaded - Processors}", - journal = "{IEEE Transactions on Parallel and Distributed Systems}", - pages = {713-724}, - volume = {15}, - number = {8}, - month = {Aug}, - year = {2004} -} - -@InProceedings{Hydra:ASPLOS98, - author = {Lance Hammond and Mark Willey and Kunle Olukotun}, - title = "{Data speculation support for a chip multiprocessor}", - booktitle = ASPLOS, - pages = {58--69}, - address = {San Jose, CA, USA}, - year = {1998} -} - -@InProceedings{Marcuello:ClusteredSpec:ICS99, - author = {Pedro Marcuello and Antonio Gonz\'{a}lez}, - title = "{Clustered Speculative Multithreaded Processors}", - booktitle = ICS, - pages = {365--372}, - month = {June}, - year = {1999} -} - -%%============================================================================ -%% CATEGORY: ARCHITECTURES: SCALAR: MULTIMEDIA -%%============================================================================ - - -@Article{MultimediaArch:Computer97, - author = {K. Dieffendorff and P. K. Dubey}, - title = {How Multimedia Workloads Will Change Processor Design}, - journal = {IEEE Computer}, - year = {1997}, - volume = {30}, - number = {9}, - pages = {43-45}, - month = {Sept} -} - - -@Article{Power4:IBMJRD02, - author = {J. M. Tendler and J. S. Dodson and J. S. {Fields, Jr.} and - H. Le and B. Sinharoy}, - title = "{The {POWER4} system microarchitecture}", - journal = "{IBM Journal of Research and Development}", - year = {2002}, - volume = {46}, - number = {1}, - pages = {5-26}, -} - -@Article{HyperThreading:IntelJournal02, - author = "{Intel Corp.}", - title = "{Special Issue on Intel HyperThreading Technology in - Pentium 4 Processors}", - journal = "Intel Technology Journal", - volume = "Q1", - year = "2002" -} - -@inproceedings{Ruf:PLDI00, - author = {Erik Ruf}, - title = {Effective synchronization removal for Java}, - booktitle = PLDI, - year = {2000}, - isbn = {1-58113-199-2}, - pages = {208--218}, - location = {Vancouver, British Columbia, Canada}, - doi = {http://doi.acm.org/10.1145/349299.349327}, - } - -@inproceedings{TalluriKong:ISCA92, - author = "Madhusudhan Talluri and Shing I. Kong and Mark D. Hill and David A. Patterson", - title = "Tradeoffs in Supporting Two Page Sizes", - booktitle = ISCA, - pages = "415-424", - year = "1992" -} - -@inproceedings{ChenBorg:ISCA92, - author = "J. Bradley Chen and Anita Borg and Norman P. Jouppi", - title = "A Simulation Based Study of {TLB} Performance", - booktitle = ISCA, - pages = "114-123", - year = "1992" -} - -@inproceedings{RomerOhlrich:ISCA95, - author = {Theodore H. Romer and Wayne H. Ohlrich and Anna R. Karlin and Brian N. Bershad}, - title = {Reducing TLB and memory overhead using online superpage promotion}, - booktitle = ISCA, - year = {1995}, - isbn = {0-89791-698-0}, - pages = {176--187}, - location = {S. Margherita Ligure, Italy}, - doi = {http://doi.acm.org/10.1145/223982.224419}, - address = {New York, NY, USA}, - } - -%%% This is the algorithm implemented by the ptrdist/ft benchmark. -@article{FredmanTarjan:JACM87, - author = {Michael L. Fredman and Robert Endre Tarjan}, - title = {Fibonacci heaps and their uses in improved network optimization algorithms}, - journal = JACM, - volume = {34}, - number = {3}, - year = {1987}, - issn = {0004-5411}, - pages = {596--615}, - address = {New York, NY, USA}, - } - -@article{UnionFind:JACM75, - author = {Robert Endre Tarjan}, - title = {Efficiency of a Good But Not Linear Set Union Algorithm}, - journal = {J. ACM}, - volume = {22}, - number = {2}, - year = {1975}, - issn = {0004-5411}, - pages = {215--225}, - doi = {http://doi.acm.org/10.1145/321879.321884}, - publisher = {ACM Press}, - address = {New York, NY, USA}, - } - -@inproceedings{Jouppi:ISCA90, - author = {Norman P. Jouppi}, - title = {Improving direct-mapped cache performance by the addition of a small fully-associative cache and prefetch buffers}, - booktitle = ISCA, - year = {1990}, - isbn = {0-89791-366-3}, - pages = {364--373}, - location = {Seattle, WA, USA}, - doi = {http://doi.acm.org/10.1145/325164.325162}, - address = {New York, NY, USA}, - } - -%%============================================================================ -%% CATEGORY: ARCHITECTURES: Processor Manuals -%%============================================================================ - -%%============================================================================ -%% CATEGORY: OPERATING SYSTEMS -%%============================================================================ - -@inproceedings{CacheKernel:OSDI94, - author = {David R. Cheriton and Kenneth J. Duda}, - title = {A caching model of operating system kernel functionality}, - booktitle = OSDI, - year = {1994}, - month = {November}, - pages = {179--193}, - address = {Monterey, CA, USA}, -} - -@inproceedings{Nooks:SOSP03, - author = {Michael M. Swift and Brian N. Bershad and Henry M. Levy}, - title = {Improving the reliability of commodity operating systems}, - booktitle = SOSP, - year = {2003}, - pages-comment = {207--222}, - location-comment = {Bolton Landing, NY, USA}, - publisher-comment = {ACM Press}, - address-comment = {New York, NY, USA}, - } - -@inproceedings{Ganapathy:CCS05, - address = {New York, NY, USA}, - author = {Ganapathy, Vinod and Jaeger, Trent and Jha, Somesh }, - booktitle = {CCS '05: Proceedings of the 12th ACM conference on Computer and communications security}, - pages = {330--339}, - publisher = {ACM Press}, - title = {Automatic placement of authorization hooks in the linux security modules framework}, - year = {2005} -} - -@inproceedings{AuthSyscalls, - author = "Mohan Rajagopalan and Matti Hiltunen and Trevor Jim and Richard Schlichting", - title = "Authenticated System Calls", - booktitle = "2005 International Conference on Dependable Systems and Networks (DSN'05)", - year = "2005"} - -@misc{provos02improving, - author = "N. Provos", - title = "Improving host security with system call policies", - text = "N. Provos. Improving host security with system call policies. Technical Report 02-3, CITI, November 2002.", - year = "2002", - url = {citeseer.ist.psu.edu/provos02improving.html} } - -@inproceedings{goldberg, - author = "Ian Goldberg and David Wagner and Randi Thomas and Eric A. Brewer", - title = "A Secure Environment for Untrusted Helper Applications", - booktitle = "Proceedings of the 6th Usenix Security Symp.", - address = "San Jose, CA, USA", - year = "1996", - url = "citeseer.ist.psu.edu/goldberg96secure.html" } - -@inproceedings{strata, - author = {Kevin Scott and Jack Davidson}, - title = {Safe Virtual Execution Using Software Dynamic Translation}, - booktitle = {ACSAC '02: Proceedings of the 18th Annual Computer Security Applications Conference}, - year = {2002}, - isbn = {0-7695-1828-1}, - pages = {209}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA} } - -@inproceedings{whitaker02scale, - author = "Andrew Whitaker and Marianne Shaw and Steven D. Gribble", - title = "Scale and Performance in the Denali Isolation Kernel", - booktitle = OSDI, - year = "2002", - month = {Dec}, - address = "Boston, MA", - url = {citeseer.ist.psu.edu/article/whitaker02scale.html} } - -@inproceedings{ Xen, - author = "B. Dragovic and K. Fraser and S. Hand and T. Harris and A. Ho and I. Pratt and A. Warfield and P. Barham and R. Neugebauer", - title = "Xen and the Art of Virtualization", - booktitle = SOSP, - year = 2003, - month = {October}, - address = {Bolton Landing, NY, USA}, - pages = {164--177}, - url = "citeseer.ist.psu.edu/dragovic03xen.html" } - -@phdthesis{hbench, - Author = {Aaron Brown}, - Title = {A Decompositional Approach to Computer System Performance}, - School = {Harvard College}, - Year = {1997}, - Month = {April} -} - -@Misc{VMWare:WHERE, - Author = {VMWare}, - Title = {{VMWare}}, - Year = {2006}, - Note = "http://www.vmware.com", - URL = "http://www.vmware.com" -} - -@Misc{webstone, - Author = {Mindcraft}, - Title = {Webstone: The Benchmark for Webservers}, - Year = {2002}, - Note = "http://www.mindcraft.com/webstone", - URL = "http://www.mindcraft.com/webstone" -} - -@Misc{abyss, Author = {Moez Mahfoudh}, - Title = {The {A}byss {W}ebserver}, - Year = {2000}, - Note = "http://abyss.sourceforge.net", - URL = "http://abyss.sourceforge.net" -} - -@Misc{thttpd, Author = {Jef Poskanze}, - Title = {thttpd - tiny/turbo/throttling HTTP server}, - Year = {2000}, - Note = "http://www.acme.com/software/thttpd", - url = "http://www.acme.com/software/thttpd" -} - -@Misc{ghttpd, Author = {Gareth Owen}, - Title = {GazTek Website}, - Year = {1999}, - Note = "http://gaztek.sourceforge.net/ghttpd", - url = "http://gaztek.sourceforge.net/ghttpd" -} - -@Misc{imapd, Author = {University of Washington}, - Title = {University of Washington IMAP Toolkit}, - Year = {2006}, - Note = "http://www.washington.edu/imap/", - url = "http://www.washington.edu/imap/" -} - -@Misc{netkit, - Author = {David A. Holland}, - Title = {NetKit}, - Year = {2000}, - Note = "http://www.hcs.harvard.edu/$\tilde{\ }$dholland/computers/netkit.html", - url = "http://www.hcs.harvard.edu/$\tilde{\ }$dholland/computers/netkit.html" -} - -@Misc{cfingerd, - Author = {Ken Hollis}, - Title = {CFingerd}, - Publisher = {Bitgate Software}, -} - -@Misc{sudo, - Author = {Todd Miller and Chris Jepeway and Aaron Spangler and Jeff Nieusma and Dave Hieb}, - Title = {sudo}, - Year = {2004}, - Note = "http://www.gratisoft.us/sudo/sudo.html", - url = "http://www.gratisoft.us/sudo/sudo.html" -} - -@Misc{OpenSSH, - Author = {The {OpenBSD} Project}, - Title = {OpenSSH}, - Year = {2006}, - Note = "http://www.openssh.com", - URL = "http://www.openssh.com" -} - -@Misc{ApacheServer, - Author = {"The Apache Software Foundation"}, - Title = {Apache}, - Year = {2007}, - Note = "http://www.apache.org", - URL = "http://www.apache.org" -} - -@Misc{OpenBSDManPages, - Title = {OpenBSD Manual Pages}, - Year = {2006}, - Note = "http://www.openbsd.org/cgi-bin/man.cgi", - url = "http://www.openbsd.org/cgi-bin/man.cgi" -} - -@Misc{wget, Author = {Hrvoje Niksic}, - Title = {{GNU} Wget}, - Year = {2006}, - Note = "http://www.gnu.org/software/wget/", - url = "http://www.gnu.org/software/wget/" -} - -@Misc{hbd, Author = {Pete Ryland}, - Title = {HomeBrew Decompiler}, - Year = {2002}, - Note = "http://pdr.cx/projects/hbd/", - url = "http://pdr.cx/projects/hbd/" -} - -@Misc{WU-FTPD, - Author = {WU-FTPD Development Group}, - Title = {WU-FTPD}, - Year = {2001}, - Note = "http://www.wu-ftpd.org/", - URL = "http://www.wu-ftpd.org/" -} - - -%%============================================================================ -%% CATEGORY: MISCELLANEOUS -%%============================================================================ -@article{ herlihy91waitfree, - author = "Maurice Herlihy", - title = "Wait-Free Synchronization", - journal = "ACM Transactions on Programming Languages and Systems", - volume = "13", - number = "1", - month = "January", - publisher = "ACM Press", - pages = "124--149", - year = "1991", - url = "citeseer.ist.psu.edu/herlihy93waitfree.html" } - - -@Article{Choices:CACM93, - author = {Roy Campbell and Nayeem Islam and Peter Madany - and David Raila}, - title = {Designing and Implementing {C}hoices: An Object-oriented - System in {C++}}, - journal = {Communications of the ACM}, - year = {1993}, - volume = {36}, - number = {9}, - pages = {36(9):117--126}, - OPTmonth = Sept, -} - - -@Misc{JSR121, - Title = "{JSR} 121", - Author = "{Java {C}ommunity {P}rocess}", - Year = "2003", - Note = "http://jcp.org/jsr/detail/121.jsp" -} - -@Book{AlphaHandbook:1998, - author = {{Compaq {C}omputer {C}orporation}}, - title = {Alpha Architecture Handbook}, - publisher = {Compaq {C}omputer {C}orporation}, - year = {1998}, -} - -@Book{PowerPC32:2001, - author = {Motorola, Inc.}, - title = {Programming Environments Manual for 32 Bit Implementations - of the {PowerPC} Architecture}, - publisher = {Motorola, Inc.}, - year = {2001}, -} - -@Book{ItaniumV2:2002, - author = {Intel Corporation}, - title = {Intel Itanium Architecture Software Developer's Manual}, - publisher = {Intel Corporation}, - volume = {2}, - year = {2002}, -} - -@article{KaffeOS:TOPLAS05, - author = {Godmar Back and Wilson C. Hsieh}, - title = {The {K}affe{OS} {J}ava runtime system}, - journal = TOPLAS, - volume = {27}, - number = {4}, - year = {2005}, - issn = {0164-0925}, - pages = {583--630}, - doi = {http://doi.acm.org/10.1145/1075382.1075383}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - - -@inproceedings{Singularity:Submitted05, - Author = {Mark Aiken and Paul Barham and Manuel Fahndrich and Galen Hunt and Orion Hodson and James Larus and Steven Levi and Nick Murphy and Bjarne Steensgaard and David Tarditi and Brian Zill}, - Title = {Uniform Extensibility in {S}ingularity using Software Isolated Processes}, - Booktitle = {Submitted for Publication}, - Year = {2005}, -} - -@TechReport{Singularity:TR04, - author = {Galen C. Hunt and James R. Larus}, - title = {Singularity {D}esign {M}otivation - ({S}ingularity {T}echnical {R}eport 1)}, - institution = {Microsoft Research}, - year = {2004}, - number = {MSR-TR-2004-105}, - month = {Dec}, -} -% address = {Redmond, WA}, - -@TechReport{Singularity:TR05, - author = {Galen C. Hunt and James R. Larus and Martín Abadi and Mark Aiken and Paul Barham and Manuel Fähndrich and Chris Hawblitzel Orion Hodson and Steven Levi and Nick Murphy and Bjarne Steensgaard and David Tarditi and Ted Wobber and Brian Zill}, - title = {An Overview of the {S}ingularity Project}, - institution = {Microsoft Research}, - year = {2005}, - number = {MSR-TR-2005-135}, - month = {October}, -} - -@InProceedings{JX:USENIX02, - Author = {Michael Golm and Meik Felser and Christian Wawersich and - Jurgen Kleinoder}, - Title = {The {JX} {O}perating {S}ystem}, - Booktitle = "Proc. {USENIX} Annual Technical Conference", - Pages = "45--58", - Address = "Monterey, CA, USA", - Month = {June}, - Year = {2002} -} - - -@Book{JavaOS:Book99, - author = {T. Saulpaugh and C. Mirho}, - title = {Inside the {J}ava{OS} {O}perating {S}ystem. }, - publisher = {Addison-Wesley}, - isbn = {0201183935}, - address = {Reading, MA, USA}, - year = {1999}, -} - -@inproceedings{JKernel:Usenix98, - author = {Chris Hawblitzel and Chi-Chao Chang and Grzegorz - Czajkowski and Deyu Hu and Thorsten {von Eicken}}, - title = {Implementing Multiple Protection Domains in {Java}}, - booktitle = {{USENIX} Annual Technical Conference}, - month = jun, - year = 1998, - url = {citeseer.ifi.unizh.ch/hawblitzel98implementing.html}, - url = {http://citeseer.nj.nec.com/hawblitzel98implementing.html} } - % address = {New Orleans, LA}, - % pages = {259--270}, - -@inproceedings{JRes:OOPSLA98, - author = "Grzegorz Czajkowski and Thorsten von Eicken", - title = "{JRes}: {A} Resource Accounting Interface for {J}ava", - booktitle = OOPSLA, - pages = "21--35", - year = 1998, - url = "citeseer.ist.psu.edu/czajkowski98jres.html" } - -%%============================================================================ -%% GARBAGE COLLECTION -%%============================================================================ -@misc{ hirzel03connectivitybased, - author = "M. Hirzel and A. Diwan and M. Hertz", - title = "Connectivity-based garbage collection", - text = "M. Hirzel, A. Diwan, and M. Hertz, Connectivity-based garbage collection, - in ACM Conference on Object-Oriented Programming Systems, Languages, and - Applications, Oct. 2003, pp. 359--373.", - year = "2003", - url = "citeseer.ist.psu.edu/article/hirzel04connectivitybased.html" } - - -@inproceedings{conf-c++-AttardiF94, - author = {Giuseppe Attardi and - Tito Flagella}, - title = {A Customisable Memory Management Framework.}, - booktitle = {C++ Conference}, - year = {1994}, - pages = {123-142}, - ee = {http://www.usenix.org/publications/library/proceedings/c++94/attardi.html}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - - -@article{journals-spe-AttardiFI98, - author = {Giuseppe Attardi and - Tito Flagella and - Pietro Iglio}, - title = {A Customisable Memory Management Framework for C++.}, - journal = {Softw., Pract. Exper.}, - volume = {28}, - number = {11}, - year = {1998}, - pages = {1143-1183}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - -@inproceedings{conf-pldi-BarrettZ93, - author = {David A. Barrett and - Benjamin G. Zorn}, - title = {Using Lifetime Predictors to Improve Memory Allocation Performance.}, - booktitle = {PLDI}, - year = {1993}, - pages = {187-196}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - - -@techreport{ joel88compacting, - author = "Bartlett, Joel F.", - title = "Compacting Garbage Collection with Ambiguous Roots", - number = "88/2", - year = "1988", - url = "citeseer.ist.psu.edu/bartlett88compacting.html" } - -@techreport{ bartlett89mostlycopying, - author = "Joel F. Bartlett", - title = "Mostly-{C}opying Garbage Collection picks up Generations and {C++}", - volume = "TN--12", - year = "1989", - url = "citeseer.ist.psu.edu/bartlett89mostlycopying.html" } - - -@article{journals-csur-Cohen81, - author = {Jacques Cohen}, - title = {Garbage Collection of Linked Data Structures.}, - journal = {ACM Comput. Surv.}, - volume = {13}, - number = {3}, - year = {1981}, - pages = {341-367}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - - -@article{journals-spe-DetlefsDZ94, - author = {David Detlefs and - Al Dosser and - Benjamin G. Zorn}, - title = {Memory Allocation Costs in Large C and C++ Programs.}, - journal = {Softw., Pract. Exper.}, - volume = {24}, - number = {6}, - year = {1994}, - pages = {527-542}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - - -@inproceedings{conf-c++-EllisD94, - author = {John R. Ellis and - David Detlefs}, - title = {Safe, Efficient Garbage Collection for C++.}, - booktitle = {C++ Conference}, - year = {1994}, - pages = {143-178}, - ee = {http://www.usenix.org/publications/library/proceedings/c++94/ellis.html}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - -@article{journals-iandc-TofteT97, - author = {Mads Tofte and - Jean-Pierre Talpin}, - title = {Region-based Memory Management.}, - journal = {Inf. Comput.}, - volume = {132}, - number = {2}, - year = {1997}, - pages = {109-176}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - -@article{journals-spe-Zorn93, - author = {Benjamin G. Zorn}, - title = {The Measured Cost of Conservative Garbage Collection.}, - journal = {Softw., Pract. Exper.}, - volume = {23}, - number = {7}, - year = {1993}, - pages = {733-756}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - - -@inproceedings{conf-lfp-Zorn90, - author = {Benjamin G. Zorn}, - title = {Comparing Mark-and-Sweep and Stop-and-Copy Garbage Collection.}, - booktitle = {LISP and Functional Programming}, - year = {1990}, - pages = {87-98}, - ee = {http://doi.acm.org/10.1145/91556.91597}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - -@Misc{DSA:PLDI06Submission, - author = {Chris Lattner and Vikram Adve}, - title = {Data Structure Analysis: A Fast, Flow-insensitive Algorithm for Analyzing Linked Data Structures.}, - howpublished = "Submitted for publication", - month = Nov, - year = {2005} -} - - -@InProceedings{YiAdveKennedy:PLDI2000, - author = {Qing Yi and Vikram Adve and Ken Kennedy}, - title = {Transforming Loops To Recursion for Multi-Level Memory Hierarchies}, - booktitle = PLDI, - year = {2000}, - OPTaddress = {Vancouver, Canada}, - OPTmonth = {June}, -} - -@InProceedings{SingularityChannels:Eurosys06, - author = {Manuel Fahndrich and Mark Aiken and Chris Hawblitzel and Orion Hodson and Galen C. Hunt and James R. Larus and Steven Levi}, - title = {Language Support for Fast and Reliable Message-based Communication in {S}ingularity {OS}}, - booktitle = {Proceedings of EuroSys}, - year = {2006}, - OPTaddress = {Belgium}, - OPTmonth = {April} -} - - -@inproceedings{ PCC:OSDI96, - author = "George C. Necula and Peter Lee", - title = "Safe Kernel Extensions Without Run-Time Checking", - booktitle = OSDI, - publisher-comment = "USENIX", - address-comment = "Berkeley, CA, USA", - editor-comment = "{USENIX}", - pages-comment = "229--243", - year = "1996", - url = "citeseer.ist.psu.edu/necula96safe.html" } - - -@inproceedings{LLVAOS:WIOSCA06, - author = "John Criswell and Brent Monroe and Vikram Adve", - title = "A Virtual Instruction Set Interface for Operating System Kernels", - booktitle = WIOSCA, - year = {2006}, - address = {Boston, MA, USA}, - month = {June}, - pages = {26--33}, -} - -@inproceedings{LLVAOS:Anon06, - author = "Anonymous", - title = " Details omitted for double-blind reviewing", - booktitle = "Workshop paper", - year = {2006}, -} - - -@inproceedings{378846, - author = {Thomas Ball and Rupak Majumdar and Todd Millstein and Sriram K. Rajamani}, - title = {Automatic predicate abstraction of C programs}, - booktitle = PLDI, - year = {2001}, - isbn = {1-58113-414-2}, - pages = {203--213}, - location = {Snowbird, Utah, United States}, - doi = {http://doi.acm.org/10.1145/378795.378846}, - publisher = {ACM Press}, - address = {New York, NY, USA}, -} - -@inproceedings{o'callahan97lackwit, - author = {Robert O'Callahan and Daniel Jackson}, - title = {Lackwit: a program understanding tool based on type inference}, - booktitle = ICSE, - year = {1997}, - isbn = {0-89791-914-9}, - pages = {338--348}, - location = {Boston, Massachusetts, United States}, - doi = {http://doi.acm.org/10.1145/253228.253351}, - publisher = {ACM Press}, - address = {New York, NY, USA}, - } - -@Misc{LLVM:Bossa07, - title = {The {LLVM Compiler} System}, - author = {Chris Lattner}, - address = {Recife, Brazil}, - month-comment = {March}, - year = {2007}, - howpublished1-comment = {{\rm Presentation at the} 2007 Bossa Conference on Open Source, Mobile Internet and Multimedia}, - howpublished = {Bossa Conference on Open Source, Mobile Internet and Multimedia}, - note = {http://llvm.org/pubs/2007-03-12-BossaLLVMIntro.html}, - url = {http://llvm.org/pubs/2007-03-12-BossaLLVMIntro.html}, -} - - -@Misc{LLVMLinkTimeOpt:URL, - title = {LLVM Link Time Optimization: Design and Implementation}, - author = {Devang Patel}, - year = {2006}, - howpublished = {LLVM Developer Documentation}, - note = {Available at {\tt http://llvm.org/docs/LinkTimeOptimization.html}}, -} - -@article{TagsAndTypes:SIGPLAN87, - author = {Steenkiste, Peter and Hennessy, John}, - title = {Tags and type checking in LISP: hardware and software approaches}, - journal = {SIGPLAN Not.}, - volume = {22}, - number = {10}, - year = {1987}, - issn = {0362-1340}, - pages = {50--59}, - doi = {http://doi.acm.org/10.1145/36205.36183}, - publisher = {ACM}, - address = {New York, NY, USA}, -} - -@inproceedings{CVC3, - author = "Clark Barrett and Cesare Tinelli", - title = "{CVC3}", - booktitle = "Proceedings of the $19^{th}$ International Conference on Computer Aided Verification (CAV '07)", - series = "Lecture Notes in Computer Science", - volume = 4590, - publisher = "Springer-Verlag", - editor = "Werner Damm and Holger Hermanns", - pages = "298--302", - month = jul, - year = 2007, - note = "Berlin, Germany" -} - -@misc{CVC3Manual, - title = {The {CVC3} User's Manual}, - note = "http://www.cs.nyu.edu/acsys/cvc3/doc/user\_doc.html" -} - -@inproceedings{Z3, - author = "Leonardo de Moura and Nikolaj Bjørner", - title = "{Z3}: An Efficient {SMT} Solver", - booktitle = "Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS)", - year = 2008, - note = "Budapest, Hungary" -} - -@inproceedings{Zhang:ICSE03, - author = {Zhang, Xiangyu and Gupta, Rajiv and Zhang, Youtao}, - title = {Precise dynamic slicing algorithms}, - booktitle = {Proceedings of the 25th International Conference on Software Engineering}, - series = {ICSE '03}, - year = {2003}, - isbn = {0-7695-1877-X}, - location = {Portland, Oregon}, - pages = {319--329}, - numpages = {11}, - url = {http://dl.acm.org/citation.cfm?id=776816.776855}, - acmid = {776855}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} - -@article{Korel:IPL88, - author = {Korel, B. and Laski, J.}, - title = {Dynamic program slicing}, - journal = {Inf. Process. Lett.}, - volume = {29}, - issue = {3}, - month = {October}, - year = {1988}, - issn = {0020-0190}, - pages = {155--163}, - numpages = {9}, - url = {http://dl.acm.org/citation.cfm?id=56378.56386}, - doi = {10.1016/0020-0190(88)90054-3}, - acmid = {56386}, - publisher = {Elsevier North-Holland, Inc.}, - address = {Amsterdam, The Netherlands, The Netherlands}, -} - -@Book{AllenKennedy, - author = "R. Allen and K. Kennedy", - title = "{Optimizing Compilers for Modern Architectures}", - publisher = "Morgan Kaufmann Publishers, Inc.", - address = "San Francisco, CA", - year = "2002" -} - - -@inproceedings{JoKulkarni:OOPSLA11, - author = {Jo, Youngjoon and Kulkarni, Milind}, - title = {Enhancing locality for recursive traversals of recursive structures}, - booktitle = {Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications}, - series = {OOPSLA '11}, - year = {2011}, - isbn = {978-1-4503-0940-0}, - location = {Portland, Oregon, USA}, - pages = {463--482}, - numpages = {20}, - url = {http://doi.acm.org/10.1145/2048066.2048104}, - doi = {http://doi.acm.org/10.1145/2048066.2048104}, - acmid = {2048104}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {irregular programs, locality transformations, tree traversals}, -} - - @InProceedings{PointerComp:MSP05, - author = {Chris Lattner and Vikram Adve}, - title = "{Transparent Pointer Compression for Linked Data Structures}", - booktitle = "{Proceedings of the ACM Workshop on Memory System Performance (MSP'05)}", - address = {Chigago, Illinois}, - month = {June}, - year = {2005} - } diff --git a/cfar-report/pact.bib b/cfar-report/pact.bib deleted file mode 100644 index 318f5a87ef8e28975f04ae0edda16d5afe09d9bd..0000000000000000000000000000000000000000 --- a/cfar-report/pact.bib +++ /dev/null @@ -1,1295 +0,0 @@ -@misc{SCC, - Howpublished = {\url{http://http://techresearch.intel.com/ProjectDetails.aspx?Id=1}}, - Title = {Intel Research: Single-Chip Cloud Computer}} - -@inproceedings{Albert-gpu, - author = {Albert Sidelnik and I-JUi Sung and Wanmin Wu and Maria J. Garzaran and Wen-mei Hwu and Klara Nahrstedt and David Padua and Sanjay J. Patel}, - title = "{Optimization of Tele-Inmersion Codes. In the second Workshop on General-Purpose Computation on Graphics Processing Units}", - booktitle = {Second Workshop on General-Purpose Computation on Graphics Processing Units, in conjunction with ASPLOS}, - year = {2009} - } -@inproceedings{chapelhotpar, - author = {Bradford L. Chamberlain and Steven J. Deitz and David Iten and Sung-Eun ChoiJ}, - title = "{User-Defined Distributions and Layouts in Chapel: Philosophy and Framework}", - booktitle = {Proc.\ of the USENIX Workshop on Hot Topics in Parallelism}, - year = {2010}, - month = {June}, -} - -@article{bsp1, - author = {Valiant, Leslie G.}, - title = {A bridging model for parallel computation}, - journal = {Commun. ACM}, - volume = {33}, - number = {8}, - year = {1990}, - issn = {0001-0782}, - pages = {103--111}, - } -@ARTICLE{bsp2, - author = {Jonathan M. D. Hill and Bill Mccoll and Dan C. Stefanescu and Mark W. Goudreau and Kevin Lang and Satish B. Rao and Torsten Suel and Thanasis Tsantilas and Rob Bisseling}, - title = {BSPlib - The BSP Programming Library}, - journal = {Parallel Computing}, - year = {1997}, - volume = {24} -} -@book{dh-pc-01, -keyent = {dh-pc-01}, -author = "R. O. Duda and P. E. Hart and D. G. Stork", -title = "Pattern Classification", -edition = {2nd}, -publisher = "Wiley-Interscience", -address = "New York", -year = 2001 -} - -@article{Gustavson, - author = {Gustavson, F. G.}, - title = "{High-performance Linear Algebra Algorithms Using New Generalized Data Structures for Matrices}", - journal = {IBM J. Res. Dev.}, - volume = {47}, - number = {1}, - year = {2003}, - issn = {0018-8646}, - pages = {31--55}, - publisher = {IBM Corp.}, - address = {Riverton, NJ, USA}, - } - -@inproceedings{guo:htas:ppopp:08, - author = {Jia Guo and Ganesh Bikshandi and Basilio B.\ Fraguela and Mar{\'i}a J. Garzar{\'a}n and David Padua}, - title = "{Programming with Tiles}", - booktitle = {Proc.\ of the ACM SIGPLAN Symp.\ on Principles and Practice of Parallel Programming}, - year = {2008}, - pages = {111--122}, - month = {Feb}, -} - -@inproceedings{, - author = {Ganesh Bikshandi and Jia Guo and Dan Hoeflinger and Gheorghe Almasi and Basilio B. Fraguela and Mar{\'i}a J. Garzar{\'a}n and David Padua and Christoph von Praun}, - title = "{Programming for Parallelism and Locality with Hierarchically Tiled Arrays}", - booktitle = {Proc.\ of the ACM SIGPLAN Symp.\ on Principles and Practice of Parallel Programming}, - year = {2006}, - pages = {48--57}, -} - -@inproceedings{bikshandi:htas:lcpc:06, - author = {Ganesh Bikshandi and Jia Guo and Christoph von Praun and Gabriel Tanase and Basilio B. Fraguela and Mar{\'i}a J. Garzar{\'a}n and David Padua and Lawrence Rauchwerger}, - title = {Design and Use of htalib - a Library for {Hierarchically Tiled Arrays}}, - booktitle = { Proc. of the Intl.\ Workshop on Languages and Compilers for Parallel Computing}, - year = {2006}, - pages = {17--32}, - month = {Nov}, -} - -@article{Flame, - author = "Paolo Bientinesi and John A. Gunnels and Margaret E. Myers and - Enrique S. Quintana-Ort\'{i} and Robert A. van de Geijn", - title = "{The Science of Deriving Dense Linear Algebra Algorithms}", - journal = "{ACM} Trans. Math. Softw.", - volume = "31", - number = "1", - month = mar, - year = "2005", - pages = "1--26", -} - -@article{flame-api, - author = {Paolo Bientinesi and Enrique S. Quintana-Ort\'{\i} and Robert A. van de Geijn}, - title = {Representing linear algebra algorithms in code: the {FLAME} application program interfaces}, - journal = {ACM Trans. Math. Softw.}, - volume = {31}, - number = {1}, - year = {2005}, - issn = {0098-3500}, - pages = {27--59}, - doi = {http://doi.acm.org/10.1145/1055531.1055533}, - publisher = {ACM Press}, - address = {New York, NY, USA}, - } - - -@inproceedings{oblivious, - author = {Matteo Frigo and Charles E. Leiserson and Harald Prokop and Sridhar Ramachandran}, - title = {Cache-Oblivious Algorithms}, - booktitle = {FOCS '99: Proceedings of the 40th Annual Symposium on Foundations of Computer Science}, - year = {1999}, - isbn = {0-7695-0409-4}, - pages = {285}, - } - -@book{lapack, - author = {Anderson, E. and Bai, Z. and Bischof, C. and - Blackford, S. and Demmel, J. and Dongarra, J. and - Du Croz, J. and Greenbaum, A. and Hammarling, S. and - McKenney, A. and Sorensen, D.}, - title = {{LAPACK} Users' Guide}, - edition = {Third}, - publisher = {Society for Industrial and Applied Mathematics}, - year = {1999}, - address = {Philadelphia, PA}, - isbn = {0-89871-447-8 (paperback)} } - -@book{ fox, - author = {Geoffrey C. Fox and Mark A. Johnson and Gregory A. Lyzenga and Steve W. Otto and John K. Salmon and David W. Walker}, - title = "{Solving Problems on Concurrent Processors. Vol. 1: General Techniques and Regular Problems}", - year = {1988}, - isbn = {0-13-823022-6}, - publisher = {Prentice-Hall, Inc.}, -} - -@book{halstead, - author = {Halstead,Maurice H.}, - year = {1977}, - title = {Elements of Software Science}, - publisher = {Elsevier}, - OPTaddress = {New York} -} - -@Book{reinders:tbb:2007, - author = {James Reinders}, - title = {Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism}, - publisher = {O'Reilly}, - year = {2007}, - edition = {1}, - month = {July} -} - -@article{maCabe, - author = {McCabe}, - year = {1976}, - title = "{A Complexity Measure}", - journal = {IEEE Transactions on Software Engineering}, - volume = {2}, - pages = {308-320} -} - -@book{Geist94pvm, - author = "A. Geist and A. Beguelin and J. Dongarra and W. Jiang and R. Manchek and V. S. Sunderamet", - title = "{PVM}: Parallel Virtual Machine: {A} Users' Guide and Tutorial for Networked Parallel Computing", - publisher = "MIT Press", - isbn = "0-262-57108-0 (paperback)", - pages = "xvii + 279", - year = "1994", -} - - -@inproceedings{fortranD, - author = {Seema Hiranandani and Ken Kennedy and Chau-Wen Tseng}, - title = "{Compiler Optimizations for {Fortran D} on {MIMD} Distributed-memory Machines}", - booktitle = {Supercomputing '91: Proceedings of the 1991 ACM/IEEE conference on Supercomputing}, - year = {1991}, - isbn = {0-89791-459-7}, - pages = {86--100}, - } - -@phdthesis{bikshandi:phd, - author = {Ganesh Bikshandi}, - title = "{Parallel Programming with Hierarchically Tiled Arrays}", - school = {UIUC}, - year = 2007, -} - -@book{GrES99, - author = "W. Gropp and E. Lusk and A. Skjellum", - title = "{Using MPI (2nd ed.): Portable Parallel Programming with the Message-Passing Interface}", - year = {1999}, - isbn = {0-262-57132-3}, - publisher = {MIT Press}, - } - -@article{NuRe98, - author = "R. W. Numrich and J. Reid", - title = "{Co-array Fortran for Parallel Programming}", - journal = {SIGPLAN Fortran Forum}, - volume = {17}, - number = {2}, - year = {1998}, - pages = {1--31}, - publisher = {ACM Press}, -} - -@TechReport{CDCY99, - author = {W.~Carlson and J.~Draper and D.~Culler and K.~Yelick and E.~Brooks and K.~Warren}, - title = "{Introduction to UPC and Language Specification}", - institution = {IDA Center for Computing Sciences}, - year = {1999}, - number = {CCS-TR-99-157}, -} - -@TechReport{veldhuizen99techniques, - author = {T. Veldhuizen}, - title = {Techniques for Scientific {C++}}, - institution = {Department of Computer Science, Indiana University}, - year = {2000}, - number = {TR542}, -} - -@article{HiKT92, - author = {S. Hiranandani and K. Kennedy and C.-W. Tseng}, - title = "{Compiling Fortran D for MIMD Distributed-memory Machines}", - journal = {Commun. ACM}, - volume = {35}, - number = {8}, - year = {1992}, - issn = {0001-0782}, - pages = {66--80}, - publisher = {ACM Press}, - } - -@article{KoMe92, - author = {C. Koelbel and P. Mehrotra}, - title = "{An Overview of High Performance Fortran}", - journal = {SIGPLAN Fortran Forum}, - volume = {11}, - number = {4}, - year = {1992}, - pages = {9--16}, - publisher = {ACM Press}, - } - -@InProceedings{HTA1, - author = "G. Almasi and L. De Rose and B. B. Fraguela and J. Moreira and D. Padua", - title = "{Programming for Locality and Parallelism with Hierarchically Tiled Arrays}", - booktitle = "Proc.\ of LCPC 2003", - pages = "162--176", - year = "2003", - address = "College Station, Texas", - publisher = "Springer-Verlag", - series = "LCNS", - volume = "2958", - month = "Oct", - isbn = "3-540-21199-3", -} - -@PhdThesis{Cannon, - author = {L.E. Cannon}, - title = "{A Cellular Computer to Implement the Kalman Filter Algorithm}", - school = {Montana State University}, - year = {1969}, -} - - -@Article{Summa, - author = "R. A. Van De Geijn and J. Watts", - title = "{SUMMA: Scalable Universal Matrix Multiplication Algorithm}", - journal = "Concurrency: Practice and Experience", - volume = "9", - number = "4", - pages = "255--274", - month = "Apr", - year = "1997", - CODEN = "CPEXEI", - ISSN = "1040-3108", -} - -@article{zpl, -author = "B.L. Chamberlain and S.Choi and E.C. Lewis and C. Lin and L. Synder and W.D. Weathersby", -title = "{The Case for High Level Parallel Programming in {ZPL}}", -journal = "IEEE Computational Science and Engineering", -volume = "5", -number = "3", -pages = "76--86", -month = "July--September", -year = "1998", -} - -@misc{mkl, - title="{I}ntel {M}ath {K}ernel {L}ibrary", - note= "http://www.intel.com/cd/software/products/asmo-na/eng/perflib/mkl/index.htm", -} - -@misc{htawebsite, - title="{H}ierarchically {T}iled {A}rrays", - note= "http://polaris.cs.uiuc.edu/hta/", -} -@misc{nas, - title="{NAS} {P}arallel {B}enchmarks", - howpublished="Website", - note= "http://www.nas.nasa.gov/Software/NPB/", -} - -@misc{hpf, - author = "{High Performance Fortran Forum}", - title = "{H}igh {P}erformance {F}ortran Specification Version 2.0", - month = "January", - year = "1997", -} - -@incollection{reynders96pooma, - author = "John V. W. Reynders and Paul J. Hinker and Julian C. Cummings and Susan R. Atlas and Subhankar Banerjee and William F. Humphrey and Steve R. Karmesin and Katarzyna Keahey and Marikani Srikant and Mary Dell Tholburn", - title = "{{POOMA}: {A} {F}ramework for {S}cientific {S}imulations of {P}aralllel {A}rchitectures}", - booktitle = "Parallel Programming in C++", - publisher = "MIT Press", - OPTeditor = "Gregory V. Wilson and Paul Lu", - pages = "547--588", - year = "1996", -} - -@InProceedings{POET, - author = "R. C. Armstrong and A. Cheung", - title = "{POET (Parallel Object-oriented Environment and Toolkit) and Frameworks for Scientific Distributed Computing}", - booktitle = "Proc.\ of 30th Hawaii International Conference on System Sciences (HICSS 1997)", - pages = "54--63", - address = "Maui, Hawai", - year = "1997", -} - -@InProceedings{quicksort, - author = "B. Wager", - title = "{Hyperquicksort: A Fast Algorithm for Hypercubes}", - booktitle = "Hypercube Multiprocessors", - year = "1987", - pages = "292-299", - address = "Philadelphia, PA", - publisher = "SIAM", -} - -@article{McKellar, - author = {A. C. McKellar and E. G. Coffman, Jr.}, - title = "{Organizing Matrices and Matrix Operations for Paged Memory Systems}", - journal = {Communications of the ACM}, - volume = {12}, - number = {3}, - year = {1969}, - issn = {0001-0782}, - pages = {153--165}, - doi = {http://doi.acm.org/10.1145/362875.362879}, - publisher = {ACM Press}, -} - -@inproceedings{Wolf, - author = {Michael E. Wolf and Monica S. Lam}, - title = "{A Data Locality Optimizing Algorithm}", - booktitle = {Proc. of the Conf. on Programming Language Design and Implementation}, - year = {1991}, - isbn = {0-89791-428-7}, - pages = {30--44}, - location = {Toronto, Ontario, Canada}, - doi = {http://doi.acm.org/10.1145/113445.113449}, -} - -@inproceedings{Adve , - author = {Vikram Adve and John Mellor-Crummey}, - title = "{Using Integer Sets for Data-parallel Program Analysis and Optimization}", - booktitle = {Proc. of the Conf. on Programming Language Design and Implementation}, - year = {1998}, - isbn = {0-89791-987-4}, - pages = {186--198}, - location = {Montreal, Quebec, Canada}, - doi = {http://doi.acm.org/10.1145/277650.277721}, - publisher = {ACM Press}, -} - -@article{Sturler, - author = "E. de Sturler and D. Loher", - title = "Parallel iterative solvers for irregular sparse matrices in {High Performance Fortran}", - journal = "Future Generation Computer Systems", - volume = "13", - number = "4--5", - pages = "315--325", - year = "1998", - url = "citeseer.nj.nec.com/desturler97parallel.html" -} - -@inproceedings{WYSIWYG, - author = {Chamberlain, B.L. and Lin, C. and Sung-Eun Choi and Snyder, L. and Lewis, E.C. and Weathersby, W.D.}, - title = "{ZPL's WYSIWYG Performance Model}", - booktitle = {Procs. of the High-Level Parallel Programming Models and Supportive Environments}, - year = {1998}, - isbn = {0-8186-8412-7}, - pages = {50--61}, - publisher = {IEEE Computer Society}, - } - -@PhdThesis{NgoThesis, - author = {Ton Anh Ngo}, - title = "{The Role of Performance Models in Parallel Programming and Languages}", - year = {1997}, - school = {Department of Computer Science and Engineering, University of Washington}, -} - -@article{bodin93pcxx, - author = {FRANÇOIS Bodin and Peter Beckman and Dennis Gannon and Srinivas Narayana and Shelby X. Yang}, - title = "{D}istributed p{C}++: {B}asic {I}deas for an object parallel language", - journal = "Scientific Programming", - volume = "2", - number = "3", - pages = "7--22", - year = "1993", -} - -@techreport{trefethen96multimatlab, - author = "A. E. Trefethen and V. S. Menon and C. Chang and G. Czajkowski and C. Myers and L. N. Trefethen", - title = "{Multi{MATLAB}: {MATLAB} on Multiple Processors}", - number = "TR96-1586", - month = "May", - year = "1996", -} - -@inproceedings{matlabSp, - author = "P. Husbands and C. Isbell", - title = "{Matlab*p: A Tool for Interactive Supercomputing}", - booktitle = {Procs. of the Ninth SIAM Conference on Parallel Processing for Scientific Computing}, - year = {1999}, -} - - -@ARTICLE{Choy:05, - AUTHOR = {Ron Choy and Alan Edelman}, - TITLE = {Parallel {MATLAB}: Doing it Right}, - JOURNAL = {Proceedings of the IEEE}, - VOLUME = {93}, - NUMBER = 2, - YEAR={2005}, - NOTE = {special issue on "Program Generation, Optimization, and Adaptation"} -} - -@techreport{rstls, - AUTHOR = {E. Barszcz and R. Fathoohi and V. Venkatakrishnan and S. Weeratunga}, - TITLE = "{Solution of Regular, Sparse Triangular Linear Systems on Vector and Distributed-Memory Multiprocessor}", - NUMBER = "RNR-93-007", - MONTH = "April", - YEAR="1993", - INSTITUTION = "NASA Ames Research Center", -} - - -@techreport{nashpf, - AUTHOR = {M. Frumkin and H. Jin and J. Yan}, - TITLE = "{Implementation of NAS parallel benchmarks in High Performance Fortran}", - NUMBER = "NAS-98-009", - MONTH = "September", - YEAR="1998", - INSTITUTION = "NAS Technical Report", -} - -@inproceedings{titanium, - author = {K. A. Yelick and L. Semenzato and G. Pike and C. Miyamoto and B. Liblit and A. Krishnamurthy and P. N. Hilfinger and S. L. Graham and D. Gay and P. Colella and A. Aiken}, - title = "{Titanium: A High-Performance Java Dialect}", - booktitle = {Workshop on Java for High-Performance Network Computing}, - month="February", - year = {1998} - } - -@inproceedings{stapl, - author = {An, Ping and Jula, Alin and Rus, Silvius and Saunders, Steven and Smith, Tim and Tanase, Gabriel and Thomas, Nathan and Amato, Nancy and Rauchwerger, Lawrence}, - title = "{STAPL: An Adaptive, Generic Parallel Programming Library for C++}", - booktitle = {Proc. of LCPC}, - pages="193-208", - month="August", - year = {2001} - } - -@inproceedings{cytron, - author = {R. Cytron}, - title = "{Doacross: Beyond Vectorization for Multiprocessors}", - booktitle = {ICPP}, - pages="836-844", - year = {1986} - } - -@book{wolfe, - author = "M. Wolfe", - title = "{High Performance Compilers for Parallel Computing}", - year = {1996}, - publisher = {Addison-Wesley} - } - -@article{matlabsparse, - author = {J.R. Gilber and C. Moler and R. Schreiber}, - title = "{Sparse Matrices in MATLAB: Design and Implementation}", - journal = {SIMAX}, - volume={13}, - number=1, - pages="333-356", - month="January", - year = {1992} - } - -@InProceedings{burns94:_lam, - author = {Greg Burns and Raja Daoud and James Vaigl}, - title = {{LAM}: {A}n {O}pen {C}luster {E}nvironment for {MPI}}, - booktitle = {Proceedings of Supercomputing Symposium}, - pages = {379--386}, - year = {1994}, -} - -@book{knuth, - author = "Donald E. Knuth", - title = "{The Art of Computer Programming}", - volume = {2}, - publisher = {Addison-Wesley} -} - -@article{Hoare78, - author = {C. A. R. Hoare}, - title = {Communicating sequential processes}, - journal = {Commun. ACM}, - volume = {21}, - number = {8}, - year = {1978}, - issn = {0001-0782}, - pages = {666--677}, - publisher = {ACM Press}, - address = {New York, NY, USA}, - } - -@inproceedings{GAsSc94, - author = {J. Nieplocha and R. J. Harrison and R. J. Littlefield}, - title = {Global Arrays: a Portable Shared-memory Programming Model for Distributed Memory Computers}, - booktitle = {Proc. of Supercomputing'94}, - year = {1994}, - pages = {340--ff.}, - } - -@inproceedings{X10OOPSLA05, - author = {P. Charles and Ch. Donawa and K. Ebcioglu and Ch. Grothoff and A. Kielstra and Ch. von Praun and V. Saraswat and V.\ Sarkar}, - title="{X10: An Object-oriented Approach to Non-uniform Cluster Computing}", - booktitle = {Procs.\ of the Conf. on Object-Oriented Programming, -Systems, Languages, and Applications (OOPSLA) -- Onward! Track}, - year = {2005}, - month = {Oct}, -} - -@TechReport{ZPLTaskPar, - author = {S. J. Deitz}, - title = "{Renewed Hope for Data Parallelism: Unintegrated Support for Task Parallelism in ZPL}", - institution = {University of Washington}, - year = {2003}, - month = {Dec}, - number = {UW-CSE-03-12-04}, -} - -@article{ViennaFortran, - author = {B.M. Chapman and P. Mehrotra and H. P. Zima}, - title = "{Vienna Fortran\-a Fortran Language Extension for Distributed Memory Multiprocessors}", - journal = {Languages, Compilers and Run-time Environments for Distributed Memory Machines}, - year = {1992}, - isbn = {0-444-88712-1}, - pages = {39--62}, - publisher = {Elsevier Science Publishers B. V.}, - address = {Amsterdam, The Netherlands, The Netherlands}, - } - - -@article{Illiac4, - author = {G. H. Barnes and R. M. Brown and M. Kato and D.J. Kuck and D.L. Slotnick and R.A. Stokes}, - title = "{The ILLIAC IV Computer}", - journal = {IEEE Transactions on Computers}, - volume = {8}, - number = {17}, - year = {1968}, - pages = {746-757} - } - -@article{ATLAS, - author = "R.C. Whaley and A. Petitet and J. Dongarra", - title = "{Automated Empirical Optimizations of Sofware and the ATLAS Project}", - JOURNAL = "Parallel Computing", - VOLUME = {27}, - NUMBER = {1-2}, - PAGES = {3-35}, - year = "2001"} - -@inproceedings{cell, - author = {Pham, D. and Asano, S. and Bolliger, M. and Day, M.N. and Hofstee, H.P. and Johns, C. and Kahle, J. and Kameyama, A. and Keaty, J. and Masubuchi, Y. and Riley, M. and Shippy, D. and Stasiak, D. and Suzuoki, M. and Wang, M. and Warnock, J. and Weitzel, S. and Wendel, D. and Yamazaki, T. and Yazawa, K.}, - title="{The Design and Implementation of a First-generation Cell Processor}", - booktitle = {Proceedings of the IEEE Solid-State Circuits Symposium}, - year = {2005}, - month = {February}, -} - -@book{OpenMPBook, - author = {Robit Chandra and Leonardo Dagum and Dave Kohr and Dror Maydan and Jeff McDonald and Ramesh Menon}, - title = {Parallel programming in OpenMP}, - year = {2001}, - isbn = {1-55860-671-8}, - publisher = {Morgan Kaufmann Publishers Inc.}, - address = {San Francisco, CA, USA}, -} - -@inproceedings{Irigoin88, - author = {F. Irigoin and R. Triolet}, - title = "{Supernode Partitioning}", - booktitle = {POPL '88: Proc.\ of the 15th ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages}, - year = {1988}, - pages = {319--329}, -} - -@book{XueTilingBook00, - author = {Jingling Xue}, - title = {Loop tiling for parallelism}, - year = {2000}, - isbn = {0-7923-7933-0}, - publisher = {Kluwer Academic Publishers}, -} - -@inproceedings{lim01, - author = {Amy W. Lim and Shih-Wei Liao and Monica S. Lam}, - title = "{Blocking and Array Contraction Across Arbitrarily Nested Loops Using Affine Partitioning}", - booktitle = {PPoPP '01: Proc.\ of the 8th ACM SIGPLAN Symp. on Principles and Practice of Parallel Programming}, - year = {2001}, - pages = {103--112}, - } - - @inproceedings{sequoia06, - author = {Kayvon Fatahalian and Daniel Reiter Horn and Timothy J. Knight and Larkhoon Leem and Mike Houston and Ji Young Park and Mattan Erez and Manman Ren and Alex Aiken and William J. Dally and Pat Hanrahan}, - title = {Sequoia: programming the memory hierarchy}, - booktitle = {Supercomputing '06: Proceedings of the 2006 ACM/IEEE Conference on Supercomputing}, - year = {2006}, - pages = {83}, - } - - @inproceedings{Krishnamoorthy07, - author = {Sriram Krishnamoorthy and Muthu Baskaran and Uday Bondhugula and J. Ramanujam and Atanas Rountev and P. Sadayappan}, - title = "{Effective Automatic Parallelization of Stencil Computations.}", - booktitle = {Proc. PLDI 2007}, - year = {2007}, - pages = {235-244}, -} - -@article{Hodzic02, - author = {Edin Hodzic and Weijia Shang}, - title = "{On Time Optimal Supernode Shape}", - journal = {IEEE Trans. Parallel Distrib. Syst.}, - volume = {13}, - number = {12}, - year = {2002}, - issn = {1045-9219}, - pages = {1220--1233}, - publisher = {IEEE Press}, - address = {Piscataway, NJ, USA}, - } - - @inproceedings{Ram91, - author = {J. Ramanujam and P. Sadayappan}, - title = "{Tiling Multidimensional Iteration Spaces for Nonshared Memory Machines}", - booktitle = {Supercomputing '91: Proceedings of the 1991 ACM/IEEE conference on Supercomputing}, - year = {1991}, - pages = {111--120}, - } - - @InProceedings{Fraguela05, - author = {Fraguela, B. B. and Carmueja, M. G. and Andrade, D.}, - title = "{Optimal Tile Size Selection Guided by Analytical Models}", - booktitle = {Procs.\ of Parallel Computing 2005 (ParCo 2005).}, - pages = {565--572}, - year = {2005}, - location = {Malaga, Spain}, - month = {Sept}, -} - -@article{AbuSufah, - author = {W. Abu-Sufah and D. J. Kuck and D. H. Lawrie}, - title = "{On the Performance Enhancement of Paging Systems Through Program Analysis and Transformations}", - journal = {IEEE Trans. Comput.}, - volume = {30}, - number = {5}, - year = {1981}, - issn = {0018-9340}, - pages = {341--356}, - doi = {http://dx.doi.org/10.1109/TC.1981.1675792}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, - } -@inproceedings{WolfeTiling, - author = {M. Wolfe}, - title = "{More Iteration Space Tiling}", - booktitle = {Supercomputing '89: Proceedings of the 1989 ACM/IEEE conference on Supercomputing}, - year = {1989}, - isbn = {0-89791-341-8}, - pages = {655--664}, - location = {Reno, Nevada, United States}, - doi = {http://doi.acm.org/10.1145/76263.76337}, - } - -@inproceedings{Barton06, -author = {Christopher Barton and C\'{C}lin Cas\c{c}aval and George Alm\'{a}si and Yili Zheng and Montse Farreras and Siddhartha Chatterje and Jos\'{e} Nelson Amaral}, -title = "{Shared Memory Programming for Large Scale Machines}", -booktitle = {PLDI '06: Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation}, -year = {2006}, -pages = {108--117}, -} - -@Book{butenhof97:_progr_posix_thread, - author = {David R. Butenhof}, - title = {Programming with {POSIX} Threads}, - publisher = {Addison Wesley}, - year = 1997 -} - -@inproceedings{charm++, -author = {L.V. Kale and Sanjeev Krishnan}, -title = "{CHARM++: A Portable Concurrent Object Oriented System Based on C++}", -booktitle = {Proceedings of the Conference on Object Oriented Programming Systems, Languages and Applications}, -year = {1993}, -pages = {91--108}, -} - -@inproceedings{AMPI, -author = {Milind Bhandarkar and L.V. Kale and Eric de Sturler and Jay Hoeflinger}, -title = "Object-Based Adaptive Load Balancing for {MPI} Programs", -booktitle = {Proceedings of the International Conference on Computational Science}, -year = {2001}, -pages = {108--117}, -} - -@article{Brook4GPUs, - author = {Ian Buck and Tim Foley and Daniel Horn and Jeremy Sugerman and Kayvon Fatahalian and Mike Houston and Pat Hanrahan}, - title = "{B}rook for {GPUs}: stream computing on graphics hardware", - journal = {ACM Trans. Graph.}, - volume = {23}, - number = {3}, - year = {2004}, - issn = {0730-0301}, - pages = {777--786}, - doi = {http://doi.acm.org/10.1145/1015706.1015800}, - publisher = {ACM}, - address = {New York, NY, USA}, - } - -@misc{StreamC, - author = {P. Mattson and U. Kapasi and J. Owens and S. Rixner}, - title = {Imagine programming system userÕs guide}, - howpublished = "Imagine internal document", - year = {2001}, -} - -@inproceedings{StreamIt, - author = {William Thies and Michal Karczmarek and Saman P. Amarasinghe}, - title = "{StreamIt}: A Language for Streaming Applications", - booktitle = {CC '02: Proceedings of the 11th International Conference on Compiler Construction}, - year = {2002}, - isbn = {3-540-43369-4}, - pages = {179--196}, - publisher = {Springer-Verlag}, - address = {London, UK}, - } - -@inproceedings{CUDA07, - author = {David Kirk}, - title = "{NVIDIA CUDA} software and {GPU} parallel computing architecture", - booktitle = {ISMM '07: Proceedings of the 6th international symposium on Memory management}, - year = {2007}, - isbn = {978-1-59593-893-0}, - pages = {103--104}, - location = {Montreal, Quebec, Canada}, - doi = {http://doi.acm.org/10.1145/1296907.1296909}, - publisher = {ACM}, - address = {New York, NY, USA}, - } - - @inproceedings{GPGPU, - author = {David Luebke and Mark Harris and Jens Kr\"{u}ger and Tim Purcell and Naga Govindaraju and Ian Buck and Cliff Woolley and Aaron Lefohn}, - title = "{GPGPU: General Purpose Computation on Graphics Hardware}", - booktitle = {ACM SIGGRAPH 2004 Course Notes}, - year = {2004}, - pages = {33}, - doi = {http://doi.acm.org/10.1145/1103900.1103933}, - } - - - -@inproceedings{dean:mapreduce:04, - title = "{MapReduce: Simplified Data Processing on Large Clusters}", - author = {Jeffrey Dean and Sanjay Ghemawat}, - booktitle = {Symposium on Operating System Design and Implementation (OSDI)}, - year = {2004}, -} - -@inproceedings{1cdcstar100, - author = {R. G. Hintz and D. P. Tate}, - title = "{Control Data STAR-100 Processor Design}", - booktitle = {Proc. of COMPCON}, - year = {1972}, - pages = {1--4} - } - - @misc{2cdcstar100, - title="{Control Data Star-100 Computer System -- Hardware Reference Manual}", - note="Control Data Corporation Technical Publications Department, Arden Hills, - Minn.", - year= 1972 -} - -@misc{PowerPCISA, - title="Power {ISA}. Version 2.04", - author = {IBM}, - year = 2007, -} - - -@article{ren:IPDPS:2005, -author = {Gang Ren and Peng Wu and David Padua}, -title = {An Empirical Study On the Vectorization of Multimedia Applications for Multimedia Extensions}, -journal = {IPDPS '05: Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium (IPDPS'05)}, -year = {2005}, -doi = {http://doi.ieeecomputersociety.org/10.1109/IPDPS.2005.94}, -publisher = {IEEE Computer Society}, -address = {Los Alamitos, CA, USA}, -} - -@inproceedings{TI-ASC, - author = {W. Watson}, - title = "{The TI-ASC, A Highly Modular and Flexible Super Computer Architecture}", - booktitle = {Proc. AFIP}, - year = {1972}, - pages = {221-228} - } - -@misc{SSE, - title = "{IA32 Intel Architecture Software Developer's Manual (Volume 1: Basic Architecture)}", - author= "{Intel Corporation}", - year = "2004", -} - -@TechReport{Altivec, - author ={Sam Fuller}, - title = "{Motorola's Altivec Technology.}", - institution={Motorola, Inc}, - year = "1998" -} - -@article{APLdesign, - author = {A.D. Falkoff and K.E. Iverson}, - title = "{The Design of APL}", - journal = {IBM Journal of Research and Development}, - month = {July}, - year = {1973}, - pages = {324--334}, - } - -@misc{Vectranmanual, - author = "G. Paul and M.W. Wilson", - title = "{The VECTRAN Language: An Experimental Language for Vector/Matrix Array Processing}", - note = "IBM Palo Alto Scientific Center Report G320-3334, Palo Alto, California", - year = "1975", - month = "August"} - -@inproceedings{Vectran2, - author = {G. Paul and M. Wilson}, - title = "{An Introduction to VECTRAN and Its Use in Scientific Computing}", - booktitle = {Proc. of the 1978 LASL Workshop on Vector and Parallel Processors}, - year = {1978}, - pages = {176--204} - } - -@misc{APLmanual, - author = "A.D. Falkoff and K.E. Iverson", - title = "{APL 360: User's Manual}", - note = "IBM Corporation", - year = "1968", - month = "August" -} - -@inproceedings{LRLTRAN, - author = {R. G. Zwakenberg}, - title = "{Vector Extensions to LRLTRAN}", - booktitle = {Proc. of the conference on Programming Languages and Compilers for Parallel and Vector Machines}, - year = {1975}, - pages = {77--86} - } - -@TechReport{dep1, - author = "J.R. Allen and K. Kennedy", - title = "{PFC: A Program to Convert Fortran to Parallel Form}", - type = "{Technical Report MASC-TR82-6}", - institution = "Rice University, Houston, TX", - month = "March", - year = "1982", -} - -@Book{AllenKennedy, - author = "R. Allen and K. Kennedy", - title = "{Optimizing Compilers for Modern Architectures}", - publisher = "Morgan Kaufmann Publishers, Inc.", - address = "San Francisco, CA", - year = "2002" -} - -@TechReport{dep2, - author = "U. Banerjee", - title = "{Speedup of Ordinary Programs}", - type= "{Ph.D. Thesis, Report 79-989}", - institution = "Department of Computer Science, University of Illinois at Urbana-Champaign", - month = "October", - year = "1979" -} - -@article{dep3, - author = {U. Banerjee and S.C. Chen and D.J. Kuck}, - title = "{Time and Parallel Processor Bounds for Fortran-like Loops}", - journal = {IEEE Transactions on Computers}, - volume = {28}, - number ={9}, - month = {September}, - year = {1979}, - pages = {660--670}, - } - -@TechReport{dep4, - author = "M.J. Wolfe", - title = "{Optimizing Supercompilers for Supercomputers}", - type= "{Ph.D. Thesis, Report 82-1105}", - institution = "Department of Computer Science, University of Illinois at Urbana-Champaign", - month = "October", - year = "1982" -} - -@phdthesis{PaduaPhd, - author = {David A. Padua}, - title = {Multiprocessors: discussion of some theoretical and practical problems}, - year = {1980}, - order_no = {AAI8018194}, - publisher = {University of Illinois at Urbana-Champaign}, - address = {Champaign, IL, USA}, - } - -@article{PaduaKL80, - author = {David A. Padua and David J. Kuck and Duncan H. Lawrie}, - title = {High-Speed Multiprocessors and Compilation Techniques}, - journal = {IEEE Trans. Computers}, - volume = {29}, - number = {9}, - year = {1980}, - pages = {763-776}, -} -@article{Chandy91, - author = {Mani Chandy and Carl Kesselman}, - title = {Parallel Programming in 2001}, - journal = {IEEE Software}, - volume = {8}, - number = {6}, - year = {1991}, - pages = {11-20}, -} -@inproceedings{emrath-padua, -author = {Perry A. Emrath and David A. Padua}, -title = "{Automatic Detection of Nondeterminacy in Parallel Programs}", -booktitle = {PADD '88: Proceedings of the 1988 ACM SIGPLAN and SIGOPS Workshop on Parallel and Distributed Debugging}, -year = {1988}, -isbn = {0-89791-296-9}, -pages = {89--99}, -location = {Madison, Wisconsin, United States}, -doi = {http://doi.acm.org/10.1145/68210.69224}, -publisher = {ACM}, -address = {New York, NY, USA}, -} - -@inproceedings{kung76, - author = {H.T. Kung}, - title = "{Synchronized and asynchronous parallel algorithms for multiprocessors}", - booktitle = {Algorithms and Complexity: New Directions and Recent Results.J. F. Traub, ed. Academic Press}, - year ={1976}, -} - -@article{IVTRAN, - author = {R. Millstein and C. Muntz}, - title = "{The Illiac IV Fortran Compiler}", - booktitle = {ACM Sigplan Notices}, - volume={10}, - number ={3}, - pages={1-8}, - month={March}, - year = {1975} - } - -@book{Fortran90, - author = {Jeanne C. Adams and Walter S. Brainerd and Jeanne T. Martin and B -rian T. Smith and Jerrold L. Wagener}, - title = {Fortran 90 Handbook}, - publisher = {McGraw-Hill}, - year = 1992, -} -@misc{SETL, -author ={J.T. Schwartz}, -title="{Set Theory as a Language for Program Specification and Programming}", -institution={Courant Institute of Mathematical Sciences, New York University}, -year=1970, -} -@book{HillisCM, - author = {W. Daniel Hillis}, - title = {The Connection Machine}, - publisher = {MIT Press series in artificial intelligence}, - year = 1985, -} - -@article{paduawolfe, -author = {Padua,, David A. and Wolfe,, Michael J.}, -title = "{Advanced Compiler Optimizations for Supercomputers}", -journal = {Commun. ACM}, -volume = {29}, -number = {12}, -year = {1986}, -issn = {0001-0782}, -pages = {1184--1201}, -doi = {http://doi.acm.org/10.1145/7902.7904}, -publisher = {ACM}, -address = {New York, NY, USA}, -} - -@book{lisp, -author = {McCarthy,, John}, -title = {LISP 1.5 Programmer's Manual}, -year = {1962}, -isbn = {0262130114}, -publisher = {The MIT Press}, -} - -@book{apl, -author = {Iverson,, Kenneth E.}, -title = "{A Programming Language}", -year = {1962}, -isbn = {0-471430-14-5}, -source = {Library of Congress Catalog Card Number: 62-15180}, -publisher = {John Wiley \& Sons, Inc.}, -address = {New York, NY, USA}, -} - -@techreport{NESL, -author = {Blelloch,, Guy E.}, -title = "{NESL: A Nested Data-Parallel Language}", -year = {1992}, -source = {http://www.ncstrl.org:8900/ncstrl/servlet/search?formname=detail\&id=oai%3Ancstrlh%3Acmucs%3ACMU%2F%2FCS-92-103}, -publisher = {Carnegie Mellon University}, -address = {Pittsburgh, PA, USA}, -} - -@book{commonlisp, -author = {Steele,, Guy}, -title = {Common Lisp: The Language}, -year = {1990}, -isbn = {0131515071}, -publisher = {Digital Press}, -address = {Newton, MA, USA}, -} - -@article{mapreduce, -author = {Dean,, Jeffrey and Ghemawat,, Sanjay}, -title = "{MapReduce: Simplified Data Processing on Large Clusters}", -journal = {Commun. ACM}, -volume = {51}, -number = {1}, -year = {2008}, -issn = {0001-0782}, -pages = {107--113}, -doi = {http://doi.acm.org/10.1145/1327452.1327492}, -publisher = {ACM}, -address = {New York, NY, USA}, -} - -@inproceedings{parallelSETL, -author = {Hummel,, Robert and Kelly,, Rob and Flynn Hummel,, Susan}, -title = "{A Set-based Language for Prototyping Parallel Algorithms}", -booktitle = {Proceedings of the Computer Architecture for Machine Perception '91}, -year = {1991}, -} - - -@article{flamegunnels, -author = {Gunnels,, John A. and Gustavson,, Fred G. and Henry,, Greg M. and van de Geijn,, Robert A.}, -title = "{FLAME: Formal Linear Algebra Methods Environment}", -journal = {ACM Trans. Math. Softw.}, -volume = {27}, -number = {4}, -year = {2001}, -issn = {0098-3500}, -pages = {422--455}, -doi = {http://doi.acm.org/10.1145/504210.504213}, -publisher = {ACM}, -address = {New York, NY, USA}, -} - -@inproceedings{SAMOS, -author={J. Brodman and B. Fraguela and M. J. Garzaran and D. Padua}, -title="{Design Issues in Parallel Array Languages for Shared Memory}", -booktitle={8th Int. Workshop on Systems, Architectures, Modeling, and Simulation}, -year={2008}, -} - -@inproceedings{multiprog08, -author={D. Andrade and J. Brodman and B.B. Fraguela and D. Padua }, -title="{Hierarchically Tiled Arrays Vs. Intel Threading Building Blocks for Programming Multicore Systems}", -booktitle={ Programmability Issues for Multi-Core Computers}, -year={2008}, -} - -@InProceedings{cilk, -author = {Robert D. Blumofe and Christopher F. Joerg and Bradley C. Kuszmaul and Charles E. Leiserson and Keith H. Randall and Yuli Zhou}, -title = {{Cilk}: An Efficient Multithreaded Runtime System}, -booktitle = {Proc. of the ACM SIGPLAN Symp.\ on Principles and Practice of Parallel Programming}, -year = {1995}, -pages = {207--216}, -} - -@Book{puzzlebook, - author = {Jerry Slocum and Dic Sonneveld}, - title = {The Fifteen Puzzle}, - publisher = {The Slocum Puzzle Foundation}, - year = 2006 -} - -@article{astar, -author = {P. E. Hart and N. J. Nilsson and B. Raphael}, -title = "{A Formal Basis for the Heuristic Deterministic of Minimum Cost Paths}", -journal = {IEEE Transactions on Systems Science and Cybernetics}, -volume = {4}, -number = {2}, -year = {1968}, -pages = {100--107}, -doi = "{http://dx.doi.org/10.1109\%2FTSSC.1968.300136}", -publisher = {IEEE}, -} - -@book{kumarparbook, - author = {Ananath Grama and Anshul Gupta and George Karypis and Vipin Kumar}, - title = {Introduction to Parallel Computing}, - edition = {Second}, - publisher = {Addison-Wesley}, - year = {2003}, - address = {}, - isbn = {0-201-64865-2} } - -@inproceedings{sidelnikgpgpu, - author = {Albert Sidelnik and I-Jui Sung and Wanmin Wu and Mar{\'i}a J. Garzar{\'a}n and Wen-mei Hwu and Klara Nahrstedt and David Padua and Sanjay J. Patel}, - title = "{Programming with Tiles}", - booktitle = {Proc.\ of the ACM SIGPLAN Symp.\ on Principles and Practice of Parallel Programming}, - year = {2008}, - pages = {111--122}, - month = {Feb}, -} - -@inproceedings{tiledtrees, - author = {Chilimbi,, Trishul M. and Hill,, Mark D. and Larus,, James R.}, - title = {Cache-conscious structure layout}, - booktitle = {PLDI '99: Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation}, - year = {1999}, - isbn = {1-58113-094-5}, - pages = {1--12}, - location = {Atlanta, Georgia, United States}, - doi = {http://doi.acm.org/10.1145/301618.301633}, - publisher = {ACM}, - address = {New York, NY, USA}, - } - -@article{skiplist, - author = {Pugh, William}, - title = {Skip lists: a probabilistic alternative to balanced trees}, - journal = {Commun. ACM}, - volume = {33}, - number = {6}, - year = {1990}, - issn = {0001-0782}, - pages = {668--676}, - doi = {http://doi.acm.org/10.1145/78973.78977}, - publisher = {ACM}, - address = {New York, NY, USA}, - } - -@article{costzones, - author = {Singh, Jaswinder Pal and Holt, Chris and Totsuka, Takashi and Gupta, Anoop and Hennessy, John}, - title = {Load balancing and data locality in adaptive hierarchical N-body methods: Barnes-Hut, fast multipole, and radiosity}, - journal = {J. Parallel Distrib. Comput.}, - volume = {27}, - number = {2}, - year = {1995}, - issn = {0743-7315}, - pages = {118--141}, - doi = {http://dx.doi.org/10.1006/jpdc.1995.1077}, - publisher = {Academic Press, Inc.}, - address = {Orlando, FL, USA}, - } - -@inproceedings{lonestar, - author = {Kulkarni, Milind and Burstcher, Martin and Cascaval, Calin and Pingali, Keshav}, - title = {Lonestar: A Suite of Parallel Irregular Programs}, - journal = {International Symposium on Performance Analysis of Software and Systems (ISPASS)}, - year = {2009}, -} - -@article{galois2, - author = {Kulkarni, Milind and Pingali, Keshav and Ramanarayanan, Ganesh and Walter, Bruce and Bala, Kavita and Chew, L. Paul}, - title = {Optimistic parallelism benefits from data partitioning}, - journal = {SIGARCH Comput. Archit. News}, - volume = {36}, - number = {1}, - year = {2008}, - issn = {0163-5964}, - pages = {233--243}, - } -@inproceedings{galois1, - author = {Kulkarni, Milind and Pingali, Keshav and Walter, Bruce and Ramanarayanan, Ganesh and Bala, Kavita and Chew, L. Paul}, - title = {Optimistic parallelism requires abstractions}, - booktitle = {PLDI '07: Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation}, - year = {2007}, - isbn = {978-1-59593-633-2}, - pages = {211--222}, - } -@article{chapel, - author = {Chamberlain, B.L. and Callahan, D. and Zima, H.P.}, - title = {Parallel Programmability and the Chapel Language}, - journal = {Int. J. High Perform. Comput. Appl.}, - volume = {21}, - number = {3}, - year = {2007}, - issn = {1094-3420}, - pages = {291--312}, - doi = {http://dx.doi.org/10.1177/1094342007078442}, - publisher = {Sage Publications, Inc.}, - address = {Thousand Oaks, CA, USA}, - } - -@article{KecklerDally2011, - abstract = {{This article discusses the capabilities of state-of-the art GPU-based high-throughput computing systems and considers the challenges to scaling single-chip parallel-computing systems, highlighting high-impact areas that the computing research community can address. Nvidia Research is investigating an architecture for a heterogeneous high-performance computing system that seeks to address these challenges.}}, - author = {Keckler, Stephen W. and Dally, William J. and Khailany, Brucek and Garland, Michael and Glasco, David}, - citeulike-article-id = {9942806}, - citeulike-linkout-0 = {http://dx.doi.org/10.1109/MM.2011.89}, - citeulike-linkout-1 = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=6045685}, - doi = {10.1109/MM.2011.89}, - issn = {0272-1732}, - journal = {Micro, IEEE}, - keywords = {archtiecture, gpu, micro, nvidia}, - number = {5}, - pages = {7--17}, - posted-at = {2011-10-25 08:24:52}, - priority = {2}, - publisher = {IEEE}, - title = {{GPUs and the Future of Parallel Computing}}, - url = {http://dx.doi.org/10.1109/MM.2011.89}, - volume = {31}, - year = {2011} -} - -@inproceedings{BanakarSteinke2002, - author = {Banakar, Rajeshwari and Steinke, Stefan and Lee, Bo-Sik and Balakrishnan, M. and Marwedel, Peter}, - title = {Scratchpad memory: design alternative for cache on-chip memory in embedded systems}, - booktitle = {Proceedings of the tenth international symposium on Hardware/software codesign}, - series = {CODES '02}, - year = {2002}, - isbn = {1-58113-542-4}, - location = {Estes Park, Colorado}, - pages = {73--78}, - numpages = {6}, - url = {http://doi.acm.org/10.1145/774789.774805}, - doi = {10.1145/774789.774805}, - acmid = {774805}, - publisher = {ACM}, - address = {New York, NY, USA}, -} - -@article{Snapdragon, - author = {Qualcomm}, - title = {{Snapdragon S4 Processors: System on Chip Solutions for a New Mobile Age}}, - month = {October}, - year = {2011}, -} - -@InProceedings{LiAhn2009, - author = {Sheng Li and Jung Ho Ahn and Strong, R.D. and Brockman, J.B. and Tullsen, D.M. and Jouppi, N.P.}, - title = {McPAT: An Integrated Power, Area, and Timing Modeling Framework for Multicore and -Manycore Architectures}, - OPTbooktitle = {MICRO'09: Proceedings of the 42nd Annual IEEE/ACM International Conference on Microarchitecture}, - OPTyear = {2009} -} - diff --git a/cfar-report/paper.tex b/cfar-report/paper.tex deleted file mode 100644 index 7af3851c2fa10ee1aec765b7229fc58559723029..0000000000000000000000000000000000000000 --- a/cfar-report/paper.tex +++ /dev/null @@ -1,102 +0,0 @@ -\documentclass[pageno]{jpaper} - -%replace XXX with the submission number you are given from the ASPLOS submission site. -\newcommand{\asplossubmissionnumber}{XXX} - -\usepackage[normalem]{ulem} -\usepackage[disable]{todonotes} - -\usepackage{listings} -% \usepackage{subfig} - -\lstset{ - inputencoding=utf8, -% backgroundcolor=\color{white}, - tabsize=4, - rulecolor=, - upquote=true, -% aboveskip={1.5\baselineskip}, - columns=fixed, - %numbers=left, - showstringspaces=false, - extendedchars=true, - breaklines=true, - prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}, - frame=single, - showtabs=false, - showspaces=false, - showstringspaces=false, - basicstyle=\scriptsize\ttfamily, - identifierstyle=\ttfamily, - keywordstyle=\ttfamily\color[rgb]{0,0,1}, - commentstyle=\ttfamily\color[rgb]{0.133,0.545,0.133}, - stringstyle=\ttfamily\color[rgb]{0.627,0.126,0.941}, -} - -%\makeatletter -\lstdefinelanguage{llvm}{ - morecomment = [l]{;}, - morestring=[b]", - sensitive = true, - classoffset=0, - morekeywords={ - define, declare, global, constant, - internal, external, private, - linkonce, linkonce_odr, weak, weak_odr, appending, - common, extern_weak, - thread_local, dllimport, dllexport, - hidden, protected, default, - except, deplibs, - volatile, fastcc, coldcc, cc, ccc, - x86_stdcallcc, x86_fastcallcc, - ptx_kernel, ptx_device, - signext, zeroext, inreg, sret, nounwind, noreturn, - nocapture, byval, nest, readnone, readonly, noalias, uwtable, - inlinehint, noinline, alwaysinline, optsize, ssp, sspreq, - noredzone, noimplicitfloat, naked, alignstack, - module, asm, align, tail, to, - addrspace, section, alias, sideeffect, c, gc, - target, datalayout, triple, - blockaddress - }, - classoffset=1, keywordstyle=\color{purple}, - morekeywords={ - fadd, sub, fsub, mul, fmul, - sdiv, udiv, fdiv, srem, urem, frem, - and, or, xor, - icmp, fcmp, - eq, ne, ugt, uge, ult, ule, sgt, sge, slt, sle, - oeq, ogt, oge, olt, ole, one, ord, ueq, ugt, uge, - ult, ule, une, uno, - nuw, nsw, exact, inbounds, - phi, call, select, shl, lshr, ashr, va_arg, - trunc, zext, sext, - fptrunc, fpext, fptoui, fptosi, uitofp, sitofp, - ptrtoint, inttoptr, bitcast, - ret, br, indirectbr, switch, invoke, unwind, unreachable, - malloc, alloca, free, load, store, getelementptr, - extractelement, insertelement, shufflevector, - extractvalue, insertvalue, - }, - alsoletter={\%}, - keywordsprefix={\%}, -} - -\begin{document} - -\title{ -VISC: Virtual Instruction Set Computing} - -\date{} -\maketitle - -\thispagestyle{empty} -%\input{Abstract} -\input{Introduction} -\listoftodos -\bibliographystyle{plain} -\bibliography{references,hetero} - - -\end{document} - diff --git a/cfar-report/references.bib b/cfar-report/references.bib deleted file mode 100644 index 91094f356756ad1c24a25a26838f3fcac31d8788..0000000000000000000000000000000000000000 --- a/cfar-report/references.bib +++ /dev/null @@ -1,31 +0,0 @@ - - -@book{lamport94, - author = "Leslie Lamport", - title = "{\LaTeX: A Document Preparation System}", - year = "1994", - publisher = "Addison-Wesley", - edition = "2nd", - address = "Reading, Massachusetts" -} - -@inproceedings{nicepaper1, - author = "Firstname1 Lastname1 and Firstname2 Lastname2", - title = "A Very Nice Paper To Cite", - year = "2012", - booktitle = "Proceedings of the 33rd Annual ACM SIGPLAN Conference on Programming Language Design and Implementation" -} - -@inproceedings{nicepaper2, - author = "Firstname1 Lastname1 and Firstname2 Lastname2 and Firstname3 Lastname3", - title = "Another Very Nice Paper to Cite", - year = "2011", - booktitle = "Proceedings of the 22nd ACM Symposium on Operating Systems Principles" -} - -@inproceedings{nicepaper3, - author = "Firstname1 Lastname1 and Firstname2 Lastname2 and Firstname3 Lastname3 and Firstname4 Lastname4 and Firstname5 Lastname5", - title = "Yet Another Very Nice Paper To Cite, With Many Author Names All Spelled Out", - year = "2011", - booktitle = "Proceedings of the 38th Annual International Symposium on Computer Architecture" -} diff --git a/cfar-report/rutenbar.bib b/cfar-report/rutenbar.bib deleted file mode 100644 index fb5999ceca86713172f9839028afe5fd5f2be66f..0000000000000000000000000000000000000000 --- a/cfar-report/rutenbar.bib +++ /dev/null @@ -1,749 +0,0 @@ -@inproceedings{Ohshima:VECPAR06, - author = {Ohshima, Satoshi and Kise, Kenji and Katagiri, Takahiro and Yuba, Toshitsugu}, - title = {Parallel processing of matrix multiplication in a CPU and GPU heterogeneous environment}, - booktitle = {Proceedings of the 7th international conference on High performance computing for computational science}, - series = {VECPAR'06}, - year = {2007}, - isbn = {978-3-540-71350-0}, - location = {Rio de Janeiro, Brazil}, - pages = {305--318}, - numpages = {14}, - url = {http://dl.acm.org/citation.cfm?id=1761728.1761755}, - acmid = {1761755}, - publisher = {Springer-Verlag}, - address = {Berlin, Heidelberg}, -} - -@inproceedings{Lee:ISCA10, - author = {Lee, Victor W. and Kim, Changkyu and Chhugani, Jatin and Deisher, Michael and Kim, Daehyun and Nguyen, Anthony D. and Satish, Nadathur and Smelyanskiy, Mikhail and Chennupaty, Srinivas and Hammarlund, Per and Singhal, Ronak and Dubey, Pradeep}, - title = {Debunking the 100X GPU vs. CPU myth: an evaluation of throughput computing on CPU and GPU}, - booktitle = {Proceedings of the 37th annual international symposium on Computer architecture}, - series = {ISCA '10}, - year = {2010}, - isbn = {978-1-4503-0053-7}, - location = {Saint-Malo, France}, - pages = {451--460}, - numpages = {10}, - url = {http://doi.acm.org/10.1145/1815961.1816021}, - doi = {http://doi.acm.org/10.1145/1815961.1816021}, - acmid = {1816021}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {cpu architecture, gpu architecture, performance analysis, performance measurement, software optimization, throughput computing}, -} - -@inproceedings{Wu:ICS05, - author = {Wu, Peng and Eichenberger, Alexandre E. and Wang, Amy and Zhao, Peng}, - title = {An integrated simdization framework using virtual vectors}, - booktitle = {Proceedings of the 19th annual international conference on Supercomputing}, - series = {ICS '05}, - year = {2005}, - isbn = {1-59593-167-8}, - location = {Cambridge, Massachusetts}, - pages = {169--178}, - numpages = {10}, - url = {http://doi.acm.org/10.1145/1088149.1088172}, - doi = {http://doi.acm.org/10.1145/1088149.1088172}, - acmid = {1088172}, - publisher = {ACM}, - address = {New York, NY, USA}, -} - -@techreport{MLCReport:TR10, -author = { K. Nahrstedt and L. Angrave and M. Caccamo and R. Campbell and B. Godfrey and I. Gupta and K. Karahalios and R. Kravets and S. Kamin and S. Poole and W. Sanders }, -title = "Mobile Learning Communities à Are We There Yet?", -institution = "Information Trust Institute, University of Illinois at Urbana-Champaign", -month = {Nov}, -year = {2010} -} - -@article{CogniServe:Micro11, - title = {CogniServe: Heterogeneous Server Architecture for Large-Scale Recognition}, - author = {Ravi Iyer and Sadagopan Srinivasan and Omesh Tickoo and Zhen Fang and Ramesh Illikkal and Steven Zhang and Vineet Chadha and Paul M. Stillwell and Seung Eun Lee}, - year = {2011}, - doi = {http://dx.doi.org/10.1109/MM.2011.37}, - tags = {architecture}, - researchr = {http://researchr.org/publication/IyerSTFIZCSL11}, - cites = {0}, - citedby = {0}, - journal = {IEEE Micro}, - volume = {31}, - number = {3}, - pages = {20-31}, -} - - -@techreport{SARNeeds:TR04, -author = { James Wong and Cassandra Robinson }, -title = "Urban Search and Rescue Technology Needs: Identification of Needs", -number = 207771, -institution = "Savannah River National Laboratory", -month = {Nov}, -year = {2004} -note = "Available at https://www.ncjrs.gov/pdffiles1/nij/grants/207771.pdf" -} - -@ARTICLE{CDSC:IEEEDTC11, -author={Cong, J. and Reinman, G. and Bui, A. and Sarkar, V.}, -journal={Design Test of Computers, IEEE}, -title={Customizable Domain-Specific Computing}, -year={2011}, -month={march-april }, -volume={28}, -number={2}, -pages={6 -15}, -keywords={computing industry;customizable domain specific computing;heat dissipation;parallel general purpose computing system;parallelization era;power density limitation;power performance efficiency;general purpose computers;parallel processing;}, -doi={10.1109/MDT.2010.141}, -ISSN={0740-7475},} - -@INPROCEEDINGS{CUDACUTS, -author={Vineet, V. and Narayanan, P.J.}, -booktitle={Computer Vision and Pattern Recognition Workshops, 2008. CVPRW '08. IEEE Computer Society Conference on}, -title={CUDA cuts: Fast graph cuts on the GPU}, -year={2008}, -month={june}, -volume={}, -number={}, -pages={1 -8}, -keywords={CUDA cuts;GPU;Nvidia 8800 GTX;graph cuts;graphics processor unit;image restoration;image segmentation;maxflow algorithm;mincut algorithm;push-relabel algorithm;stereo vision;computer graphic equipment;computer graphics;image restoration;image segmentation;stereo image processing;}, -doi={10.1109/CVPRW.2008.4563095}, -ISSN={},} - -@techreport{CHOI, -author = {J. Choi}, -title={Hardware implementation of MRF MAP estimation on FPGA platform, Ph.D. qualifying examination report}, -institution={ECE, UIUC}, -year = {2011} -} - -@misc{CONVEY, - author = {}, - title = {{Convey HC-1 Family}}, - howpublished = {http://www.conveycomputer.com} -} - -@article{AutoPilot, - address = {Dordrecht}, - author = {Zhang, Zhiru and Fan, Yiping and Jiang, Wei and Han, Guoling and Yang, Changqi and Cong, Jason}, - booktitle = {High-Level Synthesis}, - chapter = {6}, - doi = {10.1007/978-1-4020-8588-8\_6}, - editor = {Coussy, Philippe and Morawiec, Adam}, - isbn = {978-1-4020-8587-1}, - keywords = {autoesl, hls, springer-book}, - pages = {99--112}, - posted-at = {2011-10-03 14:09:35}, - priority = {2}, - publisher = {Springer Netherlands}, - title = {{AutoPilot}: A {Platform-Based} {ESL} Synthesis System}, - url = {http://dx.doi.org/10.1007/978-1-4020-8588-8\_6}, - year = {2008} -} - -@INPROCEEDINGS{GAUT, -author={P. Coussy and G. Lhairech-Lebreton}, -booktitle={DATE}, -title={GAUT: An Open Source High-Level Synthesis Tool}, -year={2009}, -month={}, -volume={}, -number={}, -ISSN={},} - -@INPROCEEDINGS{NISC, -author={B. Gorjiara and D. Gajski}, -booktitle={Workshop on Embedded Systems for Real-time Multimedia (ESTIMEDIA)}, -title={Design Space Exploration of C Programs Using NISC: A Case-Study on DCT algorithm}, -year={2005}, -month={}, -volume={}, -number={}, -ISSN={},} - -@article{Diniz2005, -title = "Automatic mapping of C to FPGAs with the DEFACTO compilation and synthesis system", -journal = "Microprocessors and Microsystems", -volume = "29", -number = "2-3", -pages = "51 - 62", -year = "2005", -note = "<ce:title>Special Issue on FPGA Tools and Techniques</ce:title>", -issn = "0141-9331", -doi = "10.1016/j.micpro.2004.06.007", -url = "http://www.sciencedirect.com/science/article/pii/S0141933104000869", -author = "Pedro Diniz and Mary Hall and Joonseok Park and Byoungro So and Heidi Ziegler", -keywords = "Design automation", -keywords = "Parallelizing compiler technology and data dependence analysis", -keywords = "Behavioral synthesis and estimation", -keywords = "Reconfigurable computing", -keywords = "Field-programmable-gate-arrays (FPGAs)" -} - -@BOOK{SPARK, -TITLE = {SPARK: a parallelizing approach to the high-level synthesis of digital circuits}, -AUTHOR = {Sumit Gupta and Rajesh Gupta and Nikil D. Dutt}, -PUBLISHER = {Springer}, -EDITION = {}, -month = {June}, -YEAR = {2009}, -} - -@article{PAPA2009, -author = {Alexandros Papakonstantinou and Karthik Gururaj and John A. Stratton and Deming Chen and Jason Cong and Wen-Mei W. Hwu}, -title = {FCUDA: Enabling efficient compilation of CUDA kernels onto FPGAs}, -journal ={Application Specific Processors, Symposium on}, -volume = {0}, -isbn = {978-1-4244-4939-2}, -year = {2009}, -pages = {35-42}, -doi = {http://doi.ieeecomputersociety.org/10.1109/SASP.2009.5226333}, -publisher = {IEEE Computer Society}, -address = {Los Alamitos, CA, USA}, -} - -@INPROCEEDINGS{PAPA2011, - author={Papakonstantinou, A. and Yun Liang and Stratton, J.A. and Gururaj, K. and Deming Chen and Hwu, W.-M.W. and Cong, J.}, - booktitle={2011 IEEE 19th Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM)}, - title={Multilevel Granularity Parallelism Synthesis on FPGAs}, - year={2011}, - month={may}, - volume={}, - number={}, - pages={178 -185}, - keywords={CUDA kernel mapping;FPGA programming;FPGA-based accelerator;abstraction level;coarse grained parallelism;design layout information;design space search heuristic;hardware spatial parallelism;high-level synthesis technique;lengthy logic synthesis;multigranularity parallelism extraction;multilevel granularity parallelism synthesis;performance evaluation;physical design flow;reconfigurable computing;field programmable gate arrays;integrated circuit layout;logic design;}, - doi={10.1109/FCCM.2011.29}, - ISSN={}, -} - -@INPROCEEDINGS{vu-iShare-globecomm2010, - author={Long Vu and Nahrstedt, K. and Rimac, I. and Hilt, V. and Hofmann, M.}, - booktitle={2010 IEEE GLOBECOM Workshops (GC Wkshps)}, - title={iShare: Exploiting opportunistic ad hoc connections for improving data download of cellular users}, - year={2010}, - month={December}, - volume={}, - number={}, - pages={1475 -1480}, - keywords={ad hoc communication;ad hoc mesh network;cellular broadcast channel;cellular link user;cellular unicast channel;data download;iShare;mobile device;sharing protocol;tit-for-tat incentive mechanism;tree-based protocol;broadcast channels;cellular radio;mobile ad hoc networks;protocols;wireless mesh networks;}, - doi={10.1109/GLOCOMW.2010.5700183}, - ISSN={}, -} - -@ARTICLE{yuan-grace1-ieeeMobComp, - author={Wanghong Yuan and Nahrstedt, K. and Adve, S.V. and Jones, D.L. and Kravets, R.H.}, - journal={IEEE Transactions on Mobile Computing}, - title={GRACE-1: cross-layer adaptation for multimedia quality and battery energy}, - year={2006}, - month={July}, - volume={5}, - number={7}, - pages={ 799 - 815}, - keywords={ GRACE-1; battery energy; cross-layer adaptation; mobile devices; multimedia quality; multiple system layers; video quality; mobile computing; multimedia communication; quality of service;}, - doi={10.1109/TMC.2006.98}, - ISSN={1536-1233}, -} - -@inproceedings{yuan-rtMobileSched-sosp03, - author = {Yuan, Wanghong and Nahrstedt, Klara}, - title = {Energy-efficient soft real-time CPU scheduling for mobile multimedia systems}, - booktitle = {Proceedings of the Nineteenth ACM symposium on Operating Systems Principles}, - series = {SOSP '03}, - year = {2003}, - isbn = {1-58113-757-5}, - location = {Bolton Landing, NY, USA}, - pages = {149--163}, - numpages = {15}, - url = {http://doi.acm.org/10.1145/945445.945460}, - doi = {http://doi.acm.org/10.1145/945445.945460}, - acmid = {945460}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {mobile computing, multimedia, power management}, -} - -@article{yuan-multimediaSched-acmTOCS06, - author = {Yuan, Wanghong and Nahrstedt, Klara}, - title = {Energy-efficient CPU scheduling for multimedia applications}, - journal = {ACM Trans. Comput. Syst.}, - volume = {24}, - issue = {3}, - month = {August}, - year = {2006}, - issn = {0734-2071}, - pages = {292--331}, - numpages = {40}, - url = {http://doi.acm.org/10.1145/1151690.1151693}, - doi = {http://doi.acm.org/10.1145/1151690.1151693}, - acmid = {1151693}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {Power management, mobile computing, multimedia, soft real-time}, -} - -@INPROCEEDINGS{yuan-recalendar-percom03, - author={Wanghong Yuan and Nahrstedt, K.}, - booktitle={Proceedings of the First IEEE International Conference on Pervasive Computing and Communications, 2003 (PerCom 2003)}, - title={ReCalendar: calendaring and scheduling applications with CPU and energy resource guarantees for mobile devices}, - year={2003}, - month={march}, - volume={}, - number={}, - pages={ 425 - 432}, - keywords={ CPU advance reservation; CPU reservations; CPU resource guarantees; CPUfrequency/voltage adaptation; ReCalendar; admitted reservations; advance reservation scheme; calendaring applications; energy reservations; energy resource guarantees; mobile devices; resource manager; scheduling applications; soft real-time applications; computer power supplies; mobile communication; personal computing; real-time systems; resource allocation; scheduling; telecommunication computing; telecommunication congestion control;}, - doi={10.1109/PERCOM.2003.1192767}, - ISSN={}, -} - -@inproceedings{vu-btWiFi-mswim10, - author = {Vu, Long and Nahrstedt, Klara and Retika, Samuel and Gupta, Indranil}, - title = {Joint bluetooth/wifi scanning framework for characterizing and leveraging people movement in university campus}, - booktitle = {Proceedings of the 13th ACM international conference on Modeling, analysis, and simulation of wireless and mobile systems}, - series = {MSWIM '10}, - year = {2010}, - isbn = {978-1-4503-0274-6}, - location = {Bodrum, Turkey}, - pages = {257--265}, - numpages = {9}, - url = {http://doi.acm.org/10.1145/1868521.1868563}, - doi = {http://doi.acm.org/10.1145/1868521.1868563}, - acmid = {1868563}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {android phone, bluetooth trace, people movement characterization, wifi trace}, -} - -@article{vu-jyotish-percom11, - author = {Long Vu and Quang Do and Klara Nahrstedt}, - title = {Jyotish: Constructive approach for context predictions of people movement from joint Wifi/Bluetooth trace}, - journal = {Pervasive and Mobile Computing}, - booktitle = {The Ninth Annual IEEE International Conference on Pervasive Computing and Communications (PerCom 2011)}, - volume = {7}, - number = {6}, - pages = {690 - 704}, - year = {2011}, - issn = {1574-1192}, - doi = {10.1016/j.pmcj.2011.07.004}, - url = {http://www.sciencedirect.com/science/article/pii/S1574119211001167}, - keywords = {People movement prediction, People movement trace, Wifi trace, Bluetooth trace}, -} - -% MDS: I had to fill this in manually, so there may be some slightly incorrect -% information, especially in the volume/number. -@article{vu-coada-ijaras11, - author = {Vu, Long and Nahrstedt, Klara and Malik, Rahul and Wang, Qiyan}, - title = {COADA: Leveraging Dynamic Coalition Peer-to-Peer Network for Adaptive Content Download of Cellular Users}, - journal = {International Journal of Adaptive, Resilient, and Autonomic Systems (IJARAS)}, - year = {2011}, - volume = {2}, - number = {2}, - pages = {1 - 22}, - url = {http://www.igi-global.com/viewtitlesample.aspx?id=53463}, - publisher = {IGI Publisher}, -} - -@INPROCEEDINGS{vu-3R-wowmom11, - author={Long Vu and Quang Do and Nahrstedt, K.}, - booktitle={2011 IEEE International Symposium on a World of Wireless, Mobile and Multimedia Networks (WoWMoM 2011)}, - title={3R: Fine-grained encounter-based routing in Delay Tolerant Networks}, - year={2011}, - month={june}, - volume={}, - number={}, - pages={1 -6}, - keywords={3R routing protocol;delay tolerant networks;epidemic routing protocols;fine-grained encounter-based routing;large-scale Bluetooth;message delivery probability;mobile nodes;mobile users;prophet routing protocols;Bluetooth;mobile radio;routing protocols;}, - doi={10.1109/WoWMoM.2011.5986470}, - ISSN={} -} - -%%%%%%%%% -% These come from various sections, but I put them all here for now to have -% them in a centralized place. -%%% motivation.tex - -@inproceedings{DarkSilicon:ISCA11, - author={Hadi Esmaeilzadeh and Emily Blem and Renee St. Amant and Karthikeyan Sankaralingam and Doug Burger}, - title={{Dark Silicon and the End of Multicore Scaling}}, - booktitle="{Proceedings of the 38th International Symposium on Computer Architecture}", - year={2011}, - bib2html_dl_pdf = {http://bit.ly/fmPjY4}, - bib2html_pubtype = {Refereed Conference}, - bib2html_rescat = {Architecture}, - MONTH = {June} -} - -@INPROCEEDINGS{Hameed:ISCA10, - author = {Rehan Hameed and Wajahat Qadeer and Megan Wachs and Omid Azizi and Alex Solomatnikov and Benjamin C. Lee and Stephen Richardson and Christos Kozyrakis and Mark Horowitz}, - title = {Understanding sources of inefficiency in general-purpose chips}, - booktitle = {In Proceedings of the 37th Annual International Symposium on Computer Architecture (ISCA 2010)}, - year = {2010} - url = {http://www.duke.edu/~BCL15/documents/hameed2010-isca-h264.pdf}, -} - -@INPROCEEDINGS{FCUDA:SASP09, - author={Papakonstantinou, A. and Gururaj, K. and Stratton, J.A. and Chen, D. and Cong, J. and Hwu, W.-M.W.}, - booktitle={Application Specific Processors, 2009. SASP '09. IEEE 7th Symposium on}, - title={FCUDA: Enabling efficient compilation of CUDA kernels onto FPGAs}, - year={2009}, - month={July}, - volume={}, - number={}, - pages={35 -42}, - keywords={CUDA kernel;FPGA programming;Moores law;application program interface;clock frequency;compute unified device architecture;computing industry;field programmable gate array;graphics processing unit;multicore system;multiprocessor system;parallel processing;performance per watt boosting;power dissipation;application program interfaces;field programmable gate arrays;multiprocessing systems;parallel architectures;}, - doi={10.1109/SASP.2009.5226333}, - ISSN={}, -} - -@inproceedings{LLVA:MICRO03, - author = {Adve, Vikram and Lattner, Chris and Brukman, Michael and Shukla, Anand and Gaeke, Brian}, - title = {LLVA: A Low-level Virtual Instruction Set Architecture}, - booktitle = {Proceedings of the 36th annual IEEE/ACM International Symposium on Microarchitecture}, - series = {MICRO 36}, - year = {2003}, - isbn = {0-7695-2043-X}, - pages = {205--}, - url = {http://dl.acm.org/citation.cfm?id=956417.956545}, - acmid = {956545}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, -} - -@inproceedings{SVA:SOSP07, - author = {Criswell, John and Lenharth, Andrew and Dhurjati, Dinakar and Adve, Vikram}, - title = {Secure virtual architecture: a safe execution environment for commodity operating systems}, - booktitle = {Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles}, - series = {SOSP '07}, - year = {2007}, - isbn = {978-1-59593-591-5}, - location = {Stevenson, Washington, USA}, - pages = {351--366}, - numpages = {16}, - url = {http://doi.acm.org/10.1145/1294261.1294295}, - doi = {http://doi.acm.org/10.1145/1294261.1294295}, - acmid = {1294295}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {compiler, memory safety, operating systems, security, type safety, typed assembly language, virtual machine}, -} - -@inproceedings{SVA:UsenixSecurity09, - author = {Criswell, John and Geoffray, Nicolas and Adve, Vikram}, - title = {Memory safety for low-level software/hardware interactions}, - booktitle = {Proceedings of the 18th conference on USENIX security symposium}, - series = {SSYM'09}, - year = {2009}, - location = {Montreal, Canada}, - pages = {83--100}, - numpages = {18}, - url = {http://dl.acm.org/citation.cfm?id=1855768.1855774}, - acmid = {1855774}, - publisher = {USENIX Association}, - address = {Berkeley, CA, USA}, -} - -@misc{UPCRC:URL, - howpublished = {http://upcrc.illinois.edu/}, - author = {Universal Parallel Computing Research Center}, -} - -@misc{UPCRCSummerSchool2011:URL, - howpublished = {http://upcrc.illinois.edu/summer/2011/index.html}, - author = {UPCRC Illinois Summer School on Multicore Programming}, - month = {July}, - year = {2011}, -} - -@misc{CUDASummerSchool09:URL, - howpublished = {http://www.greatlakesconsortium.org/events/GPUMulticore/agenda.html}, - author = {Summer School 2008: Accelerators for Science and Engineering Applications: GPUs and Multicores}, - month = {August}, - year = {2008}, -} - -%%% programmability.tex -@misc{OpenCL:URL, - howpublished = {http://www.khronos.org/opencl/}, - author = {{Khronos Group -- OpenCL}}, -} - -@misc{Renderscript:URL, - title = {Renderscript}, - howpublished = {http://developer.android.com/reference/android/renderscript/package-summary.html}, - author = {{Android Developers}}, -} - -@article{CnC:WHERE, - title = {{Concurrent Collections}}, - author = {Zoran Budimlic and Michael Burke and Vincent Cavé and Kathleen Knobe and Geoff Lowney and Ryan Newton and Jens Palsberg and David Peixotto and Vivek Sarkar and Frank Schlimbach and Sagnak Tasirlar}, - journal = {Scientific Programming}, - year = {2010}, - pages = {203-217}, - keywords = {Computer & Communication Sciences}, - volume = {18}, - number = {3-4}, - url = {http://iospress.metapress.com/content/83w0360mk786443n/}, -} - -@inproceedings{DPJ:HotPar09, - author = {Robert Bocchino and Vikram Adve and Sarita Adve and Marc -Snir}, - title = {{Parallel programming must be deterministic by default}}, - booktitle = {First USENIX Workshop on Hot Topics in Parallelism -(HotPar)}, - year = {2009}, -} - -@inproceedings{DPJ:POPL11, - author = {Bocchino, Robert and Stephen Heumann and Nima Honarmand and -Sarita Adve and Vikram Adve and Adam Welc and Tatiana Shpeisman}, - title = {{Safe nondeterminism in a deterministic-by-default parallel -language}}, - booktitle = {POPL}, - year = {2011}, -} - -@inproceedings{Bocchino:ECOOP11, - author = {Bocchino, Robert L. and Adve, Vikram S.}, - title = {Types, regions, and effects for safe programming with -object-oriented parallel frameworks}, - booktitle = {Proceedings of the 25th European conference on Object-oriented -programming}, - series = {ECOOP'11}, - year = {2011}, - isbn = {978-3-642-22654-0}, - location = {Lancaster, UK}, - pages = {306--332}, - numpages = {27}, - url = {http://dl.acm.org/citation.cfm?id=2032497.2032519}, - acmid = {2032519}, - publisher = {Springer-Verlag}, - address = {Berlin, Heidelberg}, -} - -@InProceedings{KimNarayanan2011, - author = {E. P. Kim and S. P. Narayanan and N. R. Shanbhag and D. L. Jones}, - title = {Low-power and error-resilient PN code acquisition filter via statistical error compensation}, - OPTcrossref = {}, - OPTkey = {}, - OPTbooktitle = {IEEE Custom Integrated Circuits Conference}, - OPTpages = {}, - OPTyear = {2011}, - OPTeditor = {}, - OPTvolume = {}, - OPTnumber = {}, - OPTseries = {}, - OPTaddress = {}, - OPTmonth = {}, - OPTorganization = {}, - OPTpublisher = {}, - OPTnote = {}, - OPTannote = {} -} - - - -@Article{HegdeShanbhag2001, - author = {R. Hegde and N. R. Shanbhag}, - title = {Soft digital signal processing}, - journal = {IEEE Trans. VLSI Systems}, - year = {2001}, - OPTkey = {}, - OPTvolume = {9}, - OPTnumber = {6}, - OPTpages = {813--823}, - OPTmonth = {}, - OPTnote = {}, - OPTannote = {} -} - - - - -@Article{KimShanbhag2010, - author = {E. Kim and Naresh R. Shanbhag}, - title = {Soft N-modular redundancy}, - journal = {IEEE Computer}, - year = {2010}, - OPTkey = {}, - OPTvolume = {}, - OPTnumber = {}, - OPTpages = {}, - OPTmonth = {dec}, - OPTnote = {}, - OPTannote = {} -} - - - -@Article{NarayananVaratkar2010, - author = {S. Narayanan and G. Varatkar and D. L. Jones and N. R. Shanbhag}, - title = {Computation as estimation: A general framework for robustness and energy-efficiency in SoCs}, - journal = {IEEE Transactions on Signal Processing}, - year = {2010}, - OPTkey = {}, - OPTvolume = {58}, - OPTnumber = {8}, - OPTpages = {4416--4421}, - OPTmonth = {}, - OPTnote = {}, - OPTannote = {} -} - - - -@InProceedings{AbdallahShanbhag2010, - author = {R. Abdallah and N. Shanbhag}, - title = {Robust energy-efficient DSP systems via output probability processing}, - OPTcrossref = {}, - OPTkey = {}, - OPTbooktitle = {Proc. of Int. Conf. on Computer Design}, - OPTpages = {}, - OPTyear = {2010}, - OPTeditor = {}, - OPTvolume = {}, - OPTnumber = {}, - OPTseries = {}, - OPTaddress = {}, - OPTmonth = {oct}, - OPTorganization = {}, - OPTpublisher = {}, - OPTnote = {}, - OPTannote = {} -} - - -@InProceedings{Ben-Asher:CODES2010, - Author = {Ben-Asher, Yosi and Rotem, Nadav}, - Title = {Automatic memory partitioning: increasing memory parallelism via -data structure partitioning}, - Booktitle = {Proceedings of the eighth IEEE/ACM/IFIP international -conference on Hardware/software codesign and system synthesis}, - Year = {2010}, - Pages = {155--162}, - url = {http://doi.acm.org.proxy2.library.illinois.edu/10.1145/1878961.1878989}, - Annote = { - "Uses run-time tracing to partition memory between different banks within - an accelerator or FPGA. Partitioning is based on identifying linear - memory access patterns. Uses variation of graph coloring, solved via - ILP, to do the assignment to memory banks. - See references for other relevant papers from the embedded world."} -} - - -@InProceedings{SPEECH1, - Author = {E.C. Lin and R.A. Rutenbar}, - Title = {A Multi-FPGA 10x-Real-Time High-Speed Search Engine for a 5000-Word - Vocabulary Speech Recognizer}, - Booktitle = {Proc. 2009 ACM International Symposium on FPGAs (ISFPGA)}, - Month = {February}, - Year = {2009} -} - -@PhdThesis{SPEECH2, - Author = {Edward C. Lin}, - Title = {A High Performance Custom Hardware Backend Search Engine for a Speech Recognition System}, - School = {Dept of Electrical and Computer Engineering, Carnegie Mellon University}, - Month = {December}, - Year = {2007} -} - -@PhdThesis{SPEECH3, - Author = {Kai Yu}, - Title = {Hardware Optimization and Exploration of Feature Extraction - and Feature Scoring for Speech Recognition}, - School = {Dept of Electrical and Computer Engineering, Carnegie Mellon University}, - Month = {August}, - Year = {2009} -} - -@PhdThesis{SPEECH4, - Author = {Patrick Bourke}, - Title = {A Low-Power Hardware Architecture for Speech Recognition Search}, - School = {Dept of Electrical and Computer Engineering, Carnegie Mellon University}, - Month = {April}, - Year = {2011} -} - -@incollection{SPEECH5, - author = {Patrick Bourke, Kai Yu and Rob A. Rutenbar}, - title = {Mobile Speech Hardware: The Case for Custom Silicon}, - Chapter = {2}, - booktitle = {Speech in Mobile and Pervasive Environments}, - editor = {Nitendra Rajput and Amit Anil Nanavati}, - publisher = {Wiley}, - pages = {7-56}, - year = {2012}, - isbn = {0470694351} -} - -@InProceedings{SPEECH6, - Author = {J. Johnston and R.A. Rutenbar}, - Title = {A High-Rate, Low-Power, ASIC Speech Decoder Using Finite State Transducers}, - Booktitle = {Proc. 23rd IEEE International Conference on Application-Specific Systems, - Architectures and Processors (ASAP12)}, - Month = {to appear July}, - Year = {2012} -} - -@BOOK{BIS06, -TITLE = {Pattern Recognition and Machine Learning}, -AUTHOR = {C. M. Bishop}, -PUBLISHER = {Springer}, -YEAR = {2006} -} - -@BOOK{DAR09, -TITLE = {Modeling and Reasoning with Bayesian Networks}, -AUTHOR = {A. Darwiche}, -PUBLISHER = {Cambridge University Press}, -YEAR = {2009} -} - -@article{CHOI12, - Author = {J. Choi and R.A. Rutenbar}, - title = {Hardware Implementation of MRF MAP Inference on an FPGA Platform}, - journal = {submitted to 2012 International Conference of Field Programmable Logic and Applications (FPL'12)}, - Month = {to be held August}, - Year = {2012} -} - -@Article{CONVEY2, - Author = {Convey Computer Corporation}, - Title = {Convey Reference Manual}, - note = {{http://www.conveycomputer.com}}, - month = {September}, - year = {2009} -} - -@Article{VOCI, - author = {Voci Technologies Inc.}, - note = {\url{http://www.vocitech.com}} -} - -@ARTICLE{VOCI2, -title={Office of Naval Research Selects Voci}, -journal={BusinessWire}, -month = {October 17}, -year = {2011}, -note={\url{http://www.businesswire.com/news/home/20111018005498/en/Office-Naval-Research-Selects-Voci}} -} -%journal={Enhanced Online News (EON), BusinessWire}, -%http://eon.businesswire.com/news/eon/20111018005499/en/speech-recognition/text-analytics/national-security}} - -@Article{paris1, - author = "P. Smaragdis P and B. Raj", - title = "The Markov selection model for concurrent speech recognition", - journal = "Neurocomputing", - volume = "80", - number = "15", - year = 2012 - month = march, - pages = "64–72" -} - -@InProceedings{paris2, - author = "Mysore, G. and P. Smaragdis and B. Raj", - year = 2010, - title = "Non-negative hidden Markov modeling of audio with application to source separation", - booktitle = "9th Int'l Conference on Latent Variable Analysis and Signal Separation (LCA/ICA)", - year = 2010 -} diff --git a/cfar-report/safecode.bib b/cfar-report/safecode.bib deleted file mode 100644 index 08231be64f42133104c1d07f8e1b386fa296474e..0000000000000000000000000000000000000000 --- a/cfar-report/safecode.bib +++ /dev/null @@ -1,1150 +0,0 @@ -%%===----------------------------------------------------------------------===%% -%% -%% LLVM Research Group Bibtex File -%% -%%===----------------------------------------------------------------------===%% -%% -%% When adding an entry to this file, please keep the following in mind: -%% -%% -- Please make all entries consistent :-) -%% -- Include the authors names spelled out, first and last with an optional -%% middle initial. e.g. Chris A. Lattner or Chris Lattner, but NOT C. -%% Lattner. -%% -- Please use the abbreviations at the top of the file for publications, -%% e.g. booktitle = PLDI, instead of booktitle = "Proceedings of -%% ...". This makes it much easier to shorten the citations when trying -%% to cram a paper in (make a local change to change the substitution -%% strings at the top of the file). It also keeps all of the cites for a -%% conference identical. -%% -- Please spell things right! :) -%% -- Include city and date in all InProceedings entries. -%% -- Also, please use a consistent naming scheme for cite keys, where -%% possible. If 1-3 authors: Lastname1Lastname2Lastname3:WHEREYY -%% e.g., LattnerAdve:MSP05. If 4 or more authors: InitialsList:WHEREYY -%% with the initials of the last names of the first 4 authors, e.g, -%% DKAL:TECS05. For more weird cases, there's not much hope but most -%% cases work as above. -%% -- Please make all entries consistent! :-) -%% -- Did I say, please make all entries consistent? -%% -%% When the final version of a paper is done, please *COPY* the current -%% version of this file to the paper directory and check it into CVS for -%% that paper. -%% -%% TO-DO: -%% -- Replace full conference names with abbrevs -%% -- Make all entries consistent -%% -- Replace ...WHEREYY with ...WHERE:YYYY in all cite keys -%% -%%===----------------------------------------------------------------------===%% - - -%%% -%%% Substitutions: Replace these with shorter string to shrink refs. -%%% - - -%% Journals - -@string{CACM = "Communications of the ACM"} -@string{JACM = "Journal of the ACM"} -@string{SPE = "Software--Practice and Experience"} - -%% Conferences - -@string{PLDI = "ACM SIGPLAN Conference on Programming Language Design and Implementation"} -@string{ICSE = "International Conference on Software Engineering"} -@string{ISSTA = "Proc. ACM SIGSOFT Int'l Symp. on Software Testing and Analysis"} -@string{CASES = "Proc. Int'l Conf. on Compilers, Architecture and Synthesis for Embedded Systems (CASES)"} -@string{SAS = "Proc. Int'l Symp. on Static Analysis (SAS)"} -@string{ISCA = "Proc. Int'l Conf. on Computer Architecture (ISCA)"} -@string{ISCA = "ISCA"} -@string{CC = "Proc. Int'l Conf. on Compiler Construction (CC)"} -@string{PACT = "Proc. Int'l Conf. on Parallel Architectures and Compilation Techniques (PACT)"} -@string{ISMM = "Proc. Int'l Symp. On Memory Management (ISMM)"} -@string{ESEC = "Proc. European Software Engineering Conf. (ESEC)"} -@string{SIGMOD = "Proc. ACM SIGMOD Int'l Conf. on Management of Data (SIGMOD)"} -@string{ICS = "Proc. Int'l Conf. on Supercomputing (ICS)"} - -%% Workshops - -@string{LCPC = "Proc. Int'l Workshop on Languages and Compilers for - Parallel Computing (LCPC)"}, -@string{MSP = "Proc. ACM Workshop on Memory System Performance"} -%%@string{MSP = "MSP"} -@string{PASTE = "Proc. ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE)"} -@string{IWMM = "Proc. Int'l Workshop on Memory Management"} - -@string{WCRE = "Proc. Working Conf. on Reverse Engineering (WCRE)"} -@string{FMPC = "Proc. Symp. on the Frontiers of Massively Parallel Computation"} -@string{ICCD = "Proc. Int'l Conf. on Computer Design (CDES)"} -@string{CC = "Proc. Int'l Conf. on Compiler Construction (CC)"} -@string{IPDPS = "Proc. Int'l Parallel and Distributed Processing Symp."} - - -@article{BurkeTorczon:TOPLAS93, - author = {Michael Burke and Linda Torczon}, - title= {Interprocedural optimization: eliminating unnecessary recompilation}, - journal = TOPLAS, - volume = {15}, - number = {3}, - year = {1993}, - issn = {0164-0925}, - pages = {367--399}, - doi = {http://doi.acm.org/10.1145/169683.169678}, - publisher = {ACM Press}, - } - -@inproceedings{ sirer96writing, - author = "Emin G{\"u}n Sirer and Stefan Savage and Przemyslaw Pardyak and Greg P. DeFouw and Brian N. Bershad", - title = "Writing an Operating System Using {M}odula-3", - booktitle = "Workshop on Compiler Support for Systems Software", - year = "1996", - url = "citeseer.nj.nec.com/article/sirer96writing.html" } - - -@inproceedings{ghiya96is, - author = "Rakesh Ghiya and Laurie J. Hendren", - title = "Is it a Tree, a {DAG}, or a Cyclic Graph? A Shape Analysis for Heap-Directed Pointers in C", - booktitle = POPL, - pages = "1-15", - year = "1996", - url = "citeseer.nj.nec.com/ghiya96is.html" } - -@InProceedings{HPCMO:PLDI98, - Author = {A. Ayers and S. de Jong and J. Peyton and R. Schooler}, - Title = {Scalable Cross-Module Optimization}, - Booktitle = PLDI, - Address = "Montreal", - Month = Jun, - Year = 1998 -} - - -@Article{ConvexAppsCompiler:Sigplan94, - Title = {Developing an Interprocedural Optimizing Compiler}, - Author = {J. Loeliger and R. Metzger}, - Journal = "ACM Sigplan Notices", - Month = Apr, - Year = 1994, - Volume = 29, - Number = 4 -} - -@Article{LimLeeSha:PDCP, - Title = {Ensuring Integrity and Serivce Availability in a Web Based - Control Laboratory}, - Author = {Sungsoo Lim and Kihwal Lee and Lui Sha}, - Journal = "To appear in Journal of Parallel and - Distributed Computing Practices" -} - - - -@misc{franz97communications, - author = "M. Franz and T. Kistler", - title = "Communications of the ACM", - text = "Michael Franz and Thomas Kistler. Slim binaries. Communications of the - ACM, 40(12):8794, 1997.", - year = "1997" -} - -@book{JVM, - author = "Tim Lindholm and Frank Yellin", - title = "The {Java} Virtual Machine Specification", - publisher = "Ad{\-d}i{\-s}on-Wes{\-l}ey", - address = "Reading, MA", - isbn = "0-201-63452-X", - year = "1997" -} - -@manual{Ada:Manual, -note = {International Standard ISO/IEC 8652:1995}, -organization = {International Organisation for Standardisation}, -title = {Ada95 Reference Manual}, -year = {1995} -} - - -@misc{CLR, - author = "Microsoft", - title = "", - text = "The .NET Common Language Runtime, See web site at: http://msdn.microsoft.com/net" - } - -@misc{DougLea, - author = "Doug Lea", - title = "A memory allocator, see website at \\ - http://gee.cs.oswego.edu/dl/html/malloc.html" - } - -@misc{TinyOS, - title = "TinyOS, a component based OS for the networked sensor regime, See web site at: http://webs.cs.berkeley.edu/tos/" - } - -@inproceedings{Self, - author = "David Ungar and Randall B. Smith", - title = "Self: The Power of Simplicity", - booktitle = "Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications ({OOPSLA})", - journal = "SIGPLAN Notices", - volume = "22", - number = "12", - alt_publisher = "ACM Press", - alt_address = "New York, NY", - editor = "Norman Meyrowitz", - pages = "227--242", - year = "1987" -} - -@InProceedings{EMachine:PLDI02, - author = "Thomas A. Henzinger and Christoph M. Kirsch", - title = "The Embedded Machine: Predictable, Portable Real-Time Code", - booktitle = PLDI, - address = "Berlin, Germany", - month = Jun, - year = 2002 -} - -@InProceedings{GayAiken:PLDI01, - author = "David Gay and Alex Aiken", - title = "Language Support for Regions", - booktitle = PLDI, - address = "Snowbird, UT", - pages = "70-80", - month = Jun, - year = 2001 -} - -@InProceedings{BarrettZorn:PLDI93, - author = "D. A. Barret and B. G. Zorn", - title = "Using Lifetime Predictors to Improve Memory Allocation Performance", - booktitle = PLDI, - address = "Albuquerque, New Mexixo", - pages = "187-196", - month = Jun, - year = 1993 -} - -@InProceedings{ XuMillerReps:PLDI01, - author = "Zhichen Xu and Barton P. Miller and Thomas Reps", - title = "Safety checking of machine code", - booktitle = PLDI, - address = "Vancouver B.C., Canada", - pages = "70--82", - year = "2000", - } - -@inproceedings{CraryWalkerMorrisett:POPL99, - author = "Karl Crary and David Walker and Greg Morrisett", - title = "Typed Memory Management in a Calculus of Capabilities", - booktitle = POPL, - address = "New York, NY", - pages = "262--275", - year = "1999", -} - -@inproceedings{Wilhelm:CC00, - author = "R. Wilhelm and M. Sagiv and T. Reps", - title = "Shape analysis", - booktitle = "Proceedings of CC 2000: 9th Int. Conf. on Compiler Construction", - address = "Berlin, Ger.", - month = "Mar-Apr", - year = 2000 -} - -@inproceedings{Hallenberg:PLDI02, - author = "N. Hallenberg and M. Elsman and M. Tofte", - title = "Combining region inference and garbage collection", - booktitle = PLDI, - address = "Berlin, Germany", - month = Jun, - year = 2002 -} - -@inproceedings{AikenFL:PLDI95, - author = "A. Aiken and M. Fahndrich and R. Levien", - title = "Better static memory management: Improving region-based analysis -of higher-order languages", - booktitle = PLDI, - month = Jun, - year = 1995 -} - -@InProceedings{CCured:PLDI03, - author = "Jeremy Condit and Mathew Harren and Scott McPeak and George C. Necula and Westley Weimer", - title = "{CC}ured in the Real World", - booktitle = PLDI, - month = Jun, - year = 2003 -} - -@InProceedings{realtimeGarbage:POPL03, - author = "D.F. Bacon and P. Cheng and V.T. Rajan", - title = "A real-time garbage collector with low overhead and consisitent utilization", - booktitle = POPL, - month = Jan, - year = 2003 -} - -@Article{Pugh:CACM, - Author = {W. Pugh}, - Title = {A practical algorithm for exact array dependence analysis}, - Journal = CACM, - Volume = {35}, - Number = 8, - Pages = {102--114}, - Month = Aug, - Year = 1992} - -@InProceedings{Sha:Simplex1, - author = "Lui Sha", - title = "Dependable System Upgrades", - booktitle = "Proceedings of IEEE Real Time System Symposium", - year = 1998 -} - -@article{Sha:Simplex, - author = "Lui Sha", - title = "Using Simplicity to Control Complexity", - journal = "IEEE Software", - month = "July/August", - year = 2001 -} - -@misc{AlephOne:StackSmash, - author = "AlephOne", - title = "Smashing the Stack for Fun and Profit", - url = "http://www.fc.net/phrack/files/p49/p49-14", - note = "http://www.fc.net/phrack/files/p49/p49-14", -} - -@Inproceedings{ShankarFMT, - author = "Umesh Shankar and Kunal Talwar and Jeffrey S. Foster and David Wagner", - title = "Detecting Format String Vulnerabilities with Type Qualifiers", - booktitle = "10th USENIX Security Symposium", - address = "Washington,D.C.", - month = Aug, - year = 2001 -} - -@InProceedings{Mibench02, - author = "Matthew R. Guthaus and Jeffrey S. Ringenberg and Dan Ernst -and Todd M. Austin and Trevor Mudge and Richard B. Brown", - title = "MiBench: A free, commercially representative embedded benchmark suite ", - booktitle = "IEEE 4th Annual Workshop on Workload Characterization", - address = "Austin, TX", - month = Dec, - year = 2001 -} - -@inproceedings{ lee97mediabench, - author = "Chunho Lee and Miodrag Potkonjak and William H. Mangione-Smith", - title = "MediaBench: A Tool for Evaluating and Synthesizing Multimedia and Communicatons Systems", - booktitle = "International Symposium on Microarchitecture", - pages = "330-335", - year = "1997", -} - -@inproceedings{ Mate, - author = "P. Levis and D. Culler", - title = "Mate: A tiny virtual machine for sensor networks", - booktitle = "International Conference on Architectural Support for Programming Languages - and Operating Systems, San Jose, CA, USA", - month = "Oct.", - year = "2002", - url = "citeseer.nj.nec.com/levis02mate.html" } - -@inproceedings{ TAL:POPL99, - author = "Karl Crary and David Walker and Greg Morrisett", - title = "Typed Memory Management in a Calculus of Capabilities", - booktitle = POPL, - address = "New York, NY", - pages = "262--275", - year = "1999", - url = "citeseer.nj.nec.com/article/crary99typed.html" } - - -@article{walker01alias, - author = "David Walker and Greg Morrisett", - title = "Alias Types for Recursive Data Structures", - journal = "Lecture Notes in Comp. Sci.", - volume = "vol. 2071", - year = "2001", - url = "citeseer.nj.nec.com/walker00alias.html" } - -%% pages = "177", - -@TechReport{LattnerAdve:DSA, - Author = {Chris Lattner and Vikram Adve}, - Title = {Data Structure Analysis: An Efficient Context-Sensitive Heap -Analysis}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2003-2340}, - Type = {Tech. Report}, - Month = {Apr}, - Year = {2003}, - Keyword = {} -} - - -@InProceedings{CSSV:PLDI03, - author = "Nurit Dor and Michael Rodeh and Mooly Sagiv", - title = "CSSV: Towards a Realistic Tool for Statically Detecting All Buffer Overflows in C", - booktitle = PLDI, - year = "2003", - address = "San Diego", - month = Jun -} - -@inproceedings{ david94lclint, - author = "Evans, David and Guttag, John and Horning, James and Tan, Yang Meng", - title = "{LCL}int: A Tool for Using Specifications to Check Code", - booktitle = "Proceedings of the {ACM} {SIGSOFT} '94 Symposium on the Foundations of Software Engineering", - pages = "87-96", - year = "1994", - url = "citeseer.nj.nec.com/evans94lclint.html" -} - -@inproceedings{ jones97backwardscompatible, - author = "Richard W. M. Jones and Paul H. J. Kelly", - title = "Backwards-Compatible Bounds Checking for Arrays and Pointers in C Programs", - booktitle = "Automated and Algorithmic Debugging", - pages = "13-26", - year = "1997", - url = "citeseer.ist.psu.edu/jones97backwardscompatible.html" } - -@inproceedings{ruwase04practical, - author = "O. Ruwase and M. Lam", - title = "A Practical Dynamic Buffer Overflow Detector", - booktitle = "In Proceedings of the Network and Distributed System Security (NDSS) Symposium", - pages = "159--169", - month = February, - year = 2004, - address = {San Diego, CA, USA}, - url = "citeseer.ist.psu.edu/ruwase04practical.html"} - -@inproceedings{Xu:FSE04, - author = {Wei Xu and Daniel C. DuVarney and R. Sekar}, - title = {An efficient and backwards-compatible transformation to ensure memory safety of {C} programs}, - booktitle = {Proc. 12th ACM SIGSOFT Symposium on Foundations of Software Engineering}, - year = {2004}, - pages = {117--126}, - location = {Newport Beach, CA, USA}, -} - -@inproceedings{YongHorwitz:FSE03, - author = {Suan Hsi Yong and Susan Horwitz}, - title = {Protecting {C} Programs from Attacks via Invalid Pointer - Dereferences}, - booktitle = "Foundations of Software Engineering", - year = {2003}, - location = {Helsinki, Finland} -} - -@inproceedings{ mccanne93bsd, - author = "Steven McCanne and Van Jacobson", - title = "The {BSD} Packet Filter: A New Architecture for User-level Packet Capture", - booktitle = "{USENIX} Winter", - pages = "259-270", - year = "1993", - url = "citeseer.nj.nec.com/mccanne92bsd.html" } - - -@article{SFI:SOSP93, - author = "Robert Wahbe and Steven Lucco and Thomas E. Anderson and Susan L. Graham", - title = "Efficient Software-Based Fault Isolation", - journal = "ACM SIGOPS Operating Systems Review", - volume = "27", - number = "5", - pages = "203--216", - year = "1993", - url = "citeseer.nj.nec.com/wahbe93efficient.html" } - -@article{CCured:TOPLAS05, - author = {George C. Necula and - Jeremy Condit and - Matthew Harren and - Scott McPeak and - Westley Weimer}, - title = {CCured: type-safe retrofitting of legacy software.}, - journal = TOPLAS, - volume-comment = {27}, - number-comment = {3}, - year = {2005}, - pages-comment = {477-526}, - ee = {http://doi.acm.org/10.1145/1065892}, - bibsource = {DBLP, http://dblp.uni-trier.de} -} - - - - -@inproceedings{DADY:ISSTA04, - author = {Nurit Dor and Stephen Adams and Manuvir Das and Zhe Yang}, - title = {Software validation via scalable path-sensitive value flow analysis}, - booktitle = {Proc. of ACM SIGSOFT international symposium on Software testing and analysis}, - year = {2004}, - isbn = {1-58113-820-2}, - location = {Boston, Massachusetts, USA}, - doi = {http://doi.acm.org/10.1145/1007512.1007515}, - } - - @inproceedings{BCC, - author = {Samuel C. Kendall}, - title = {BCC: Runtime Checking for C programs}, - booktitle = {In Proceedings of the USENIX}, - year = {1983}, - } - - @inproceedings{RTCC, - author = {Joseph L. Steffen}, - title = {Adding Run-Time Checking to the Portable C Compiler}, - booktitle = {Software: Practice and Experience}, - Month = April, - year = {1992}, - } - - @TechReport{Omega, - Author = {Wayne Kelly and Vadim Maslov and William Pugh and - Evan Rosser and Tatiana Shpeisman and David Wonnacott}, - Title = {{T}he {O}mega {L}ibrary {I}nterface {G}uide}, - Institution = {Computer Science Dept., U. Maryland, College Park}, - Month = Apr, - Year = 1996 - } - - @TechReport{SAFECode:TR04, - Author = {Dinakar Dhurjati and Sumant Kowshik and Vikram Adve}, - Title = {{SAFEC}ode: Enabling Sound Static Analysis for Weakly Typed Languages}, - Institution = {Computer Science Dept., Univ of Illinois, Urbana-Champaign}, - Year = 2004 - } - -@InProceedings{SafeC:PLDI94, - author = "Todd M. Austin and Scott E. Breach and Gurindar S. Sohi", - title = "Efficient Detection of All Pointer and Array Access Errors", - booktitle = PLDI, - month = Jun, - year = 1994 -} - - -@InProceedings{leroy04, - author = "X. Leroy", - title = " Exploiting type systems and static analyses for smart card security", - booktitle = "Cassis International Workshop", - address = "Marseille", - month = Mar, - year = 2004 -} - -@TechReport{LattnerAdve:LLVMTR1, - Author = {Chris Lattner and Vikram Adve}, - Title = {The {LLVM} {I}nstruction {S}et and {C}ompilation {S}trategy}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2002-2292}, - Type = {Tech. Report}, - Month = {Aug}, - Year = {2002}, - URL = {\tt http://llvm.cs.uiuc.edu/pubs/LLVMCompilationStrategy.pdf}, - Annote = { CATEGORY: COMPILERS: SCALAR: SYSTEMS } -} - -@TechReport{LattnerAdve:LLVMTR1, - Author = {Chris Lattner and Vikram Adve}, - Title = {The {LLVM} {I}nstruction {S}et and {C}ompilation {S}trategy}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2002-2292}, - Type = {Tech. Report}, - Month = {Aug}, - Year = {2002}, - URL = {\tt http://llvm.cs.uiuc.edu/pubs/LLVMCompilationStrategy.pdf}, - Annote = { CATEGORY: COMPILERS: SCALAR: SYSTEMS } -} - -@TechReport{LattnerAdve:DSGTR031, - Author = {Chris Lattner and Vikram Adve}, - Title = {{D}ata {S}tructure {A}nalysis: {A} {F}ast and {S}calable {C}ontext-{S}ensitive {H}eap {A}nalysis}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2003-2340}, - Type = {Tech. Report}, - URL = {\tt http://llvm.cs.uiuc.edu/pubs/2003-04-29-DataStructureAnalysisTR.html}, - Annote = { CATEGORY: COMPILERS: SCALAR: POINTER, HEAP, AND SHAPE ANALYSIS } -} - -@TechReport{LattnerAdve:PoolAllocTR041, - Author = {Chris Lattner and Vikram Adve}, - Title = {Automatic Pool Allocation: Compile-Time Control of - Data Structure Layout in the Heap}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2004-2465}, - Type = {Tech. Report}, - Annote = { CATEGORY: COMPILERS: SCALAR: POINTER, HEAP, AND SHAPE ANALYSIS } -} - -@inproceedings{Ghiya:PLDI01, - author = {Rakesh Ghiya and Daniel Lavery and David Sehr}, - title = {On the importance of points-to analysis and other memory disambiguation methods for C programs}, - booktitle = PLDI, - year = {2001}, - isbn = {1-58113-414-2}, - pages = {47--58}, - location = {Snowbird, Utah, United States}, - doi = {http://doi.acm.org/10.1145/378795.378806}, - alt_publisher = {ACM Press}, - alt_address = {New York, NY, USA}, - } - - @article{WrightSyntactic, - author = {Andrew K. Wright and Matthias Felleisen}, - title = {A syntactic approach to type soundness}, - journal = {Inf. Comput.}, - volume = {115}, - number = {1}, - year = {1994}, - issn = {0890-5401}, - pages = {38--94}, - doi = {http://dx.doi.org/10.1006/inco.1994.1093}, - alt_publisher = {Academic Press, Inc.}, - alt_address = {Duluth, MN, USA}, - } - - - - @phdthesis{Olden, - author = {Martin Christopher Carlisle}, - title = {Olden: parallelizing programs with dynamic data structures on distributed-memory machines}, - year = {1996}, - order_no = {UMI Order No. GAX96-27387}, - publisher = {Princeton University}, - } - - @TechReport{Omega, - Author = {Wayne Kelly and Vadim Maslov and William Pugh and - Evan Rosser and Tatiana Shpeisman and David Wonnacott}, - Title = {{T}he {O}mega {L}ibrary {I}nterface {G}uide}, - Institution = {Computer Science Dept., U. Maryland, College Park}, - Month = Apr, - Year = 1996 - } - -@article{Loginov:FASE01, - author = "Alexey Loginov and Suan Hsi Yong and Susan Horwitz and Thomas Reps", - title = "Debugging via Run-Time Type Checking", - journal = "Lecture Notes in Computer Science", - year = "2001", - url = "citeseer.ist.psu.edu/loginov01debugging.html" } - - -@Article{PatilFisher:Debugging97, - author = "Harish Patil and Charles Fischer", - title = "Low-cost, Concurrent Checking of Pointer and Array Accesses - in C Programs", - journal = "Software--Practice and Experience", - volume = "27", - number = "1", - pages = "87-110", - year = "1997", - url = "citeseer.ist.psu.edu/64347.html" -} - - -@InProceedings{OORegions:PLDI04, - author = {Wei-Ngan Chin and Florin Craciun and Shengchao Qin and - Martin Rinard}, - title = {Region Inference for an Object-Oriented Language}, - booktitle = PLDI, - year = {2004}, - month = {June}, -} - - - -@inproceedings{PatilFisher:Debugging95, - author = "Harish Patil and Charles N. Fischer", - title = "Efficient Run-time Monitoring Using Shadow Processing", - booktitle = "Automated and Algorithmic Debugging", - pages = "119-132", - year = "1995", - url = "citeseer.ist.psu.edu/patil95efficient.html" } - -@InProceedings{purify, - author = "Reed Hastings and Bob Joyce", - title = "Purify: Fast detection of memory leaks and access errors", - booktitle = "{Winter USENIX}", - year = 1992 -} - -@misc{valgrind, - author = "J. Seward", - title = "Valgrind, an open-source memory debugger for x86-GNU/Linux", - url = "http://developer.kde.org/~sewardj/", -} - -@InProceedings{leroy04, - author = "X. Leroy", - title = " Exploiting type systems and static analyses for smart card security", - booktitle = "Cassis International Workshop", - address = "Marseille", - month = Mar, - year = 2004 -} - -@InProceedings{ Henzinger:BLAST03, - author = "T. Henzinger and R. Jhala and R. Majumdar and G. Sutre", - title = "Software verification with {B}last", - booktitle = "Tenth International Workshop on Model Checking of Software (SPIN)", - pages = "235--239", - year = "2003", - url = "citeseer.ist.psu.edu/henzinger03software.html" -} - -@TechReport{LattnerAdve:LLVMTR1, - Author = {Chris Lattner and Vikram Adve}, - Title = {The {LLVM} {I}nstruction {S}et and {C}ompilation {S}trategy}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2002-2292}, - Type = {Tech. Report}, - Month = {Aug}, - Year = {2002}, - URL = {\tt http://llvm.cs.uiuc.edu/pubs/LLVMCompilationStrategy.pdf}, - Annote = { CATEGORY: COMPILERS: SCALAR: SYSTEMS } -} - -@TechReport{LattnerAdve:LLVMTR1, - Author = {Chris Lattner and Vikram Adve}, - Title = {The {LLVM} {I}nstruction {S}et and {C}ompilation {S}trategy}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2002-2292}, - Type = {Tech. Report}, - Month = {Aug}, - Year = {2002}, - URL = {\tt http://llvm.cs.uiuc.edu/pubs/LLVMCompilationStrategy.pdf}, - Annote = { CATEGORY: COMPILERS: SCALAR: SYSTEMS } -} - -@TechReport{LattnerAdve:DSGTR031, - Author = {Chris Lattner and Vikram Adve}, - Title = {{D}ata {S}tructure {A}nalysis: {A} {F}ast and {S}calable {C}ontext-{S}ensitive {H}eap {A}nalysis}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2003-2340}, - Type = {Tech. Report}, - URL = {\tt http://llvm.cs.uiuc.edu/pubs/2003-04-29-DataStructureAnalysisTR.html}, - Annote = { CATEGORY: COMPILERS: SCALAR: POINTER, HEAP, AND SHAPE ANALYSIS } -} - -@TechReport{LattnerAdve:PoolAllocTR041, - Author = {Chris Lattner and Vikram Adve}, - Title = {Automatic Pool Allocation: Compile-Time Control of - Data Structure Layout in the Heap}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2004-2465}, - Type = {Tech Report}, - Annote = { CATEGORY: COMPILERS: SCALAR: POINTER, HEAP, AND SHAPE ANALYSIS } -} - -@inproceedings{zitser, - author = {Misha Zitser and Richard Lippmann and Tim Leek}, - title = {Testing static analysis tools using exploitable buffer overflows from open source code}, - booktitle = {Proceedings of the 12th ACM SIGSOFT symposium on Foundations of software engineering}, - year = {2004}, - isbn = {1-58113-855-5}, - location = {Newport Beach, CA, USA}, - doi = {http://doi.acm.org/10.1145/1029894.1029911}, - } - - @inproceedings{zhivich, - author = { Michael Zhivich and Tim Leek and Richard Lippmann}, - title = { Dynamic Buffer Overflow Detection }, - booktitle = {BUGS : Workshop on the Evaluation of Software Defect Detection Tools}, - year = {2005}, - location = {Chicago, IL, USA}, - } - - - -@inproceedings{SAFECode:PLDI06, - author = { Dinakar Dhurjati and Sumant Kowshik and Vikram Adve}, - title = { {SAFEC}ode: Enforcing Alias Analysis for Weakly Typed Languages}, - booktitle = PLDI, - year = {2006}, - month = {June}, - address = {Ottawa, Canada}, - pages = {144--157}, -} - -@inproceedings{DA:ICSE06, - author = {Dinakar Dhurjati and Vikram Adve}, - title = {Backwards-Compatible Array Bounds Checking for {C} with Very Low Overhead}, - booktitle = ICSE, - month = May, - year = 2006, - address = {Shanghai, China}, - pages = {162--171}, -} - - -@inproceedings{Jha:CCS, - author = {Vinod Ganapathy and Somesh Jha and David Chandler and David Melski and David Vitek}, - title = {Buffer overrun detection using linear programming and static analysis}, - booktitle = {Proceedings of the 10th ACM conference on Computer and communications security}, - year = {2003}, - isbn = {1-58113-738-9}, - location = {Washington D.C., USA}, - doi = {http://doi.acm.org/10.1145/948109.948155}, - alt_address = {New York, NY, USA} - } - - @article{ARCHER, - author = {Yichen Xie and Andy Chou and Dawson Engler}, - title = {ARCHER: using symbolic, path-sensitive analysis to detect memory access errors}, - journal = {SIGSOFT Softw. Eng. Notes}, - volume = {28}, - number = {5}, - year = {2003}, - issn = {0163-5948}, - pages = {327--336}, - doi = {http://doi.acm.org/10.1145/949952.940115}, - alt_publisher = {ACM Press}, - alt_address = {New York, NY, USA}, - } - - @inproceedings{Rugina:PLDI00, - author = {Radu Rugina and Martin Rinard}, - title = {Symbolic bounds analysis of pointers, array indices, and accessed memory regions}, - booktitle = PLDI, - year = {2000}, - isbn = {1-58113-199-2}, - pages = {182--195}, - location = {Vancouver, British Columbia, Canada}, - doi = {http://doi.acm.org/10.1145/349299.349325}, - alt_publisher = {ACM Press}, - alt_address = {New York, NY, USA}, - } - -@inproceedings{Parafait:FSE10, - author = {Li, Lian and Cifuentes, Cristina and Keynes, Nathan}, - title = {Practical and effective symbolic analysis for buffer overflow detection}, - booktitle = {Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering}, - series = {FSE '10}, - year = {2010}, - isbn = {978-1-60558-791-2}, - location = {Santa Fe, New Mexico, USA}, - pages = {317--326}, - numpages = {10}, - url = {http://doi.acm.org/10.1145/1882291.1882338}, - doi = {http://doi.acm.org/10.1145/1882291.1882338}, - acmid = {1882338}, - publisher = {ACM}, - address = {New York, NY, USA}, - keywords = {demand-driven, scalability, static program analysis}, -} - -@TechReport{DKA:SAFECodeTR05, - Author = {Dinakar Dhurjati and Sumant Kowshik and Vikram Adve}, - Title = {Enforcing Alias Analysis for Weakly Typed Languages}, - Institution = {Computer Science Dept., - Univ. of Illinois at Urbana-Champaign}, - Number = {UIUCDCS-R-2005-2657}, - Type = {Tech Report}, - Month = {Oct}, - Year = {2005}, - Keyword = {}, - note = {See {\tt http://safecode.cs.uiuc.edu/}} -} -@inproceedings{Cyclone:ISMM04, - author = {Michael Hicks and Greg Morrisett and Dan Grossman and Trevor Jim}, - title = {Experience with safe manual memory-management in {C}yclone}, - booktitle = {Proc. of the 4th international symposium on Memory management (ISMM)}, - year = {2004}, - isbn = {1-58113-945-4}, - location = {Vancouver, BC, Canada}, - doi = {http://doi.acm.org/10.1145/1029873.1029883}, - } - -@INPROCEEDINGS{MemSafe:SCAM10, - author={Simpson, M.S. and Barua, R.K.}, - booktitle={Source Code Analysis and Manipulation (SCAM), 2010 10th IEEE Working Conference on}, - title={MemSafe: Ensuring the Spatial and Temporal Memory Safety of C at Runtime}, - year={2010}, - month={sept.}, - volume={}, - number={}, - pages={199 -208}, - keywords={C programs;MemSafe;manual code modifications;memory access violations;memory error detection;metadata representation;spatial memory safety;temporal memory safety;C language;meta data;}, - doi={10.1109/SCAM.2010.15}, - ISSN={} -} - - @techreport{TofteMLkit, - author = "Mads Tofte and Lars Birkedal and Martin Elsman and Niels Hallenberg and Tommy H{\o}jfeld Olesen and Peter Sestoft and Peter Bertelsen", - title = "Programming with {R}egions in the {ML} {K}it", - number = "DIKU-TR-97/12", - year = "1997", - url = "citeseer.ist.psu.edu/tofte97programming.html" } - -@inproceedings{REAPS:OOPSLA02, - author = "E. Berger and B. Zorn and K. McKinley", - title = "Reconsidering custom memory allocation", - booktitle = {Proc. Conference on Object-Oriented - Programming: Systems, Languages, and Applications }, - year = {2002}, - url = {citeseer.ist.psu.edu/article/berger04reconsidering.html}, - } - -@misc{LinuxMRemap:Torvalds, - author = "Linus Torvalds", - title = "mremap feature discussion, See {\tt http://lkml.org/lkml/2004/1/12/265}" -} - -@misc{CVSdoublefree, - author = "Igor Dobrovitski", - title = "Exploit for CVS double free() for linux pserver. {\tt http://seclists.org/lists/bugtraq/ - 2003/Feb/0042.html}", - year = {2003}, - month = {Feb} -} - -@misc{Mysqldoublefree, - title = "{M}y{SQL} Double Free Heap Corruption Vulnerability. {\tt http: - //www.securityfocus.com/bid/6718/info}", - year = {2003}, - month = {Jan} -} - -@misc{Kerberosdoublefree, - title = "{MITKRB5-SA}: double free vulnerabilities. {\tt http: - //seclists.org/lists/bugtraq/2004/Sep/ - 0015.html}", - year = {2004}, - month = {Aug} -} - -@misc{EFENCE, - author = "Bruce Perens", - title = "Electric fence \textsl{malloc} Debugger", - HowPublished = "{\tt http:// - perens.com/FreeSoftware/ElectricFence/ }" -} - -@misc{PageHeap, - author = "Microsoft", - title = "How to use {P}ageheap.exe in {W}indows {XP} and {W}indows 2000", - HowPublished = "{\tt http://support. - microsoft.com/?kbid=286470 }" -} - -@MastersThesis{Younan:2003:OCP, - author = "Yves Younan", - title = "An overview of common programming security - vulnerabilities and possible solutions", - school = "Vrije Universiteit Brussel", - year = "2003" -} - -@InProceedings{DA:DSN06, - author = "Dinakar Dhurjati and Vikram Adve", - title = "Efficiently Detecting All Dangling Pointer Uses in Production Servers", - booktitle = "Proc. Int'l Conf. on Dependable Systems and Networks (DSN)", - month = Jun, - year = 2006, - address = {Philadelphia, USA}, -} - - -@inproceedings{HR:POPL05, - author = {Brian Hackett and Radu Rugina}, - title = {Region-based shape analysis with tracked locations}, - booktitle = {POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages}, - year = {2005}, - isbn = {1-58113-830-X}, - pages = {310--323}, - location = {Long Beach, California, USA}, - doi = {http://doi.acm.org/10.1145/1040305.1040331}, - alt_publisher = {ACM Press}, - alt_address = {New York, NY, USA}, - } - - @inproceedings{HDWY:ICSE06, - author = {Brian Hackett and Manuvir Das and Daniel Wang and Zhe Yang}, - title = {Modular Checking for Buffer Overflows in the Large}, - booktitle = ICSE, - address = {Shanghai, China}, - year = {2006}, -} - - @inproceedings{DieHard:PLDI06, - author = {Emery Berger and Ben Zorn}, - title = {DieHard: Probabilistic Memory Safety for Unsafe Languages}, - booktitle = PLDI, - year = {2006}, - location = {Ottawa, Canada}, - } - - - -@InProceedings{SPIN:SOSP95, - author = {Brian Bershad and Stefan Savage and Przemyslaw Pardyak and Emin Gun Sirer and David Becker and Marc Fiuczynski and Craig Chambers and Susan Eggers}, - title = {Extensibility, {S}afety and {P}erformance in the {SPIN} {O}perating {S}ystem}, - booktitle = SOSP, - pages = {267--284}, - year = {1995}, - address = {Copper Mountain, CO, USA}, -} - - -@InProceedings{PacketFilter:SOSP87, - author = {Jeffrey C. Mogul and Richard F. Rashid and Michael J. Accetta}, - title = {The packet filter: An efficient mechanism for user-level network code}, - booktitle = SOSP, - pages = {39-51,}, - year = {1987}, - address = {Austin, TX}, -} - - -@article{Nooks:TOCS05, - author = {Michael M. Swift and Brian N. Bershad and Henry M. Levy}, - title = {Improving the reliability of commodity operating systems}, - journal = TOCS, - volume = {23}, - number = {1}, - year = {2005}, - issn = {0734-2071}, - pages = {77--110}, - doi = {http://doi.acm.org/10.1145/1047915.1047919}, - alt_publisher-comment = {ACM Press}, - alt_address-comment = {New York, NY, USA}, -} - -@InProceedings{NooksRecovery:OSDI04, - author = "Michael M. Swift and Muthukaruppan Annamalai and Brian N. Bershad and Henry M. Levy", - title = "Recovering device drivers", - booktitle = OSDI, - address-comment = "San Francisco, CA, USA", - month = Dec, - year = "2004", - url = "citeseer.ist.psu.edu/swift04recovering.html" -} - -@InProceedings{OKE:OpenArch02, - author = {Herbert Bos and Bart Samwel}, - title = {Safe {K}ernel {P}rogramming in the {OKE}}, - booktitle = {Proceedings of OpenArch'2002}, - year = {2002}, - month = {June}, - address = {New York, NY}, -} - -@InProceedings{XTP:SOSP03, - author = {Parveen Patel and Andrew Whitaker and David Wetherall and - Jay Lepreau and Tim Stack}, - title = {Upgrading Transport Protocols using Untrusted Mobile Code}, - booktitle = SOSP, - year = {2003}, - address = {Bolton Landing, USA}, - month = {October}, -} - -@InProceedings{Mondrix:SOSP05, - author = {Emmett Witchel and Junghwan Rhee and Krste Asanovic}, - title = {Mondrix: Memory Isolation for Linux using Mondriaan Memory Protection}, - booktitle = SOSP, - year = {2005}, - address = {Brighton, UK}, - month = {October}, - pages = {31--44} -} - -@InProceedings{Mondrian:ASPLOS02, - author = {Emmett Witchel and Josh Cates and Krste Asanovic.}, - title = {Mondrian memory protection}, - booktitle = ASPLOS, - year = {2002}, - address = {San Jose, CA, USA}, - month = {October}, - pages = {304--316} -} - - -@phdthesis{ PCC:NeculaThesis98, - author = "George C. Necula", - title = "Compiling with Proofs", - year = "1998", - school = "Carnegie Mellon University", - url = "citeseer.ist.psu.edu/necula98compiling.html" } - -@inproceedings{TALx86:99, - author = "Greg Morrisett and Karl Crary and Neal Glew and Dan Grossman and Richard Samuels and Frederick Smith and David Walker and Stephanie Weirich and Steve Zdancewic", - title = "{TALx86}: {A} Realistic Typed Assembly Language", - booktitle = WCSSS, - pages = "25--35", - year = 1999, - month = may, - address = "Atlanta, GA, USA", -} - -@inproceedings{AppelFelty:POPL00, - author = {Andrew W. Appel and Amy P. Felty}, - title = "{A Semantic Model of Types and Machine Instructions for Proof-Carrying Code}", - booktitle = POPL, - pages = "243--253", - alt_address-comment = {Boston, MA}, - alt_publisher-comment = {ACM Press}, - year = {2000}, - month = {Jan}, - url = {citeseer.ist.psu.edu/appel00semantic.html} } - - -@inproceedings{SplayTrees:STOC83, - author = {Daniel Dominic Sleator and Robert Endre Tarjan}, - title = {Self-adjusting binary trees}, - booktitle = STOC, - year = {1983}, - isbn = {0-89791-099-0}, - pages-comment = {235--245}, - doi-comment = {http://doi.acm.org/10.1145/800061.808752}, - alt_publishe-comment = {ACM Press}, - alt_address-comment = {New York, NY, USA}, -} - -@INPROCEEDINGS{RTL:DAC02, -author={Brinkmann, R. and Drechsler, R.}, -booktitle={Design Automation Conference, 2002. Proceedings of ASP-DAC 2002. 7th Asia and South Pacific and the 15th International Conference on VLSI Design. Proceedings.}, -title={RTL-datapath verification using integer linear programming}, -year={2002}, -volume={}, -number={}, -pages={741 -746}, -keywords={HDL operators;RTL-datapath verification;VHDL;Verilog-HDL designs;arithmetic properties;bitvector arithmetic;decision procedure;formal verification;hardware description language;integer linear arithmetic constraints;integer linear programming;modulo semantics;register transfer level;digital arithmetic;formal verification;hardware description languages;integer programming;linear programming;logic CAD;}, -doi={10.1109/ASPDAC.2002.995022}, -ISSN={} -} - -@inproceedings{BaggyBoundsChecking:UsenixSec09, - author = {Akritidis, Periklis and Costa, Manuel and Castro, Miguel and -Hand, Steven}, - title = {Baggy bounds checking: an efficient and backwards-compatible -defense against out-of-bounds errors}, - booktitle = {Proceedings of the 18th conference on USENIX security -symposium}, - series = {SSYM'09}, - year = {2009}, - location = {Montreal, Canada}, - pages = {51--66}, - numpages = {16}, - url = {http://dl.acm.org/citation.cfm?id=1855768.1855772}, - acmid = {1855772}, - publisher = {USENIX Association}, - address = {Berkeley, CA, USA}, -} - diff --git a/cfar-report/titling.sty b/cfar-report/titling.sty deleted file mode 100644 index ed2eb33c57d418f5e99f3809bd65d158be55f539..0000000000000000000000000000000000000000 --- a/cfar-report/titling.sty +++ /dev/null @@ -1,270 +0,0 @@ -%% -%% This is file `titling.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% titling.dtx (with options: `usc') -%% -%% ----------------------------------------------------------------- -%% Author: Peter Wilson (Herries Press) -%% Maintainer: Will Robertson (will dot robertson at latex-project dot org) -%% Copyright 2000--2004 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any -%% later version: <http://www.latex-project.org/lppl.txt> -%% -%% This work has the LPPL maintenance status "maintained". -%% The Current Maintainer of this work is Will Robertson. -%% -%% This work consists of the files listed in the README file. -%% ----------------------------------------------------------------- -%% -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{titling}[2009/09/04 v2.1d maketitle typesetting] - -\newcommand{\pretitle}[1]{\def\@bspretitle{#1}} -\newcommand{\posttitle}[1]{\def\@bsposttitle{#1}} -\newcommand{\preauthor}[1]{\def\@bspreauthor{#1}} -\newcommand{\postauthor}[1]{\def\@bspostauthor{#1}} -\newcommand{\predate}[1]{\def\@bspredate{#1}} -\newcommand{\postdate}[1]{\def\@bspostdate{#1}} - -\if@titlepage - \pretitle{\begin{center}\LARGE} - \posttitle{\par\end{center}\vskip 2em} - \preauthor{\begin{center} - \large \lineskip .75em% - \begin{tabular}[t]{c}} - \postauthor{\end{tabular}\par\end{center}} - \predate{\begin{center}\large} - \postdate{\par\end{center}} -\else - \pretitle{\begin{center}\LARGE} - \posttitle{\par\end{center}\vskip 0.5em} - \preauthor{\begin{center} - \large \lineskip .5em% - \begin{tabular}[t]{c}} - \postauthor{\end{tabular}\par\end{center}} - \predate{\begin{center}\large} - \postdate{\par\end{center}} -\fi - -\newcommand{\maketitlehooka}{} -\newcommand{\maketitlehookb}{} -\newcommand{\maketitlehookc}{} -\newcommand{\maketitlehookd}{} - -\newcommand{\thanksmarkseries}[1]{% - \def\@bsmarkseries{\renewcommand{\thefootnote}{\@nameuse{#1}{footnote}}}} -\newcommand{\symbolthanksmark}{\thanksmarkseries{\fnsymbol}} -\newcommand{\@bscontmark}{\setcounter{footnote}{0}} -\newcommand{\continuousmarks}{\def\@bscontmark{}} -\newcommand{\thanksheadextra}[2]{% - \def\@bsthanksheadpre{#1}% - \def\@bsthanksheadpost{#2}} -\newcommand{\thanksfootextra}[2]{% - \def\thanksfootpre{#1}% - \def\thanksfootpost{#2}} - -\DeclareRobustCommand{\thanksmark}[1]{\footnotemark[#1]} -\newcommand{\thanksgap}[1]{\hspace{#1}} -\newcommand{\tamark}{\@thefnmark} - -\newlength{\thanksmarkwidth} -\newlength{\thanksmargin} -\newcommand{\thanksscript}[1]{\textsuperscript{#1}} -\newcommand{\makethanksmarkhook}{} - -\newcommand{\thanksfootmark}{% - \hb@xt@\thanksmarkwidth{\hfil\normalfont\thanksscript{% - \thanksfootpre \tamark \thanksfootpost}}} - -\newcommand{\makethanksmark}{% - \leavevmode% - \makethanksmarkhook\relax - \parindent 1em\noindent - \leftskip\thanksmargin\relax - \advance\leftskip \thanksmarkwidth \null\nobreak\hskip -\leftskip - \thanksfootmark -} - -\newcommand{\usethanksrule}{\let\footnoterule\thanksrule} -\newcommand{\cancelthanksrule}{\let\footnoterule\@bsfootnoterule} - -\if@titlepage - \thanksmarkseries{arabic} % normal footnote numbers -\else - \thanksmarkseries{fnsymbol} -\fi -\thanksheadextra{}{} -\thanksfootextra{}{} -\setlength{\thanksmarkwidth}{1.8em} -\setlength{\thanksmargin}{-\thanksmarkwidth} - -\AtBeginDocument{% - \let\thanksrule\footnoterule - \let\@bsfootnoterule\footnoterule -} - -\newlength{\droptitle} -\setlength{\droptitle}{0pt} - -\providecommand{\maketitle}{} -\if@titlepage - \renewcommand{\maketitle}{\begin{titlepage}% - \let\footnotesize\small - \let\footnoterule\relax - \let \footnote \thanks - \@bsmarkseries - \def\@makefnmark{\rlap{\@textsuperscript{% - \normalfont\@bsthanksheadpre \tamark \@bsthanksheadpost}}}% - \long\def\@makefntext##1{\makethanksmark ##1} - \null\vfil - \vskip 60\p@ - \vspace*{\droptitle} - \maketitlehooka - {\@bspretitle \@title \@bsposttitle} - \maketitlehookb - {\@bspreauthor \@author \@bspostauthor} - \maketitlehookc - {\@bspredate \@date \@bspostdate} - \maketitlehookd - \par - \@thanks - \vfil\null - \end{titlepage}% - \@bscontmark % \setcounter{footnote}{0}% -%%% \@bsmtitlempty - } % end titlepage defs -\else - \renewcommand{\maketitle}{\par - \begingroup - \@bsmarkseries - \def\@makefnmark{\rlap{\@textsuperscript{% - \normalfont\@bsthanksheadpre \tamark \@bsthanksheadpost}}}% - \long\def\@makefntext##1{\makethanksmark ##1} - \if@twocolumn - \ifnum \col@number=\@ne - \@maketitle - \else - \twocolumn[\@maketitle]% - \fi - \else - \newpage - \global\@topnum\z@ - \@maketitle - \fi - \thispagestyle{plain}\@thanks - \endgroup - \@bscontmark % \setcounter{footnote}{0}% -%%% \@bsmtitlempty - } % end non-titlepage - - \def\@maketitle{% - \newpage - \null - \vskip 2em% - \vspace*{\droptitle} - \maketitlehooka - {\@bspretitle \@title \@bsposttitle} - \maketitlehookb - {\@bspreauthor \@author \@bspostauthor} - \maketitlehookc - {\@bspredate \@date \@bspostdate} - \maketitlehookd - \par - \vskip 1.5em} -\fi - -\newenvironment{titlingpage}% - {% - \let\footnoterule\relax - \let\footnotesize\small - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse - \fi - \thispagestyle{empty} - \setcounter{page}\@ne - }{% - \thispagestyle{empty} - \if@restonecol\twocolumn \else \newpage \fi - \if@twoside\else \setcounter{page}\@ne\fi} - -\newcommand{\calccentering}[2]{ - #1 = \paperwidth - \advance #1 by -\textwidth - \divide #1 by \tw@ - \advance #1 by -#2 - \advance #1 by -\hoffset - \advance #1 by -1in -} - -\newcommand{\emptythanks}{\global\let\@thanks\@empty} - -\newcommand{\@bsmtitlempty}{% - \global\let\maketitle\relax - \global\let\@maketitle\relax - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\thanksmarkseries\relax - \global\let\thanksheadextra\relax - \global\let\thanksfootextra\relax - \global\let\thanksmark\relax - \global\let\thanksgap\relax -} - -\newcommand{\keepthetitle}{% - \@bsmtitlempty - \global\let\thanks\relax - \global\let\and\relax - \global\let\@thanks\@empty - \global\let\@title\@empty - \global\let\@author\@empty - \global\let\@date\@empty -} - -\providecommand{\killtitle}{} -\renewcommand{\killtitle}{% - \keepthetitle - \global\let\thetitle\relax - \global\let\theauthor\relax - \global\let\thedate\relax -} - -\providecommand{\appendiargdef}[2]{\begingroup - \toks@\expandafter{#1{##1}#2}% - \edef\@bsx{\endgroup \def\noexpand#1####1{\the\toks@}}% - \@bsx} - -\appendiargdef{\title}{% - \begingroup - \renewcommand{\thanks}[1]{} - \renewcommand{\thanksmark}[1]{} - \renewcommand{\thanksgap}[1]{} - \protected@xdef\thetitle{#1} - \endgroup} -\appendiargdef{\author}{% - \begingroup - \renewcommand{\thanks}[1]{} - \renewcommand{\and}{\unskip, } - \renewcommand{\thanksmark}[1]{} - \renewcommand{\thanksgap}[1]{} - \protected@xdef\theauthor{#1} - \endgroup} -\appendiargdef{\date}{% - \begingroup - \renewcommand{\thanks}[1]{} - \renewcommand{\thanksmark}[1]{} - \renewcommand{\thanksgap}[1]{} - \protected@xdef\thedate{#1} - \endgroup} - -\endinput -%% -%% End of file `titling.sty'. diff --git a/libclc/built_libs/nvptx--nvidiacl.bc b/libclc/built_libs/nvptx--nvidiacl.bc deleted file mode 100644 index 2029cff09cd4fd0335e22062ec317023e164cdb2..0000000000000000000000000000000000000000 Binary files a/libclc/built_libs/nvptx--nvidiacl.bc and /dev/null differ diff --git a/libclc/built_libs/nvptx64--nvidiacl.bc b/libclc/built_libs/nvptx64--nvidiacl.bc deleted file mode 100644 index 52f0427eda623fc7106cf3acfe269353f7949ad3..0000000000000000000000000000000000000000 Binary files a/libclc/built_libs/nvptx64--nvidiacl.bc and /dev/null differ diff --git a/libclc/generic/include/clc/as_type.h b/libclc/generic/include/clc/as_type.h deleted file mode 100644 index 0bb9ee2e8313b59698965b20f10b36d3e22fe585..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/as_type.h +++ /dev/null @@ -1,68 +0,0 @@ -#define as_char(x) __builtin_astype(x, char) -#define as_uchar(x) __builtin_astype(x, uchar) -#define as_short(x) __builtin_astype(x, short) -#define as_ushort(x) __builtin_astype(x, ushort) -#define as_int(x) __builtin_astype(x, int) -#define as_uint(x) __builtin_astype(x, uint) -#define as_long(x) __builtin_astype(x, long) -#define as_ulong(x) __builtin_astype(x, ulong) -#define as_float(x) __builtin_astype(x, float) - -#define as_char2(x) __builtin_astype(x, char2) -#define as_uchar2(x) __builtin_astype(x, uchar2) -#define as_short2(x) __builtin_astype(x, short2) -#define as_ushort2(x) __builtin_astype(x, ushort2) -#define as_int2(x) __builtin_astype(x, int2) -#define as_uint2(x) __builtin_astype(x, uint2) -#define as_long2(x) __builtin_astype(x, long2) -#define as_ulong2(x) __builtin_astype(x, ulong2) -#define as_float2(x) __builtin_astype(x, float2) - -#define as_char3(x) __builtin_astype(x, char3) -#define as_uchar3(x) __builtin_astype(x, uchar3) -#define as_short3(x) __builtin_astype(x, short3) -#define as_ushort3(x) __builtin_astype(x, ushort3) -#define as_int3(x) __builtin_astype(x, int3) -#define as_uint3(x) __builtin_astype(x, uint3) -#define as_long3(x) __builtin_astype(x, long3) -#define as_ulong3(x) __builtin_astype(x, ulong3) -#define as_float3(x) __builtin_astype(x, float3) - -#define as_char4(x) __builtin_astype(x, char4) -#define as_uchar4(x) __builtin_astype(x, uchar4) -#define as_short4(x) __builtin_astype(x, short4) -#define as_ushort4(x) __builtin_astype(x, ushort4) -#define as_int4(x) __builtin_astype(x, int4) -#define as_uint4(x) __builtin_astype(x, uint4) -#define as_long4(x) __builtin_astype(x, long4) -#define as_ulong4(x) __builtin_astype(x, ulong4) -#define as_float4(x) __builtin_astype(x, float4) - -#define as_char8(x) __builtin_astype(x, char8) -#define as_uchar8(x) __builtin_astype(x, uchar8) -#define as_short8(x) __builtin_astype(x, short8) -#define as_ushort8(x) __builtin_astype(x, ushort8) -#define as_int8(x) __builtin_astype(x, int8) -#define as_uint8(x) __builtin_astype(x, uint8) -#define as_long8(x) __builtin_astype(x, long8) -#define as_ulong8(x) __builtin_astype(x, ulong8) -#define as_float8(x) __builtin_astype(x, float8) - -#define as_char16(x) __builtin_astype(x, char16) -#define as_uchar16(x) __builtin_astype(x, uchar16) -#define as_short16(x) __builtin_astype(x, short16) -#define as_ushort16(x) __builtin_astype(x, ushort16) -#define as_int16(x) __builtin_astype(x, int16) -#define as_uint16(x) __builtin_astype(x, uint16) -#define as_long16(x) __builtin_astype(x, long16) -#define as_ulong16(x) __builtin_astype(x, ulong16) -#define as_float16(x) __builtin_astype(x, float16) - -#ifdef cl_khr_fp64 -#define as_double(x) __builtin_astype(x, double) -#define as_double2(x) __builtin_astype(x, double2) -#define as_double3(x) __builtin_astype(x, double3) -#define as_double4(x) __builtin_astype(x, double4) -#define as_double8(x) __builtin_astype(x, double8) -#define as_double16(x) __builtin_astype(x, double16) -#endif diff --git a/libclc/generic/include/clc/atomic/atomic_add.h b/libclc/generic/include/clc/atomic/atomic_add.h deleted file mode 100644 index 66d897805ca4cee0779211217a4ad42f9013ef54..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/atomic/atomic_add.h +++ /dev/null @@ -1,3 +0,0 @@ -#define __CLC_FUNCTION atomic_add -#include <clc/atomic/atomic_decl.inc> -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/atomic/atomic_dec.h b/libclc/generic/include/clc/atomic/atomic_dec.h deleted file mode 100644 index 621905f21d3e7a9f55a2ce9d3f59eba6e988de88..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/atomic/atomic_dec.h +++ /dev/null @@ -1 +0,0 @@ -#define atomic_dec(p) atomic_sub(p, 1); diff --git a/libclc/generic/include/clc/atomic/atomic_decl.inc b/libclc/generic/include/clc/atomic/atomic_decl.inc deleted file mode 100644 index 03d01aa045e30c86576cb403c84afd1b6abe3b98..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/atomic/atomic_decl.inc +++ /dev/null @@ -1,10 +0,0 @@ - -#define __CLC_DECLARE_ATOMIC(ADDRSPACE, TYPE) \ - _CLC_OVERLOAD _CLC_DECL TYPE __CLC_FUNCTION (volatile ADDRSPACE TYPE *, TYPE); - -#define __CLC_DECLARE_ATOMIC_ADDRSPACE(TYPE) \ - __CLC_DECLARE_ATOMIC(global, TYPE); \ - __CLC_DECLARE_ATOMIC(local, TYPE); - -__CLC_DECLARE_ATOMIC_ADDRSPACE(int); -__CLC_DECLARE_ATOMIC_ADDRSPACE(uint); diff --git a/libclc/generic/include/clc/atomic/atomic_inc.h b/libclc/generic/include/clc/atomic/atomic_inc.h deleted file mode 100644 index 2137391980418ae3ddc667907022b623d896cc00..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/atomic/atomic_inc.h +++ /dev/null @@ -1 +0,0 @@ -#define atomic_inc(p) atomic_add(p, 1); diff --git a/libclc/generic/include/clc/atomic/atomic_sub.h b/libclc/generic/include/clc/atomic/atomic_sub.h deleted file mode 100644 index 576a3ab1f395f91af324152e73e86e279956a40c..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/atomic/atomic_sub.h +++ /dev/null @@ -1,3 +0,0 @@ -#define __CLC_FUNCTION atomic_sub -#include <clc/atomic/atomic_decl.inc> -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h deleted file mode 100644 index 9740b3ddab63183c10cbc4a931ebeec0792373ac..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h +++ /dev/null @@ -1,2 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL int atom_add(global int *p, int val); -_CLC_OVERLOAD _CLC_DECL unsigned int atom_add(global unsigned int *p, unsigned int val); diff --git a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h deleted file mode 100644 index bbc872ce0527e37713dcf3c55b9fc4c82846b774..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h +++ /dev/null @@ -1,2 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL int atom_dec(global int *p); -_CLC_OVERLOAD _CLC_DECL unsigned int atom_dec(global unsigned int *p); diff --git a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h deleted file mode 100644 index 050747c7940342a1043a6228ccdc73aa5f9f46ca..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h +++ /dev/null @@ -1,2 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL int atom_inc(global int *p); -_CLC_OVERLOAD _CLC_DECL unsigned int atom_inc(global unsigned int *p); diff --git a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h deleted file mode 100644 index c435c726798ced2aa6a70afa150cd4d7b8cedb75..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h +++ /dev/null @@ -1,2 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL int atom_sub(global int *p, int val); -_CLC_OVERLOAD _CLC_DECL unsigned int atom_sub(global unsigned int *p, unsigned int val); diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h deleted file mode 100644 index 9815c56e3b5a03dc6bae72817d386833ddba14f8..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/clc.h +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef cl_clang_storage_class_specifiers -#error Implementation requires cl_clang_storage_class_specifiers extension! -#endif - -#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers : enable - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -/* Function Attributes */ -#include <clc/clcfunc.h> - -/* 6.1 Supported Data Types */ -#include <clc/clctypes.h> - -/* 6.2.3 Explicit Conversions */ -#include <clc/convert.h> - -/* 6.2.4.2 Reinterpreting Types Using as_type() and as_typen() */ -#include <clc/as_type.h> - -/* 6.9 Preprocessor Directives and Macros */ -#include <clc/clcversion.h> - -/* 6.11.1 Work-Item Functions */ -#include <clc/workitem/get_global_size.h> -#include <clc/workitem/get_global_id.h> -#include <clc/workitem/get_local_size.h> -#include <clc/workitem/get_local_id.h> -#include <clc/workitem/get_num_groups.h> -#include <clc/workitem/get_group_id.h> - -/* 6.11.2 Math Functions */ -#include <clc/math/atan.h> -#include <clc/math/atan2.h> -#include <clc/math/copysign.h> -#include <clc/math/cos.h> -#include <clc/math/ceil.h> -#include <clc/math/exp.h> -#include <clc/math/exp10.h> -#include <clc/math/exp2.h> -#include <clc/math/fabs.h> -#include <clc/math/floor.h> -#include <clc/math/fma.h> -#include <clc/math/fmax.h> -#include <clc/math/fmin.h> -#include <clc/math/hypot.h> -#include <clc/math/log.h> -#include <clc/math/log2.h> -#include <clc/math/mad.h> -#include <clc/math/mix.h> -#include <clc/math/nextafter.h> -#include <clc/math/pow.h> -#include <clc/math/pown.h> -#include <clc/math/rint.h> -#include <clc/math/round.h> -#include <clc/math/sin.h> -#include <clc/math/sincos.h> -#include <clc/math/sqrt.h> -#include <clc/math/trunc.h> -#include <clc/math/native_cos.h> -#include <clc/math/native_divide.h> -#include <clc/math/native_exp.h> -#include <clc/math/native_exp10.h> -#include <clc/math/native_exp2.h> -#include <clc/math/native_log.h> -#include <clc/math/native_log2.h> -#include <clc/math/native_powr.h> -#include <clc/math/native_sin.h> -#include <clc/math/native_sqrt.h> -#include <clc/math/rsqrt.h> - -/* 6.11.2.1 Floating-point macros */ -#include <clc/float/definitions.h> - -/* 6.11.3 Integer Functions */ -#include <clc/integer/abs.h> -#include <clc/integer/abs_diff.h> -#include <clc/integer/add_sat.h> -#include <clc/integer/clz.h> -#include <clc/integer/hadd.h> -#include <clc/integer/mad24.h> -#include <clc/integer/mad_hi.h> -#include <clc/integer/mul24.h> -#include <clc/integer/mul_hi.h> -#include <clc/integer/rhadd.h> -#include <clc/integer/rotate.h> -#include <clc/integer/sub_sat.h> -#include <clc/integer/upsample.h> - -/* 6.11.3 Integer Definitions */ -#include <clc/integer/definitions.h> - -/* 6.11.2 and 6.11.3 Shared Integer/Math Functions */ -#include <clc/shared/clamp.h> -#include <clc/shared/max.h> -#include <clc/shared/min.h> -#include <clc/shared/vload.h> -#include <clc/shared/vstore.h> - -/* 6.11.4 Common Functions */ -#include <clc/common/sign.h> - -/* 6.11.5 Geometric Functions */ -#include <clc/geometric/cross.h> -#include <clc/geometric/dot.h> -#include <clc/geometric/length.h> -#include <clc/geometric/normalize.h> - -/* 6.11.6 Relational Functions */ -#include <clc/relational/all.h> -#include <clc/relational/any.h> -#include <clc/relational/bitselect.h> -#include <clc/relational/isequal.h> -#include <clc/relational/isgreater.h> -#include <clc/relational/isgreaterequal.h> -#include <clc/relational/isless.h> -#include <clc/relational/islessequal.h> -#include <clc/relational/isnan.h> -#include <clc/relational/isnotequal.h> -#include <clc/relational/select.h> -#include <clc/relational/signbit.h> - -/* 6.11.8 Synchronization Functions */ -#include <clc/synchronization/cl_mem_fence_flags.h> -#include <clc/synchronization/barrier.h> - -/* 6.11.11 Atomic Functions */ -#include <clc/atomic/atomic_add.h> -#include <clc/atomic/atomic_dec.h> -#include <clc/atomic/atomic_inc.h> -#include <clc/atomic/atomic_sub.h> - -/* cl_khr_global_int32_base_atomics Extension Functions */ -#include <clc/cl_khr_global_int32_base_atomics/atom_add.h> -#include <clc/cl_khr_global_int32_base_atomics/atom_dec.h> -#include <clc/cl_khr_global_int32_base_atomics/atom_inc.h> -#include <clc/cl_khr_global_int32_base_atomics/atom_sub.h> - -/* libclc internal defintions */ -#ifdef __CLC_INTERNAL -#include <math/clc_nextafter.h> -#endif - -#pragma OPENCL EXTENSION all : disable diff --git a/libclc/generic/include/clc/clcfunc.h b/libclc/generic/include/clc/clcfunc.h deleted file mode 100644 index 5f166c5a4143e1ac3a97b00285a7a714a04bd189..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/clcfunc.h +++ /dev/null @@ -1,4 +0,0 @@ -#define _CLC_OVERLOAD __attribute__((overloadable)) -#define _CLC_DECL -#define _CLC_DEF __attribute__((always_inline)) -#define _CLC_INLINE __attribute__((always_inline)) inline diff --git a/libclc/generic/include/clc/clctypes.h b/libclc/generic/include/clc/clctypes.h deleted file mode 100644 index ca1372d0892720b7949c667ca2c05657d76556b3..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/clctypes.h +++ /dev/null @@ -1,86 +0,0 @@ -/* 6.1.1 Built-in Scalar Data Types */ - -#include <stddef.h> - -typedef unsigned char uchar; -typedef unsigned short ushort; -typedef unsigned int uint; -typedef unsigned long ulong; - -#define __stdint_join3(a,b,c) a ## b ## c - -#define __intn_t(n) __stdint_join3(__INT, n, _TYPE__) -#define __uintn_t(n) __stdint_join3(unsigned __INT, n, _TYPE__) - -typedef __intn_t(__INTPTR_WIDTH__) intptr_t; -typedef __uintn_t(__INTPTR_WIDTH__) uintptr_t; - -#undef __uintn_t -#undef __intn_t -#undef __stdint_join3 - -/* 6.1.2 Built-in Vector Data Types */ - -typedef __attribute__((ext_vector_type(2))) char char2; -typedef __attribute__((ext_vector_type(3))) char char3; -typedef __attribute__((ext_vector_type(4))) char char4; -typedef __attribute__((ext_vector_type(8))) char char8; -typedef __attribute__((ext_vector_type(16))) char char16; - -typedef __attribute__((ext_vector_type(2))) uchar uchar2; -typedef __attribute__((ext_vector_type(3))) uchar uchar3; -typedef __attribute__((ext_vector_type(4))) uchar uchar4; -typedef __attribute__((ext_vector_type(8))) uchar uchar8; -typedef __attribute__((ext_vector_type(16))) uchar uchar16; - -typedef __attribute__((ext_vector_type(2))) short short2; -typedef __attribute__((ext_vector_type(3))) short short3; -typedef __attribute__((ext_vector_type(4))) short short4; -typedef __attribute__((ext_vector_type(8))) short short8; -typedef __attribute__((ext_vector_type(16))) short short16; - -typedef __attribute__((ext_vector_type(2))) ushort ushort2; -typedef __attribute__((ext_vector_type(3))) ushort ushort3; -typedef __attribute__((ext_vector_type(4))) ushort ushort4; -typedef __attribute__((ext_vector_type(8))) ushort ushort8; -typedef __attribute__((ext_vector_type(16))) ushort ushort16; - -typedef __attribute__((ext_vector_type(2))) int int2; -typedef __attribute__((ext_vector_type(3))) int int3; -typedef __attribute__((ext_vector_type(4))) int int4; -typedef __attribute__((ext_vector_type(8))) int int8; -typedef __attribute__((ext_vector_type(16))) int int16; - -typedef __attribute__((ext_vector_type(2))) uint uint2; -typedef __attribute__((ext_vector_type(3))) uint uint3; -typedef __attribute__((ext_vector_type(4))) uint uint4; -typedef __attribute__((ext_vector_type(8))) uint uint8; -typedef __attribute__((ext_vector_type(16))) uint uint16; - -typedef __attribute__((ext_vector_type(2))) long long2; -typedef __attribute__((ext_vector_type(3))) long long3; -typedef __attribute__((ext_vector_type(4))) long long4; -typedef __attribute__((ext_vector_type(8))) long long8; -typedef __attribute__((ext_vector_type(16))) long long16; - -typedef __attribute__((ext_vector_type(2))) ulong ulong2; -typedef __attribute__((ext_vector_type(3))) ulong ulong3; -typedef __attribute__((ext_vector_type(4))) ulong ulong4; -typedef __attribute__((ext_vector_type(8))) ulong ulong8; -typedef __attribute__((ext_vector_type(16))) ulong ulong16; - -typedef __attribute__((ext_vector_type(2))) float float2; -typedef __attribute__((ext_vector_type(3))) float float3; -typedef __attribute__((ext_vector_type(4))) float float4; -typedef __attribute__((ext_vector_type(8))) float float8; -typedef __attribute__((ext_vector_type(16))) float float16; - -/* 9.3 Double Precision Floating-Point */ - -#ifdef cl_khr_fp64 -typedef __attribute__((ext_vector_type(2))) double double2; -typedef __attribute__((ext_vector_type(3))) double double3; -typedef __attribute__((ext_vector_type(4))) double double4; -typedef __attribute__((ext_vector_type(8))) double double8; -typedef __attribute__((ext_vector_type(16))) double double16; -#endif diff --git a/libclc/generic/include/clc/clcversion.h b/libclc/generic/include/clc/clcversion.h deleted file mode 100644 index 57c989e3b713bb70530d99ff66a511b0ad6a647b..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/clcversion.h +++ /dev/null @@ -1,8 +0,0 @@ -#if __OPENCL_VERSION__ >= 110 -#define CLC_VERSION_1_0 100 -#define CLC_VERSION_1_1 110 -#endif - -#if __OPENCL_VERSION__ >= 120 -#define CLC_VERSION_1_2 120 -#endif diff --git a/libclc/generic/include/clc/common/sign.h b/libclc/generic/include/clc/common/sign.h deleted file mode 100644 index fa9aa096541f19e426687dcb80e5b279fcf690c2..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/common/sign.h +++ /dev/null @@ -1,5 +0,0 @@ -#define __CLC_FUNCTION sign -#define __CLC_BODY <clc/math/unary_decl.inc> -#include <clc/math/gentype.inc> -#undef __CLC_FUNCTION -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/convert.h b/libclc/generic/include/clc/convert.h deleted file mode 100644 index f0ba796864d4dd6645582c802a3128f250ca46ed..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/convert.h +++ /dev/null @@ -1,60 +0,0 @@ -#define _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ - _CLC_OVERLOAD _CLC_DECL TO_TYPE convert_##TO_TYPE##SUFFIX(FROM_TYPE x); - -#define _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ - _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ - _CLC_CONVERT_DECL(FROM_TYPE##2, TO_TYPE##2, SUFFIX) \ - _CLC_CONVERT_DECL(FROM_TYPE##3, TO_TYPE##3, SUFFIX) \ - _CLC_CONVERT_DECL(FROM_TYPE##4, TO_TYPE##4, SUFFIX) \ - _CLC_CONVERT_DECL(FROM_TYPE##8, TO_TYPE##8, SUFFIX) \ - _CLC_CONVERT_DECL(FROM_TYPE##16, TO_TYPE##16, SUFFIX) - -#define _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, char, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uchar, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, int, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uint, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, short, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ushort, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, long, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ulong, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, float, SUFFIX) - -#ifdef cl_khr_fp64 -#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \ - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, double, SUFFIX) -#else -#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) -#endif - -#define _CLC_VECTOR_CONVERT_TO1(SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(char, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(uchar, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(int, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(uint, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(short, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(ushort, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(long, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(ulong, SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(float, SUFFIX) - -#ifdef cl_khr_fp64 -#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \ - _CLC_VECTOR_CONVERT_TO1(SUFFIX) \ - _CLC_VECTOR_CONVERT_FROM(double, SUFFIX) -#else -#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \ - _CLC_VECTOR_CONVERT_TO1(SUFFIX) -#endif - -#define _CLC_VECTOR_CONVERT_TO_SUFFIX(ROUND) \ - _CLC_VECTOR_CONVERT_TO(_sat##ROUND) \ - _CLC_VECTOR_CONVERT_TO(ROUND) - -_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtn) -_CLC_VECTOR_CONVERT_TO_SUFFIX(_rte) -_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtz) -_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtp) -_CLC_VECTOR_CONVERT_TO_SUFFIX() diff --git a/libclc/generic/include/clc/float/definitions.h b/libclc/generic/include/clc/float/definitions.h deleted file mode 100644 index 329b6238c3f494c224c9d03f68362085acab3f27..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/float/definitions.h +++ /dev/null @@ -1,74 +0,0 @@ -#define MAXFLOAT 0x1.fffffep127f -#define HUGE_VALF __builtin_huge_valf() -#define INFINITY __builtin_inff() -#define NAN __builtin_nanf("") - -#define FLT_DIG 6 -#define FLT_MANT_DIG 24 -#define FLT_MAX_10_EXP +38 -#define FLT_MAX_EXP +128 -#define FLT_MIN_10_EXP -37 -#define FLT_MIN_EXP -125 -#define FLT_RADIX 2 -#define FLT_MAX MAXFLOAT -#define FLT_MIN 0x1.0p-126f -#define FLT_EPSILON 0x1.0p-23f - -#define M_E_F 0x1.5bf0a8p+1f -#define M_LOG2E_F 0x1.715476p+0f -#define M_LOG10E_F 0x1.bcb7b2p-2f -#define M_LN2_F 0x1.62e430p-1f -#define M_LN10_F 0x1.26bb1cp+1f -#define M_PI_F 0x1.921fb6p+1f -#define M_PI_2_F 0x1.921fb6p+0f -#define M_PI_4_F 0x1.921fb6p-1f -#define M_1_PI_F 0x1.45f306p-2f -#define M_2_PI_F 0x1.45f306p-1f -#define M_2_SQRTPI_F 0x1.20dd76p+0f -#define M_SQRT2_F 0x1.6a09e6p+0f -#define M_SQRT1_2_F 0x1.6a09e6p-1f - -#ifdef cl_khr_fp64 - -#define HUGE_VAL __builtin_huge_val() - -#define DBL_DIG 15 -#define DBL_MANT_DIG 53 -#define DBL_MAX_10_EXP +308 -#define DBL_MAX_EXP +1024 -#define DBL_MIN_10_EXP -307 -#define DBL_MIN_EXP -1021 -#define DBL_MAX 0x1.fffffffffffffp1023 -#define DBL_MIN 0x1.0p-1022 -#define DBL_EPSILON 0x1.0p-52 - -#define M_E 0x1.5bf0a8b145769p+1 -#define M_LOG2E 0x1.71547652b82fep+0 -#define M_LOG10E 0x1.bcb7b1526e50ep-2 -#define M_LN2 0x1.62e42fefa39efp-1 -#define M_LN10 0x1.26bb1bbb55516p+1 -#define M_PI 0x1.921fb54442d18p+1 -#define M_PI_2 0x1.921fb54442d18p+0 -#define M_PI_4 0x1.921fb54442d18p-1 -#define M_1_PI 0x1.45f306dc9c883p-2 -#define M_2_PI 0x1.45f306dc9c883p-1 -#define M_2_SQRTPI 0x1.20dd750429b6dp+0 -#define M_SQRT2 0x1.6a09e667f3bcdp+0 -#define M_SQRT1_2 0x1.6a09e667f3bcdp-1 - -#endif - -#ifdef cl_khr_fp16 - -#if __OPENCL_VERSION__ >= 120 - -#define HALF_DIG 3 -#define HALF_MANT_DIG 11 -#define HALF_MAX_10_EXP +4 -#define HALF_MAX_EXP +16 -#define HALF_MIN_10_EXP -4 -#define HALF_MIN_EXP -13 - -#endif - -#endif diff --git a/libclc/generic/include/clc/geometric/cross.h b/libclc/generic/include/clc/geometric/cross.h deleted file mode 100644 index eee0cc81bb924ae773240aaf987e410853a9358d..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/geometric/cross.h +++ /dev/null @@ -1,7 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL float3 cross(float3 p0, float3 p1); -_CLC_OVERLOAD _CLC_DECL float4 cross(float4 p0, float4 p1); - -#ifdef cl_khr_fp64 -_CLC_OVERLOAD _CLC_DECL double3 cross(double3 p0, double3 p1); -_CLC_OVERLOAD _CLC_DECL double4 cross(double4 p0, double4 p1); -#endif diff --git a/libclc/generic/include/clc/geometric/distance.h b/libclc/generic/include/clc/geometric/distance.h deleted file mode 100644 index 3e91332d78380c10730a9614e85c1753f0b16d29..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/geometric/distance.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/geometric/distance.inc> -#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/include/clc/geometric/dot.h b/libclc/generic/include/clc/geometric/dot.h deleted file mode 100644 index 7f65fed9760d422ed2af5b520e78c8635a002951..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/geometric/dot.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/geometric/dot.inc> -#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/include/clc/geometric/dot.inc b/libclc/generic/include/clc/geometric/dot.inc deleted file mode 100644 index 34245e2935a47337edba02582bfce70e990d08a7..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/geometric/dot.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_FLOAT dot(__CLC_FLOATN p0, __CLC_FLOATN p1); diff --git a/libclc/generic/include/clc/geometric/floatn.inc b/libclc/generic/include/clc/geometric/floatn.inc deleted file mode 100644 index fb7a9ae601cd3ba0183f50e9bee71ed1f308ae29..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/geometric/floatn.inc +++ /dev/null @@ -1,45 +0,0 @@ -#define __CLC_FLOAT float - -#define __CLC_FLOATN float -#include __CLC_BODY -#undef __CLC_FLOATN - -#define __CLC_FLOATN float2 -#include __CLC_BODY -#undef __CLC_FLOATN - -#define __CLC_FLOATN float3 -#include __CLC_BODY -#undef __CLC_FLOATN - -#define __CLC_FLOATN float4 -#include __CLC_BODY -#undef __CLC_FLOATN - -#undef __CLC_FLOAT - -#ifdef cl_khr_fp64 - -#define __CLC_FLOAT double - -#define __CLC_FLOATN double -#include __CLC_BODY -#undef __CLC_FLOATN - -#define __CLC_FLOATN double2 -#include __CLC_BODY -#undef __CLC_FLOATN - -#define __CLC_FLOATN double3 -#include __CLC_BODY -#undef __CLC_FLOATN - -#define __CLC_FLOATN double4 -#include __CLC_BODY -#undef __CLC_FLOATN - -#undef __CLC_FLOAT - -#endif - -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/geometric/length.h b/libclc/generic/include/clc/geometric/length.h deleted file mode 100644 index cb992b9bc72ec79b699100a59a8240ace5c4b090..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/geometric/length.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/geometric/length.inc> -#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/include/clc/geometric/length.inc b/libclc/generic/include/clc/geometric/length.inc deleted file mode 100644 index c2d95e876831b8896acec310b2d27773e4b85f63..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/geometric/length.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_FLOAT length(__CLC_FLOATN p0); diff --git a/libclc/generic/include/clc/geometric/normalize.h b/libclc/generic/include/clc/geometric/normalize.h deleted file mode 100644 index dccff9b4e0414203f79395ccaa59fcfe2d8fdefa..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/geometric/normalize.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/geometric/normalize.inc> -#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/include/clc/geometric/normalize.inc b/libclc/generic/include/clc/geometric/normalize.inc deleted file mode 100644 index 6eb13150603e6f7e64d905b442bfb22a64cb13ea..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/geometric/normalize.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_FLOATN normalize(__CLC_FLOATN p); diff --git a/libclc/generic/include/clc/integer/abs.h b/libclc/generic/include/clc/integer/abs.h deleted file mode 100644 index 77a4cbeb4fe37a3aa60a8ffc76cf2afe2a452f42..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/abs.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/integer/abs.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/abs.inc b/libclc/generic/include/clc/integer/abs.inc deleted file mode 100644 index 952bce7e29e36323472ecfd6d1047d899b261603..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/abs.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_U_GENTYPE abs(__CLC_GENTYPE x); diff --git a/libclc/generic/include/clc/integer/abs_diff.h b/libclc/generic/include/clc/integer/abs_diff.h deleted file mode 100644 index 3f3b4b43c5d7ca830a1920625c77dbc8dc5d709a..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/abs_diff.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/integer/abs_diff.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/abs_diff.inc b/libclc/generic/include/clc/integer/abs_diff.inc deleted file mode 100644 index e844d46e808bbc4944a0e6b7169c9b85e958f0d4..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/abs_diff.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_U_GENTYPE abs_diff(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/add_sat.h b/libclc/generic/include/clc/integer/add_sat.h deleted file mode 100644 index 2e5e69851442c387fbebe2c4476b600efe329998..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/add_sat.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/integer/add_sat.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/add_sat.inc b/libclc/generic/include/clc/integer/add_sat.inc deleted file mode 100644 index 913841a1dada557f84498bf309c0d2715f5ac733..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/add_sat.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE add_sat(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/clz.h b/libclc/generic/include/clc/integer/clz.h deleted file mode 100644 index f7cdbf78ec06075517fef47733b01f17e8457bd3..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/clz.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/integer/clz.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/clz.inc b/libclc/generic/include/clc/integer/clz.inc deleted file mode 100644 index 45826d10c9fafe429c3ea4d1f80fc35c92177e47..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/clz.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE clz(__CLC_GENTYPE x); diff --git a/libclc/generic/include/clc/integer/definitions.h b/libclc/generic/include/clc/integer/definitions.h deleted file mode 100644 index a407974a0d4e9aa221b3644b47986df87f920957..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/definitions.h +++ /dev/null @@ -1,15 +0,0 @@ -#define CHAR_BIT 8 -#define INT_MAX 2147483647 -#define INT_MIN -2147483648 -#define LONG_MAX 0x7fffffffffffffffL -#define LONG_MIN -0x8000000000000000L -#define SCHAR_MAX 127 -#define SCHAR_MIN -128 -#define CHAR_MAX 127 -#define CHAR_MIN -128 -#define SHRT_MAX 32767 -#define SHRT_MIN -32768 -#define UCHAR_MAX 255 -#define USHRT_MAX 65535 -#define UINT_MAX 0xffffffff -#define ULONG_MAX 0xffffffffffffffffUL diff --git a/libclc/generic/include/clc/integer/gentype.inc b/libclc/generic/include/clc/integer/gentype.inc deleted file mode 100644 index 6f4d6996d8f59aa801b0de6406f5f26edf1b7667..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/gentype.inc +++ /dev/null @@ -1,435 +0,0 @@ -//These 2 defines only change when switching between data sizes or base types to -//keep this file manageable. -#define __CLC_GENSIZE 8 -#define __CLC_SCALAR_GENTYPE char - -#define __CLC_GENTYPE char -#define __CLC_U_GENTYPE uchar -#define __CLC_S_GENTYPE char -#define __CLC_SCALAR 1 -#include __CLC_BODY -#undef __CLC_SCALAR -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE char2 -#define __CLC_U_GENTYPE uchar2 -#define __CLC_S_GENTYPE char2 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE char3 -#define __CLC_U_GENTYPE uchar3 -#define __CLC_S_GENTYPE char3 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE char4 -#define __CLC_U_GENTYPE uchar4 -#define __CLC_S_GENTYPE char4 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE char8 -#define __CLC_U_GENTYPE uchar8 -#define __CLC_S_GENTYPE char8 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE char16 -#define __CLC_U_GENTYPE uchar16 -#define __CLC_S_GENTYPE char16 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#undef __CLC_SCALAR_GENTYPE -#define __CLC_SCALAR_GENTYPE uchar - -#define __CLC_GENTYPE uchar -#define __CLC_U_GENTYPE uchar -#define __CLC_S_GENTYPE char -#define __CLC_SCALAR 1 -#include __CLC_BODY -#undef __CLC_SCALAR -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uchar2 -#define __CLC_U_GENTYPE uchar2 -#define __CLC_S_GENTYPE char2 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uchar3 -#define __CLC_U_GENTYPE uchar3 -#define __CLC_S_GENTYPE char3 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uchar4 -#define __CLC_U_GENTYPE uchar4 -#define __CLC_S_GENTYPE char4 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uchar8 -#define __CLC_U_GENTYPE uchar8 -#define __CLC_S_GENTYPE char8 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uchar16 -#define __CLC_U_GENTYPE uchar16 -#define __CLC_S_GENTYPE char16 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#undef __CLC_GENSIZE -#define __CLC_GENSIZE 16 -#undef __CLC_SCALAR_GENTYPE -#define __CLC_SCALAR_GENTYPE short - -#define __CLC_GENTYPE short -#define __CLC_U_GENTYPE ushort -#define __CLC_S_GENTYPE short -#define __CLC_SCALAR 1 -#include __CLC_BODY -#undef __CLC_SCALAR -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE short2 -#define __CLC_U_GENTYPE ushort2 -#define __CLC_S_GENTYPE short2 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE short3 -#define __CLC_U_GENTYPE ushort3 -#define __CLC_S_GENTYPE short3 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE short4 -#define __CLC_U_GENTYPE ushort4 -#define __CLC_S_GENTYPE short4 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE short8 -#define __CLC_U_GENTYPE ushort8 -#define __CLC_S_GENTYPE short8 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE short16 -#define __CLC_U_GENTYPE ushort16 -#define __CLC_S_GENTYPE short16 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#undef __CLC_SCALAR_GENTYPE -#define __CLC_SCALAR_GENTYPE ushort - -#define __CLC_GENTYPE ushort -#define __CLC_U_GENTYPE ushort -#define __CLC_S_GENTYPE short -#define __CLC_SCALAR 1 -#include __CLC_BODY -#undef __CLC_SCALAR -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ushort2 -#define __CLC_U_GENTYPE ushort2 -#define __CLC_S_GENTYPE short2 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ushort3 -#define __CLC_U_GENTYPE ushort3 -#define __CLC_S_GENTYPE short3 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ushort4 -#define __CLC_U_GENTYPE ushort4 -#define __CLC_S_GENTYPE short4 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ushort8 -#define __CLC_U_GENTYPE ushort8 -#define __CLC_S_GENTYPE short8 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ushort16 -#define __CLC_U_GENTYPE ushort16 -#define __CLC_S_GENTYPE short16 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#undef __CLC_GENSIZE -#define __CLC_GENSIZE 32 -#undef __CLC_SCALAR_GENTYPE -#define __CLC_SCALAR_GENTYPE int - -#define __CLC_GENTYPE int -#define __CLC_U_GENTYPE uint -#define __CLC_S_GENTYPE int -#define __CLC_SCALAR 1 -#include __CLC_BODY -#undef __CLC_SCALAR -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE int2 -#define __CLC_U_GENTYPE uint2 -#define __CLC_S_GENTYPE int2 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE int3 -#define __CLC_U_GENTYPE uint3 -#define __CLC_S_GENTYPE int3 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE int4 -#define __CLC_U_GENTYPE uint4 -#define __CLC_S_GENTYPE int4 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE int8 -#define __CLC_U_GENTYPE uint8 -#define __CLC_S_GENTYPE int8 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE int16 -#define __CLC_U_GENTYPE uint16 -#define __CLC_S_GENTYPE int16 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#undef __CLC_SCALAR_GENTYPE -#define __CLC_SCALAR_GENTYPE uint - -#define __CLC_GENTYPE uint -#define __CLC_U_GENTYPE uint -#define __CLC_S_GENTYPE int -#define __CLC_SCALAR 1 -#include __CLC_BODY -#undef __CLC_SCALAR -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uint2 -#define __CLC_U_GENTYPE uint2 -#define __CLC_S_GENTYPE int2 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uint3 -#define __CLC_U_GENTYPE uint3 -#define __CLC_S_GENTYPE int3 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uint4 -#define __CLC_U_GENTYPE uint4 -#define __CLC_S_GENTYPE int4 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uint8 -#define __CLC_U_GENTYPE uint8 -#define __CLC_S_GENTYPE int8 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE uint16 -#define __CLC_U_GENTYPE uint16 -#define __CLC_S_GENTYPE int16 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#undef __CLC_GENSIZE -#define __CLC_GENSIZE 64 -#undef __CLC_SCALAR_GENTYPE -#define __CLC_SCALAR_GENTYPE long - -#define __CLC_GENTYPE long -#define __CLC_U_GENTYPE ulong -#define __CLC_S_GENTYPE long -#define __CLC_SCALAR 1 -#include __CLC_BODY -#undef __CLC_SCALAR -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE long2 -#define __CLC_U_GENTYPE ulong2 -#define __CLC_S_GENTYPE long2 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE long3 -#define __CLC_U_GENTYPE ulong3 -#define __CLC_S_GENTYPE long3 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE long4 -#define __CLC_U_GENTYPE ulong4 -#define __CLC_S_GENTYPE long4 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE long8 -#define __CLC_U_GENTYPE ulong8 -#define __CLC_S_GENTYPE long8 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE long16 -#define __CLC_U_GENTYPE ulong16 -#define __CLC_S_GENTYPE long16 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#undef __CLC_SCALAR_GENTYPE -#define __CLC_SCALAR_GENTYPE ulong - -#define __CLC_GENTYPE ulong -#define __CLC_U_GENTYPE ulong -#define __CLC_S_GENTYPE long -#define __CLC_SCALAR 1 -#include __CLC_BODY -#undef __CLC_SCALAR -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ulong2 -#define __CLC_U_GENTYPE ulong2 -#define __CLC_S_GENTYPE long2 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ulong3 -#define __CLC_U_GENTYPE ulong3 -#define __CLC_S_GENTYPE long3 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ulong4 -#define __CLC_U_GENTYPE ulong4 -#define __CLC_S_GENTYPE long4 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ulong8 -#define __CLC_U_GENTYPE ulong8 -#define __CLC_S_GENTYPE long8 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#define __CLC_GENTYPE ulong16 -#define __CLC_U_GENTYPE ulong16 -#define __CLC_S_GENTYPE long16 -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE - -#undef __CLC_GENSIZE -#undef __CLC_SCALAR_GENTYPE -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/integer/hadd.h b/libclc/generic/include/clc/integer/hadd.h deleted file mode 100644 index 37304e26cc2d628d580e2cfb810732a26898b3b9..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/hadd.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/integer/hadd.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/hadd.inc b/libclc/generic/include/clc/integer/hadd.inc deleted file mode 100644 index f698989cef2026b8e8868175ece6060389adc13c..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/hadd.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE hadd(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/integer-gentype.inc b/libclc/generic/include/clc/integer/integer-gentype.inc deleted file mode 100644 index 6470eb3ae9743e4f255d1a70b3ce83563aeb7304..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/integer-gentype.inc +++ /dev/null @@ -1,39 +0,0 @@ -#define __CLC_GENTYPE int -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE int2 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE int4 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE int8 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE int16 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE uint -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE uint2 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE uint4 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE uint8 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE uint16 -#include __CLC_BODY -#undef __CLC_GENTYPE diff --git a/libclc/generic/include/clc/integer/mad24.h b/libclc/generic/include/clc/integer/mad24.h deleted file mode 100644 index 0c120faac2b15b3d0eddb6450001cbd8b142f0ca..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/mad24.h +++ /dev/null @@ -1,3 +0,0 @@ -#define __CLC_BODY <clc/integer/mad24.inc> -#include <clc/integer/integer-gentype.inc> -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/integer/mad24.inc b/libclc/generic/include/clc/integer/mad24.inc deleted file mode 100644 index 81fe0c2a89266c30861c95c0cb64ce32c2893e85..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/mad24.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mad24(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE z); diff --git a/libclc/generic/include/clc/integer/mad_hi.h b/libclc/generic/include/clc/integer/mad_hi.h deleted file mode 100644 index 863ce92d9f2d8c2bdb3b9f06788d2c67706984d4..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/mad_hi.h +++ /dev/null @@ -1 +0,0 @@ -#define mad_hi(a, b, c) (mul_hi((a),(b))+(c)) diff --git a/libclc/generic/include/clc/integer/mul24.h b/libclc/generic/include/clc/integer/mul24.h deleted file mode 100644 index 4f97098d70f0f407204f42aed945251e788da061..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/mul24.h +++ /dev/null @@ -1,3 +0,0 @@ -#define __CLC_BODY <clc/integer/mul24.inc> -#include <clc/integer/integer-gentype.inc> -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/integer/mul24.inc b/libclc/generic/include/clc/integer/mul24.inc deleted file mode 100644 index 8cbf7c10ac447d43fb95e56c8a79e469d05f8b26..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/mul24.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mul24(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/mul_hi.h b/libclc/generic/include/clc/integer/mul_hi.h deleted file mode 100644 index 27b95d83442f97adb8030a8a0500592f80dba369..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/mul_hi.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/integer/mul_hi.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/mul_hi.inc b/libclc/generic/include/clc/integer/mul_hi.inc deleted file mode 100644 index ce9e5c0b2c18c85362fc53b5b25144e736bf164a..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/mul_hi.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mul_hi(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/rhadd.h b/libclc/generic/include/clc/integer/rhadd.h deleted file mode 100644 index 69b43faeebd246c6129a03379502eb8b0c6c5cf7..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/rhadd.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/integer/rhadd.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/rhadd.inc b/libclc/generic/include/clc/integer/rhadd.inc deleted file mode 100644 index 88ccaf09fd5ef8708dc53355858c345178e11bfb..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/rhadd.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE rhadd(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/rotate.h b/libclc/generic/include/clc/integer/rotate.h deleted file mode 100644 index 6320223e7cf2ced365fe6bbca1d137ab3f7c405a..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/rotate.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/integer/rotate.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/rotate.inc b/libclc/generic/include/clc/integer/rotate.inc deleted file mode 100644 index c97711ecf88281b001a0d923af425fd20b998035..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/rotate.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE rotate(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/sub_sat.h b/libclc/generic/include/clc/integer/sub_sat.h deleted file mode 100644 index f84152944817e1c953c86c3e89d03f142b1c52ec..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/sub_sat.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/integer/sub_sat.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/sub_sat.inc b/libclc/generic/include/clc/integer/sub_sat.inc deleted file mode 100644 index 425df2e4b6964f0c646f3b4eaaf659bf471289e5..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/sub_sat.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE sub_sat(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/upsample.h b/libclc/generic/include/clc/integer/upsample.h deleted file mode 100644 index 0b36b692a2c8d3da0a7db4ca475594b8f1710cd6..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/integer/upsample.h +++ /dev/null @@ -1,25 +0,0 @@ -#define __CLC_UPSAMPLE_DECL(BGENTYPE, GENTYPE, UGENTYPE) \ - _CLC_OVERLOAD _CLC_DECL BGENTYPE upsample(GENTYPE hi, UGENTYPE lo); - -#define __CLC_UPSAMPLE_VEC(BGENTYPE, GENTYPE, UGENTYPE) \ - __CLC_UPSAMPLE_DECL(BGENTYPE, GENTYPE, UGENTYPE) \ - __CLC_UPSAMPLE_DECL(BGENTYPE##2, GENTYPE##2, UGENTYPE##2) \ - __CLC_UPSAMPLE_DECL(BGENTYPE##3, GENTYPE##3, UGENTYPE##3) \ - __CLC_UPSAMPLE_DECL(BGENTYPE##4, GENTYPE##4, UGENTYPE##4) \ - __CLC_UPSAMPLE_DECL(BGENTYPE##8, GENTYPE##8, UGENTYPE##8) \ - __CLC_UPSAMPLE_DECL(BGENTYPE##16, GENTYPE##16, UGENTYPE##16) \ - -#define __CLC_UPSAMPLE_TYPES() \ - __CLC_UPSAMPLE_VEC(short, char, uchar) \ - __CLC_UPSAMPLE_VEC(ushort, uchar, uchar) \ - __CLC_UPSAMPLE_VEC(int, short, ushort) \ - __CLC_UPSAMPLE_VEC(uint, ushort, ushort) \ - __CLC_UPSAMPLE_VEC(long, int, uint) \ - __CLC_UPSAMPLE_VEC(ulong, uint, uint) \ - -__CLC_UPSAMPLE_TYPES() - -#undef __CLC_UPSAMPLE_TYPES -#undef __CLC_UPSAMPLE_DECL -#undef __CLC_UPSAMPLE_VEC - diff --git a/libclc/generic/include/clc/math/atan.h b/libclc/generic/include/clc/math/atan.h deleted file mode 100644 index d9697194ee8a600d67a3f93206dc9db1ec5eedda..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/atan.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#define __CLC_BODY <clc/math/atan.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/atan.inc b/libclc/generic/include/clc/math/atan.inc deleted file mode 100644 index d217c955593fc1ad6ec20b9337a3de08a8c78c6e..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/atan.inc +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE atan(__CLC_GENTYPE a); diff --git a/libclc/generic/include/clc/math/atan2.h b/libclc/generic/include/clc/math/atan2.h deleted file mode 100644 index 9c082a082f0aaad4b26d1c46f5313731770539c5..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/atan2.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#define __CLC_BODY <clc/math/atan2.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/atan2.inc b/libclc/generic/include/clc/math/atan2.inc deleted file mode 100644 index ce273da5334639ab908a2e7d9e989eb397a8e06c..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/atan2.inc +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE atan2(__CLC_GENTYPE a, __CLC_GENTYPE b); diff --git a/libclc/generic/include/clc/math/binary_decl.inc b/libclc/generic/include/clc/math/binary_decl.inc deleted file mode 100644 index 70a711477704535ec222908dacc6a25c71f07e9e..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/binary_decl.inc +++ /dev/null @@ -1,6 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE a, __CLC_GENTYPE b); -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE a, float b); - -#ifdef cl_khr_fp64 -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE a, double b); -#endif diff --git a/libclc/generic/include/clc/math/binary_intrin.inc b/libclc/generic/include/clc/math/binary_intrin.inc deleted file mode 100644 index cfbe74159ec24bc361cad8af9a083f6351b7bf6d..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/binary_intrin.inc +++ /dev/null @@ -1,18 +0,0 @@ -_CLC_OVERLOAD float __CLC_FUNCTION(float, float) __asm(__CLC_INTRINSIC ".f32"); -_CLC_OVERLOAD float2 __CLC_FUNCTION(float2, float2) __asm(__CLC_INTRINSIC ".v2f32"); -_CLC_OVERLOAD float3 __CLC_FUNCTION(float3, float3) __asm(__CLC_INTRINSIC ".v3f32"); -_CLC_OVERLOAD float4 __CLC_FUNCTION(float4, float4) __asm(__CLC_INTRINSIC ".v4f32"); -_CLC_OVERLOAD float8 __CLC_FUNCTION(float8, float8) __asm(__CLC_INTRINSIC ".v8f32"); -_CLC_OVERLOAD float16 __CLC_FUNCTION(float16, float16) __asm(__CLC_INTRINSIC ".v16f32"); - -#ifdef cl_khr_fp64 -_CLC_OVERLOAD double __CLC_FUNCTION(double, double) __asm(__CLC_INTRINSIC ".f64"); -_CLC_OVERLOAD double2 __CLC_FUNCTION(double2, double2) __asm(__CLC_INTRINSIC ".v2f64"); -_CLC_OVERLOAD double3 __CLC_FUNCTION(double3, double3) __asm(__CLC_INTRINSIC ".v3f64"); -_CLC_OVERLOAD double4 __CLC_FUNCTION(double4, double4) __asm(__CLC_INTRINSIC ".v4f64"); -_CLC_OVERLOAD double8 __CLC_FUNCTION(double8, double8) __asm(__CLC_INTRINSIC ".v8f64"); -_CLC_OVERLOAD double16 __CLC_FUNCTION(double16, double16) __asm(__CLC_INTRINSIC ".v16f64"); -#endif - -#undef __CLC_FUNCTION -#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/math/ceil.h b/libclc/generic/include/clc/math/ceil.h deleted file mode 100644 index 5b40abf97c20a0e3288586fe2d55f94218ff570f..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/ceil.h +++ /dev/null @@ -1,6 +0,0 @@ -#undef ceil -#define ceil __clc_ceil - -#define __CLC_FUNCTION __clc_ceil -#define __CLC_INTRINSIC "llvm.ceil" -#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/clc_nextafter.h b/libclc/generic/include/clc/math/clc_nextafter.h deleted file mode 100644 index 81c8f369c3bd531d800a4e290fbdef1c45796803..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/clc_nextafter.h +++ /dev/null @@ -1,11 +0,0 @@ -#define __CLC_BODY <clc/math/binary_decl.inc> - -#define __CLC_FUNCTION nextafter -#include <clc/math/gentype.inc> -#undef __CLC_FUNCTION - -#define __CLC_FUNCTION __clc_nextafter -#include <clc/math/gentype.inc> -#undef __CLC_FUNCTION - -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/copysign.h b/libclc/generic/include/clc/math/copysign.h deleted file mode 100644 index 9d6cf76deb74ecc57e9042a11532052a8529c9b7..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/copysign.h +++ /dev/null @@ -1 +0,0 @@ -#define copysign(x, y) __builtin_copysign(x, y) diff --git a/libclc/generic/include/clc/math/cos.h b/libclc/generic/include/clc/math/cos.h deleted file mode 100644 index 3d4cf39a0f80cef49ae2ad81060750a486e45c8e..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/cos.h +++ /dev/null @@ -1,3 +0,0 @@ -#define __CLC_BODY <clc/math/cos.inc> -#include <clc/math/gentype.inc> -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/cos.inc b/libclc/generic/include/clc/math/cos.inc deleted file mode 100644 index 160e625c6912c773f18f5fadc8d6d7d7843d3e5e..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/cos.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE cos(__CLC_GENTYPE a); diff --git a/libclc/generic/include/clc/math/exp.h b/libclc/generic/include/clc/math/exp.h deleted file mode 100644 index 9866524762958533724f5bc05b9596b30270e985..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/exp.h +++ /dev/null @@ -1,9 +0,0 @@ -#undef exp - -#define __CLC_BODY <clc/math/unary_decl.inc> -#define __CLC_FUNCTION exp - -#include <clc/math/gentype.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/math/exp10.h b/libclc/generic/include/clc/math/exp10.h deleted file mode 100644 index a1d426a20ab0702b60459a1ad011962098bc572a..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/exp10.h +++ /dev/null @@ -1,9 +0,0 @@ -#undef exp10 - -#define __CLC_BODY <clc/math/unary_decl.inc> -#define __CLC_FUNCTION exp10 - -#include <clc/math/gentype.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/math/exp2.h b/libclc/generic/include/clc/math/exp2.h deleted file mode 100644 index ec0dad268a7b9eeaa04924a72e2ca09a933895e3..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/exp2.h +++ /dev/null @@ -1,6 +0,0 @@ -#undef exp2 -#define exp2 __clc_exp2 - -#define __CLC_FUNCTION __clc_exp2 -#define __CLC_INTRINSIC "llvm.exp2" -#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/fabs.h b/libclc/generic/include/clc/math/fabs.h deleted file mode 100644 index ee2f8932a94d2b1ebbf9a98a36fd177845b39082..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/fabs.h +++ /dev/null @@ -1,6 +0,0 @@ -#undef fabs -#define fabs __clc_fabs - -#define __CLC_FUNCTION __clc_fabs -#define __CLC_INTRINSIC "llvm.fabs" -#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/floor.h b/libclc/generic/include/clc/math/floor.h deleted file mode 100644 index 2337d35caae624cdf60f7fce8ae5ff725a9c62f1..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/floor.h +++ /dev/null @@ -1,6 +0,0 @@ -#undef floor -#define floor __clc_floor - -#define __CLC_FUNCTION __clc_floor -#define __CLC_INTRINSIC "llvm.floor" -#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/fma.h b/libclc/generic/include/clc/math/fma.h deleted file mode 100644 index 02d39f68167511609808762014783b950bbf0475..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/fma.h +++ /dev/null @@ -1,6 +0,0 @@ -#undef fma -#define fma __clc_fma - -#define __CLC_FUNCTION __clc_fma -#define __CLC_INTRINSIC "llvm.fma" -#include <clc/math/ternary_intrin.inc> diff --git a/libclc/generic/include/clc/math/fmax.h b/libclc/generic/include/clc/math/fmax.h deleted file mode 100644 index d6956af85a5fbf3d0ee40d075f1786824f38851c..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/fmax.h +++ /dev/null @@ -1,11 +0,0 @@ -#undef fmax -#define fmax __clc_fmax - -#define __CLC_BODY <clc/math/binary_decl.inc> -#define __CLC_FUNCTION __clc_fmax - -#include <clc/math/gentype.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION - diff --git a/libclc/generic/include/clc/math/fmin.h b/libclc/generic/include/clc/math/fmin.h deleted file mode 100644 index 5588ba93a8b8c284b5190e79c9a4bfd3fdb5b9b7..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/fmin.h +++ /dev/null @@ -1,11 +0,0 @@ -#undef fmin -#define fmin __clc_fmin - -#define __CLC_BODY <clc/math/binary_decl.inc> -#define __CLC_FUNCTION __clc_fmin - -#include <clc/math/gentype.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION - diff --git a/libclc/generic/include/clc/math/gentype.inc b/libclc/generic/include/clc/math/gentype.inc deleted file mode 100644 index 9f79f6eb037ff466b4038b82bcb58bdbeefb2cc1..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/gentype.inc +++ /dev/null @@ -1,67 +0,0 @@ -#define __CLC_SCALAR_GENTYPE float -#define __CLC_FPSIZE 32 - -#define __CLC_GENTYPE float -#define __CLC_SCALAR -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_SCALAR - -#define __CLC_GENTYPE float2 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE float3 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE float4 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE float8 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE float16 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#undef __CLC_FPSIZE -#undef __CLC_SCALAR_GENTYPE - -#ifdef cl_khr_fp64 -#define __CLC_SCALAR_GENTYPE double -#define __CLC_FPSIZE 64 - -#define __CLC_SCALAR -#define __CLC_GENTYPE double -#include __CLC_BODY -#undef __CLC_GENTYPE -#undef __CLC_SCALAR - -#define __CLC_GENTYPE double2 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE double3 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE double4 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE double8 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#define __CLC_GENTYPE double16 -#include __CLC_BODY -#undef __CLC_GENTYPE - -#undef __CLC_FPSIZE -#undef __CLC_SCALAR_GENTYPE -#endif - -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/hypot.h b/libclc/generic/include/clc/math/hypot.h deleted file mode 100644 index c00eb4532461f5d77e1227ee9a59492cb447c325..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/hypot.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/math/hypot.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/hypot.inc b/libclc/generic/include/clc/math/hypot.inc deleted file mode 100644 index 08b46058b0aae6be5508afd284934f05be960dd6..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/hypot.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE hypot(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/math/log.h b/libclc/generic/include/clc/math/log.h deleted file mode 100644 index 644f8575c1b3047a367556741845d2cfe0886cb6..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/log.h +++ /dev/null @@ -1,4 +0,0 @@ -#undef log - -// log(x) = log2(x) * (1/log2(e)) -#define log(val) (__clc_log2(val) * 0.693147181f) diff --git a/libclc/generic/include/clc/math/log2.h b/libclc/generic/include/clc/math/log2.h deleted file mode 100644 index 880124097ed0c1016060e8dd94f5487ee3feaf7a..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/log2.h +++ /dev/null @@ -1,6 +0,0 @@ -#undef log2 -#define log2 __clc_log2 - -#define __CLC_FUNCTION __clc_log2 -#define __CLC_INTRINSIC "llvm.log2" -#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/mad.h b/libclc/generic/include/clc/math/mad.h deleted file mode 100644 index c4e50840ced09e20c769a570d932da9d3fad96f4..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/mad.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/math/mad.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/mad.inc b/libclc/generic/include/clc/math/mad.inc deleted file mode 100644 index 61194b6ca4a7f989a3af5f6c900eefdac4a58a0f..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/mad.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mad(__CLC_GENTYPE a, __CLC_GENTYPE b, __CLC_GENTYPE c); diff --git a/libclc/generic/include/clc/math/mix.h b/libclc/generic/include/clc/math/mix.h deleted file mode 100644 index c3c95c1f0c4bb1e1e34e915b19557e996187a2cb..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/mix.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/math/mix.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/mix.inc b/libclc/generic/include/clc/math/mix.inc deleted file mode 100644 index 52cb10ad9027cb261f0fee7cb64160d4f53f8e9d..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/mix.inc +++ /dev/null @@ -1,5 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mix(__CLC_GENTYPE a, __CLC_GENTYPE b, __CLC_GENTYPE c); - -#ifndef __CLC_SCALAR -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mix(__CLC_GENTYPE a, __CLC_GENTYPE b, __CLC_SCALAR_GENTYPE c); -#endif diff --git a/libclc/generic/include/clc/math/native_cos.h b/libclc/generic/include/clc/math/native_cos.h deleted file mode 100644 index c7212cc4b663b0541683d981c2a3f1796103d70f..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_cos.h +++ /dev/null @@ -1 +0,0 @@ -#define native_cos cos diff --git a/libclc/generic/include/clc/math/native_divide.h b/libclc/generic/include/clc/math/native_divide.h deleted file mode 100644 index 5c52167fd3e78b3398cc4fbda3e4590f6283ac54..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_divide.h +++ /dev/null @@ -1 +0,0 @@ -#define native_divide(x, y) ((x) / (y)) diff --git a/libclc/generic/include/clc/math/native_exp.h b/libclc/generic/include/clc/math/native_exp.h deleted file mode 100644 index e206de66926d5a7e14e9747fb1da11622355c812..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_exp.h +++ /dev/null @@ -1 +0,0 @@ -#define native_exp exp diff --git a/libclc/generic/include/clc/math/native_exp10.h b/libclc/generic/include/clc/math/native_exp10.h deleted file mode 100644 index 1156f58c53a57be399e488a2983409203311d522..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_exp10.h +++ /dev/null @@ -1 +0,0 @@ -#define native_exp10 exp10 diff --git a/libclc/generic/include/clc/math/native_exp2.h b/libclc/generic/include/clc/math/native_exp2.h deleted file mode 100644 index b6759390ee438ffb67074d3daebe61ad0615b765..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_exp2.h +++ /dev/null @@ -1 +0,0 @@ -#define native_exp2 exp2 diff --git a/libclc/generic/include/clc/math/native_log.h b/libclc/generic/include/clc/math/native_log.h deleted file mode 100644 index 7805a39ed696171129105330852b7af1f5ab334c..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_log.h +++ /dev/null @@ -1 +0,0 @@ -#define native_log log diff --git a/libclc/generic/include/clc/math/native_log2.h b/libclc/generic/include/clc/math/native_log2.h deleted file mode 100644 index 0c692eec27f4b0ae58311b89ec19e0d9ed15d3c8..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_log2.h +++ /dev/null @@ -1 +0,0 @@ -#define native_log2 log2 diff --git a/libclc/generic/include/clc/math/native_powr.h b/libclc/generic/include/clc/math/native_powr.h deleted file mode 100644 index e8a37d9cb06681be623f106ca2b82caba28e4194..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_powr.h +++ /dev/null @@ -1 +0,0 @@ -#define native_powr pow diff --git a/libclc/generic/include/clc/math/native_sin.h b/libclc/generic/include/clc/math/native_sin.h deleted file mode 100644 index 569a051ccc750f49ef6113129a4f11cfa8af59e1..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_sin.h +++ /dev/null @@ -1 +0,0 @@ -#define native_sin sin diff --git a/libclc/generic/include/clc/math/native_sqrt.h b/libclc/generic/include/clc/math/native_sqrt.h deleted file mode 100644 index a9525fccb7c18abe1d593a42cd148e173f8aa06b..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/native_sqrt.h +++ /dev/null @@ -1 +0,0 @@ -#define native_sqrt sqrt diff --git a/libclc/generic/include/clc/math/nextafter.h b/libclc/generic/include/clc/math/nextafter.h deleted file mode 100644 index 06e1b2a53c5229ecb4731f20e6dcb3cd5bd012b9..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/nextafter.h +++ /dev/null @@ -1,5 +0,0 @@ -#define __CLC_BODY <clc/math/binary_decl.inc> -#define __CLC_FUNCTION nextafter -#include <clc/math/gentype.inc> -#undef __CLC_FUNCTION -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/pow.h b/libclc/generic/include/clc/math/pow.h deleted file mode 100644 index 320d341a6830a407f7f1bf8c9a1e2205bfe6342d..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/pow.h +++ /dev/null @@ -1,6 +0,0 @@ -#undef pow -#define pow __clc_pow - -#define __CLC_FUNCTION __clc_pow -#define __CLC_INTRINSIC "llvm.pow" -#include <clc/math/binary_intrin.inc> diff --git a/libclc/generic/include/clc/math/pown.h b/libclc/generic/include/clc/math/pown.h deleted file mode 100644 index bdbf50c1de6fd4682636843e59ad1173352f3182..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/pown.h +++ /dev/null @@ -1,24 +0,0 @@ -#define _CLC_POWN_INTRINSIC "llvm.powi" - -#define _CLC_POWN_DECL(GENTYPE, INTTYPE) \ - _CLC_OVERLOAD _CLC_DECL GENTYPE pown(GENTYPE x, INTTYPE y); - -#define _CLC_VECTOR_POWN_DECL(GENTYPE, INTTYPE) \ - _CLC_POWN_DECL(GENTYPE##2, INTTYPE##2) \ - _CLC_POWN_DECL(GENTYPE##3, INTTYPE##3) \ - _CLC_POWN_DECL(GENTYPE##4, INTTYPE##4) \ - _CLC_POWN_DECL(GENTYPE##8, INTTYPE##8) \ - _CLC_POWN_DECL(GENTYPE##16, INTTYPE##16) - -_CLC_OVERLOAD float pown(float x, int y) __asm(_CLC_POWN_INTRINSIC ".f32"); - -_CLC_VECTOR_POWN_DECL(float, int) - -#ifdef cl_khr_fp64 -_CLC_OVERLOAD double pown(double x, int y) __asm(_CLC_POWN_INTRINSIC ".f64"); -_CLC_VECTOR_POWN_DECL(double, int) -#endif - -#undef _CLC_POWN_INTRINSIC -#undef _CLC_POWN_DECL -#undef _CLC_VECTOR_POWN_DECL diff --git a/libclc/generic/include/clc/math/rint.h b/libclc/generic/include/clc/math/rint.h deleted file mode 100644 index d257634a6f953641861014fa644ef320168be36f..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/rint.h +++ /dev/null @@ -1,6 +0,0 @@ -#undef rint -#define rint __clc_rint - -#define __CLC_FUNCTION __clc_rint -#define __CLC_INTRINSIC "llvm.rint" -#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/round.h b/libclc/generic/include/clc/math/round.h deleted file mode 100644 index 43e16aed028f17a32327e2b09737f0a4f72110ff..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/round.h +++ /dev/null @@ -1,9 +0,0 @@ -#undef round -#define round __clc_round - -#define __CLC_FUNCTION __clc_round -#define __CLC_INTRINSIC "llvm.round" -#include <clc/math/unary_intrin.inc> - -#undef __CLC_FUNCTION -#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/math/rsqrt.h b/libclc/generic/include/clc/math/rsqrt.h deleted file mode 100644 index 9d49ee652262af2a8f0ad184334aaf49beb96209..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/rsqrt.h +++ /dev/null @@ -1 +0,0 @@ -#define rsqrt(x) (1.f/sqrt(x)) diff --git a/libclc/generic/include/clc/math/sin.h b/libclc/generic/include/clc/math/sin.h deleted file mode 100644 index 6d4cf5a3142c34d3ba7fb8f099aa64bfc3865135..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/sin.h +++ /dev/null @@ -1,3 +0,0 @@ -#define __CLC_BODY <clc/math/sin.inc> -#include <clc/math/gentype.inc> -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/sin.inc b/libclc/generic/include/clc/math/sin.inc deleted file mode 100644 index e722fa35273102761a206221219b4199f3b71638..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/sin.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE sin(__CLC_GENTYPE a); diff --git a/libclc/generic/include/clc/math/sincos.h b/libclc/generic/include/clc/math/sincos.h deleted file mode 100644 index fbb9b55cd1f79f989356e43489de7f1e360ad17c..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/sincos.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __CLC_BODY <clc/math/sincos.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/sincos.inc b/libclc/generic/include/clc/math/sincos.inc deleted file mode 100644 index 444ac82a5204128eb03a8ff6e8f6bf8e7b6bb04b..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/sincos.inc +++ /dev/null @@ -1,8 +0,0 @@ -#define __CLC_DECLARE_SINCOS(ADDRSPACE, TYPE) \ - _CLC_OVERLOAD _CLC_DECL TYPE sincos (TYPE x, ADDRSPACE TYPE * cosval); - -__CLC_DECLARE_SINCOS(global, __CLC_GENTYPE) -__CLC_DECLARE_SINCOS(local, __CLC_GENTYPE) -__CLC_DECLARE_SINCOS(private, __CLC_GENTYPE) - -#undef __CLC_DECLARE_SINCOS diff --git a/libclc/generic/include/clc/math/sqrt.h b/libclc/generic/include/clc/math/sqrt.h deleted file mode 100644 index f69de847e6299281fedf30fcd03d9a04118594a9..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/sqrt.h +++ /dev/null @@ -1,6 +0,0 @@ -#undef sqrt -#define sqrt __clc_sqrt - -#define __CLC_FUNCTION __clc_sqrt -#define __CLC_INTRINSIC "llvm.sqrt" -#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/ternary_intrin.inc b/libclc/generic/include/clc/math/ternary_intrin.inc deleted file mode 100644 index 9633696ed9c4d53b6c936ce468acd9c9f8b7ffa1..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/ternary_intrin.inc +++ /dev/null @@ -1,18 +0,0 @@ -_CLC_OVERLOAD float __CLC_FUNCTION(float, float, float) __asm(__CLC_INTRINSIC ".f32"); -_CLC_OVERLOAD float2 __CLC_FUNCTION(float2, float2, float2) __asm(__CLC_INTRINSIC ".v2f32"); -_CLC_OVERLOAD float3 __CLC_FUNCTION(float3, float3, float3) __asm(__CLC_INTRINSIC ".v3f32"); -_CLC_OVERLOAD float4 __CLC_FUNCTION(float4, float4, float4) __asm(__CLC_INTRINSIC ".v4f32"); -_CLC_OVERLOAD float8 __CLC_FUNCTION(float8, float8, float8) __asm(__CLC_INTRINSIC ".v8f32"); -_CLC_OVERLOAD float16 __CLC_FUNCTION(float16, float16, float16) __asm(__CLC_INTRINSIC ".v16f32"); - -#ifdef cl_khr_fp64 -_CLC_OVERLOAD double __CLC_FUNCTION(double, double, double) __asm(__CLC_INTRINSIC ".f64"); -_CLC_OVERLOAD double2 __CLC_FUNCTION(double2, double2, double2) __asm(__CLC_INTRINSIC ".v2f64"); -_CLC_OVERLOAD double3 __CLC_FUNCTION(double3, double3, double3) __asm(__CLC_INTRINSIC ".v3f64"); -_CLC_OVERLOAD double4 __CLC_FUNCTION(double4, double4, double4) __asm(__CLC_INTRINSIC ".v4f64"); -_CLC_OVERLOAD double8 __CLC_FUNCTION(double8, double8, double8) __asm(__CLC_INTRINSIC ".v8f64"); -_CLC_OVERLOAD double16 __CLC_FUNCTION(double16, double16, double16) __asm(__CLC_INTRINSIC ".v16f64"); -#endif - -#undef __CLC_FUNCTION -#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/math/trunc.h b/libclc/generic/include/clc/math/trunc.h deleted file mode 100644 index d34f66190433dc050f900d2a852ee0012ce3460d..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/trunc.h +++ /dev/null @@ -1,9 +0,0 @@ -#undef trunc -#define trunc __clc_trunc - -#define __CLC_FUNCTION __clc_trunc -#define __CLC_INTRINSIC "llvm.trunc" -#include <clc/math/unary_intrin.inc> - -#undef __CLC_FUNCTION -#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/math/unary_decl.inc b/libclc/generic/include/clc/math/unary_decl.inc deleted file mode 100644 index 9858d908da09fe325b66d95d0fbe6e84d5324d18..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/unary_decl.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE x); diff --git a/libclc/generic/include/clc/math/unary_intrin.inc b/libclc/generic/include/clc/math/unary_intrin.inc deleted file mode 100644 index 8c62d8827fe74a3be243c8f924aec7c6645e7900..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/math/unary_intrin.inc +++ /dev/null @@ -1,18 +0,0 @@ -_CLC_OVERLOAD float __CLC_FUNCTION(float f) __asm(__CLC_INTRINSIC ".f32"); -_CLC_OVERLOAD float2 __CLC_FUNCTION(float2 f) __asm(__CLC_INTRINSIC ".v2f32"); -_CLC_OVERLOAD float3 __CLC_FUNCTION(float3 f) __asm(__CLC_INTRINSIC ".v3f32"); -_CLC_OVERLOAD float4 __CLC_FUNCTION(float4 f) __asm(__CLC_INTRINSIC ".v4f32"); -_CLC_OVERLOAD float8 __CLC_FUNCTION(float8 f) __asm(__CLC_INTRINSIC ".v8f32"); -_CLC_OVERLOAD float16 __CLC_FUNCTION(float16 f) __asm(__CLC_INTRINSIC ".v16f32"); - -#ifdef cl_khr_fp64 -_CLC_OVERLOAD double __CLC_FUNCTION(double d) __asm(__CLC_INTRINSIC ".f64"); -_CLC_OVERLOAD double2 __CLC_FUNCTION(double2 d) __asm(__CLC_INTRINSIC ".v2f64"); -_CLC_OVERLOAD double3 __CLC_FUNCTION(double3 d) __asm(__CLC_INTRINSIC ".v3f64"); -_CLC_OVERLOAD double4 __CLC_FUNCTION(double4 d) __asm(__CLC_INTRINSIC ".v4f64"); -_CLC_OVERLOAD double8 __CLC_FUNCTION(double8 d) __asm(__CLC_INTRINSIC ".v8f64"); -_CLC_OVERLOAD double16 __CLC_FUNCTION(double16 d) __asm(__CLC_INTRINSIC ".v16f64"); -#endif - -#undef __CLC_FUNCTION -#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/relational/all.h b/libclc/generic/include/clc/relational/all.h deleted file mode 100644 index f8b0942444a2bab0750aa72a682622fdd74ed728..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/all.h +++ /dev/null @@ -1,18 +0,0 @@ -#define _CLC_ALL_DECL(TYPE) \ - _CLC_OVERLOAD _CLC_DECL int all(TYPE v); - -#define _CLC_VECTOR_ALL_DECL(TYPE) \ - _CLC_ALL_DECL(TYPE) \ - _CLC_ALL_DECL(TYPE##2) \ - _CLC_ALL_DECL(TYPE##3) \ - _CLC_ALL_DECL(TYPE##4) \ - _CLC_ALL_DECL(TYPE##8) \ - _CLC_ALL_DECL(TYPE##16) - -_CLC_VECTOR_ALL_DECL(char) -_CLC_VECTOR_ALL_DECL(short) -_CLC_VECTOR_ALL_DECL(int) -_CLC_VECTOR_ALL_DECL(long) - -#undef _CLC_ALL_DECL -#undef _CLC_VECTOR_ALL_DECL diff --git a/libclc/generic/include/clc/relational/any.h b/libclc/generic/include/clc/relational/any.h deleted file mode 100644 index 4687ed263793e515e58164168c9dfdad6aea9e44..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/any.h +++ /dev/null @@ -1,16 +0,0 @@ - -#define _CLC_ANY_DECL(TYPE) \ - _CLC_OVERLOAD _CLC_DECL int any(TYPE v); - -#define _CLC_VECTOR_ANY_DECL(TYPE) \ - _CLC_ANY_DECL(TYPE) \ - _CLC_ANY_DECL(TYPE##2) \ - _CLC_ANY_DECL(TYPE##3) \ - _CLC_ANY_DECL(TYPE##4) \ - _CLC_ANY_DECL(TYPE##8) \ - _CLC_ANY_DECL(TYPE##16) - -_CLC_VECTOR_ANY_DECL(char) -_CLC_VECTOR_ANY_DECL(short) -_CLC_VECTOR_ANY_DECL(int) -_CLC_VECTOR_ANY_DECL(long) diff --git a/libclc/generic/include/clc/relational/binary_decl.inc b/libclc/generic/include/clc/relational/binary_decl.inc deleted file mode 100644 index c9e4aee839a17ca5e2988d15e6fe777bc193c910..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/binary_decl.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_INTN __CLC_FUNCTION(__CLC_FLOATN a, __CLC_FLOATN b); diff --git a/libclc/generic/include/clc/relational/bitselect.h b/libclc/generic/include/clc/relational/bitselect.h deleted file mode 100644 index e91cbfded8b78b3976a21256329c7b78e4c6503f..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/bitselect.h +++ /dev/null @@ -1 +0,0 @@ -#define bitselect(x, y, z) ((x) ^ ((z) & ((y) ^ (x)))) diff --git a/libclc/generic/include/clc/relational/floatn.inc b/libclc/generic/include/clc/relational/floatn.inc deleted file mode 100644 index 8d7fd52cc7da931fc03eb0fd08091b039f06ed71..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/floatn.inc +++ /dev/null @@ -1,81 +0,0 @@ - -#define __CLC_FLOATN float -#define __CLC_INTN int -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN float2 -#define __CLC_INTN int2 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN float3 -#define __CLC_INTN int3 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN float4 -#define __CLC_INTN int4 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN float8 -#define __CLC_INTN int8 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN float16 -#define __CLC_INTN int16 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#undef __CLC_FLOAT -#undef __CLC_INT - -#ifdef cl_khr_fp64 - -#define __CLC_FLOATN double -#define __CLC_INTN int -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN double2 -#define __CLC_INTN long2 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN double3 -#define __CLC_INTN long3 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN double4 -#define __CLC_INTN long4 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN double8 -#define __CLC_INTN long8 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN double16 -#define __CLC_INTN long16 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#endif - -#undef __CLC_BODY diff --git a/libclc/generic/include/clc/relational/isequal.h b/libclc/generic/include/clc/relational/isequal.h deleted file mode 100644 index c28a98565ee369b7c037ece0c29cf7b90ec4033d..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/isequal.h +++ /dev/null @@ -1,20 +0,0 @@ -#define _CLC_ISEQUAL_DECL(TYPE, RETTYPE) \ - _CLC_OVERLOAD _CLC_DECL RETTYPE isequal(TYPE x, TYPE y); - -#define _CLC_VECTOR_ISEQUAL_DECL(TYPE, RETTYPE) \ - _CLC_ISEQUAL_DECL(TYPE##2, RETTYPE##2) \ - _CLC_ISEQUAL_DECL(TYPE##3, RETTYPE##3) \ - _CLC_ISEQUAL_DECL(TYPE##4, RETTYPE##4) \ - _CLC_ISEQUAL_DECL(TYPE##8, RETTYPE##8) \ - _CLC_ISEQUAL_DECL(TYPE##16, RETTYPE##16) - -_CLC_ISEQUAL_DECL(float, int) -_CLC_VECTOR_ISEQUAL_DECL(float, int) - -#ifdef cl_khr_fp64 -_CLC_ISEQUAL_DECL(double, int) -_CLC_VECTOR_ISEQUAL_DECL(double, long) -#endif - -#undef _CLC_ISEQUAL_DECL -#undef _CLC_VECTOR_ISEQUAL_DEC diff --git a/libclc/generic/include/clc/relational/isgreater.h b/libclc/generic/include/clc/relational/isgreater.h deleted file mode 100644 index d17ae0c00c8262e0a45e6115356006feb655e9cd..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/isgreater.h +++ /dev/null @@ -1,9 +0,0 @@ -#undef isgreater - -#define __CLC_FUNCTION isgreater -#define __CLC_BODY <clc/relational/binary_decl.inc> - -#include <clc/relational/floatn.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/isgreaterequal.h b/libclc/generic/include/clc/relational/isgreaterequal.h deleted file mode 100644 index 835332858d296155bb73104cedd201377d163d00..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/isgreaterequal.h +++ /dev/null @@ -1,9 +0,0 @@ -#undef isgreaterequal - -#define __CLC_FUNCTION isgreaterequal -#define __CLC_BODY <clc/relational/binary_decl.inc> - -#include <clc/relational/floatn.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/isless.h b/libclc/generic/include/clc/relational/isless.h deleted file mode 100644 index 1debd87f386e98133049490a1082c98d9fdb6230..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/isless.h +++ /dev/null @@ -1,7 +0,0 @@ -#define __CLC_FUNCTION isless -#define __CLC_BODY <clc/relational/binary_decl.inc> - -#include <clc/relational/floatn.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/islessequal.h b/libclc/generic/include/clc/relational/islessequal.h deleted file mode 100644 index e6a99d7f21c8bd209a4fb3670c2bcc9eaea5027a..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/islessequal.h +++ /dev/null @@ -1,7 +0,0 @@ -#define __CLC_FUNCTION islessequal -#define __CLC_BODY <clc/relational/binary_decl.inc> - -#include <clc/relational/floatn.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/isnan.h b/libclc/generic/include/clc/relational/isnan.h deleted file mode 100644 index 93eb9dffb4240cd4afc1139fcc504f230031ee70..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/isnan.h +++ /dev/null @@ -1,21 +0,0 @@ - -#define _CLC_ISNAN_DECL(RET_TYPE, ARG_TYPE) \ - _CLC_OVERLOAD _CLC_DECL RET_TYPE isnan(ARG_TYPE); - -#define _CLC_VECTOR_ISNAN_DECL(RET_TYPE, ARG_TYPE) \ - _CLC_ISNAN_DECL(RET_TYPE##2, ARG_TYPE##2) \ - _CLC_ISNAN_DECL(RET_TYPE##3, ARG_TYPE##3) \ - _CLC_ISNAN_DECL(RET_TYPE##4, ARG_TYPE##4) \ - _CLC_ISNAN_DECL(RET_TYPE##8, ARG_TYPE##8) \ - _CLC_ISNAN_DECL(RET_TYPE##16, ARG_TYPE##16) - -_CLC_ISNAN_DECL(int, float) -_CLC_VECTOR_ISNAN_DECL(int, float) - -#ifdef cl_khr_fp64 -_CLC_ISNAN_DECL(int, double) -_CLC_VECTOR_ISNAN_DECL(long, double) -#endif - -#undef _CLC_ISNAN_DECL -#undef _CLC_VECTOR_ISNAN_DECL diff --git a/libclc/generic/include/clc/relational/isnotequal.h b/libclc/generic/include/clc/relational/isnotequal.h deleted file mode 100644 index f2ceea2110469c2bdfe515c439c1e154a03a61c9..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/isnotequal.h +++ /dev/null @@ -1,9 +0,0 @@ -#undef isnotequal - -#define __CLC_FUNCTION isnotequal -#define __CLC_BODY <clc/relational/binary_decl.inc> - -#include <clc/relational/floatn.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/select.h b/libclc/generic/include/clc/relational/select.h deleted file mode 100644 index 33a6909fb929c5bbb2c88239e93c19b8a78f26e2..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/select.h +++ /dev/null @@ -1 +0,0 @@ -#define select(a, b, c) ((c) ? (b) : (a)) diff --git a/libclc/generic/include/clc/relational/signbit.h b/libclc/generic/include/clc/relational/signbit.h deleted file mode 100644 index 41e5284bb34c4bbfb9b2aaa91df3039b7cad9f36..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/signbit.h +++ /dev/null @@ -1,9 +0,0 @@ -#undef signbit - -#define __CLC_FUNCTION signbit -#define __CLC_BODY <clc/relational/unary_decl.inc> - -#include <clc/relational/floatn.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/unary_decl.inc b/libclc/generic/include/clc/relational/unary_decl.inc deleted file mode 100644 index ab9b776a46ecfbd6ab8e62fe6ca5fff628781366..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/relational/unary_decl.inc +++ /dev/null @@ -1 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_INTN __CLC_FUNCTION(__CLC_FLOATN x); diff --git a/libclc/generic/include/clc/shared/clamp.h b/libclc/generic/include/clc/shared/clamp.h deleted file mode 100644 index a389b85d2666e339554a1da238d4a6df83b2dda6..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/shared/clamp.h +++ /dev/null @@ -1,5 +0,0 @@ -#define __CLC_BODY <clc/shared/clamp.inc> -#include <clc/integer/gentype.inc> - -#define __CLC_BODY <clc/shared/clamp.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/shared/clamp.inc b/libclc/generic/include/clc/shared/clamp.inc deleted file mode 100644 index aaff9d0ff07f07137faab587db1c13240730b637..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/shared/clamp.inc +++ /dev/null @@ -1,5 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE clamp(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE z); - -#ifndef __CLC_SCALAR -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE clamp(__CLC_GENTYPE x, __CLC_SCALAR_GENTYPE y, __CLC_SCALAR_GENTYPE z); -#endif diff --git a/libclc/generic/include/clc/shared/max.h b/libclc/generic/include/clc/shared/max.h deleted file mode 100644 index ee20b9e64df76b6e1a2433655cd01ef9f4273277..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/shared/max.h +++ /dev/null @@ -1,5 +0,0 @@ -#define __CLC_BODY <clc/shared/max.inc> -#include <clc/integer/gentype.inc> - -#define __CLC_BODY <clc/shared/max.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/shared/max.inc b/libclc/generic/include/clc/shared/max.inc deleted file mode 100644 index 590107435e66a28d1eb369f7a2e3685b5b6bc247..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/shared/max.inc +++ /dev/null @@ -1,5 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE max(__CLC_GENTYPE a, __CLC_GENTYPE b); - -#ifndef __CLC_SCALAR -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE max(__CLC_GENTYPE a, __CLC_SCALAR_GENTYPE b); -#endif diff --git a/libclc/generic/include/clc/shared/min.h b/libclc/generic/include/clc/shared/min.h deleted file mode 100644 index e11d9f9551ff95f58c4dab923de6839de2c4ebd1..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/shared/min.h +++ /dev/null @@ -1,5 +0,0 @@ -#define __CLC_BODY <clc/shared/min.inc> -#include <clc/integer/gentype.inc> - -#define __CLC_BODY <clc/shared/min.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/shared/min.inc b/libclc/generic/include/clc/shared/min.inc deleted file mode 100644 index d8c1568a590c1b8572d58e96af0cbc039d01209b..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/shared/min.inc +++ /dev/null @@ -1,5 +0,0 @@ -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE min(__CLC_GENTYPE a, __CLC_GENTYPE b); - -#ifndef __CLC_SCALAR -_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE min(__CLC_GENTYPE a, __CLC_SCALAR_GENTYPE b); -#endif diff --git a/libclc/generic/include/clc/shared/vload.h b/libclc/generic/include/clc/shared/vload.h deleted file mode 100644 index 93d07501d4a10a914daf617ad52d262cc138d7ba..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/shared/vload.h +++ /dev/null @@ -1,37 +0,0 @@ -#define _CLC_VLOAD_DECL(PRIM_TYPE, VEC_TYPE, WIDTH, ADDR_SPACE) \ - _CLC_OVERLOAD _CLC_DECL VEC_TYPE vload##WIDTH(size_t offset, const ADDR_SPACE PRIM_TYPE *x); - -#define _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, ADDR_SPACE) \ - _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##2, 2, ADDR_SPACE) \ - _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##3, 3, ADDR_SPACE) \ - _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##4, 4, ADDR_SPACE) \ - _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##8, 8, ADDR_SPACE) \ - _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##16, 16, ADDR_SPACE) - -#define _CLC_VECTOR_VLOAD_PRIM1(PRIM_TYPE) \ - _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, __private) \ - _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, __local) \ - _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, __constant) \ - _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, __global) \ - -#define _CLC_VECTOR_VLOAD_PRIM() \ - _CLC_VECTOR_VLOAD_PRIM1(char) \ - _CLC_VECTOR_VLOAD_PRIM1(uchar) \ - _CLC_VECTOR_VLOAD_PRIM1(short) \ - _CLC_VECTOR_VLOAD_PRIM1(ushort) \ - _CLC_VECTOR_VLOAD_PRIM1(int) \ - _CLC_VECTOR_VLOAD_PRIM1(uint) \ - _CLC_VECTOR_VLOAD_PRIM1(long) \ - _CLC_VECTOR_VLOAD_PRIM1(ulong) \ - _CLC_VECTOR_VLOAD_PRIM1(float) \ - -#ifdef cl_khr_fp64 -#define _CLC_VECTOR_VLOAD() \ - _CLC_VECTOR_VLOAD_PRIM1(double) \ - _CLC_VECTOR_VLOAD_PRIM() -#else -#define _CLC_VECTOR_VLOAD() \ - _CLC_VECTOR_VLOAD_PRIM() -#endif - -_CLC_VECTOR_VLOAD() diff --git a/libclc/generic/include/clc/shared/vstore.h b/libclc/generic/include/clc/shared/vstore.h deleted file mode 100644 index 1f784f82fec0c6bf30b991b2350c020d18442328..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/shared/vstore.h +++ /dev/null @@ -1,36 +0,0 @@ -#define _CLC_VSTORE_DECL(PRIM_TYPE, VEC_TYPE, WIDTH, ADDR_SPACE) \ - _CLC_OVERLOAD _CLC_DECL void vstore##WIDTH(VEC_TYPE vec, size_t offset, ADDR_SPACE PRIM_TYPE *out); - -#define _CLC_VECTOR_VSTORE_DECL(PRIM_TYPE, ADDR_SPACE) \ - _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##2, 2, ADDR_SPACE) \ - _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##3, 3, ADDR_SPACE) \ - _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##4, 4, ADDR_SPACE) \ - _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##8, 8, ADDR_SPACE) \ - _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##16, 16, ADDR_SPACE) - -#define _CLC_VECTOR_VSTORE_PRIM1(PRIM_TYPE) \ - _CLC_VECTOR_VSTORE_DECL(PRIM_TYPE, __private) \ - _CLC_VECTOR_VSTORE_DECL(PRIM_TYPE, __local) \ - _CLC_VECTOR_VSTORE_DECL(PRIM_TYPE, __global) \ - -#define _CLC_VECTOR_VSTORE_PRIM() \ - _CLC_VECTOR_VSTORE_PRIM1(char) \ - _CLC_VECTOR_VSTORE_PRIM1(uchar) \ - _CLC_VECTOR_VSTORE_PRIM1(short) \ - _CLC_VECTOR_VSTORE_PRIM1(ushort) \ - _CLC_VECTOR_VSTORE_PRIM1(int) \ - _CLC_VECTOR_VSTORE_PRIM1(uint) \ - _CLC_VECTOR_VSTORE_PRIM1(long) \ - _CLC_VECTOR_VSTORE_PRIM1(ulong) \ - _CLC_VECTOR_VSTORE_PRIM1(float) \ - -#ifdef cl_khr_fp64 -#define _CLC_VECTOR_VSTORE() \ - _CLC_VECTOR_VSTORE_PRIM1(double) \ - _CLC_VECTOR_VSTORE_PRIM() -#else -#define _CLC_VECTOR_VSTORE() \ - _CLC_VECTOR_VSTORE_PRIM() -#endif - -_CLC_VECTOR_VSTORE() diff --git a/libclc/generic/include/clc/synchronization/barrier.h b/libclc/generic/include/clc/synchronization/barrier.h deleted file mode 100644 index 7167a3d3f0937a2ae21df2fe82f362b853b3d7dc..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/synchronization/barrier.h +++ /dev/null @@ -1 +0,0 @@ -_CLC_DECL void barrier(cl_mem_fence_flags flags); diff --git a/libclc/generic/include/clc/synchronization/cl_mem_fence_flags.h b/libclc/generic/include/clc/synchronization/cl_mem_fence_flags.h deleted file mode 100644 index c57eb4249a413a900c92709841b45b3a0fae5dfa..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/synchronization/cl_mem_fence_flags.h +++ /dev/null @@ -1,4 +0,0 @@ -typedef uint cl_mem_fence_flags; - -#define CLK_LOCAL_MEM_FENCE 1 -#define CLK_GLOBAL_MEM_FENCE 2 diff --git a/libclc/generic/include/clc/workitem/get_global_id.h b/libclc/generic/include/clc/workitem/get_global_id.h deleted file mode 100644 index 92759f146894036c278d7942ec073ea7dce46e39..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/workitem/get_global_id.h +++ /dev/null @@ -1 +0,0 @@ -_CLC_DECL size_t get_global_id(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_global_size.h b/libclc/generic/include/clc/workitem/get_global_size.h deleted file mode 100644 index 2f837058539739558e2a7d1615ea8f6810742cd5..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/workitem/get_global_size.h +++ /dev/null @@ -1 +0,0 @@ -_CLC_DECL size_t get_global_size(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_group_id.h b/libclc/generic/include/clc/workitem/get_group_id.h deleted file mode 100644 index 346c82c6c316f5f8202cd181d3a333ad507c6132..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/workitem/get_group_id.h +++ /dev/null @@ -1 +0,0 @@ -_CLC_DECL size_t get_group_id(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_local_id.h b/libclc/generic/include/clc/workitem/get_local_id.h deleted file mode 100644 index 169aeed867869c0613aff49d52d75ac9ed5f6114..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/workitem/get_local_id.h +++ /dev/null @@ -1 +0,0 @@ -_CLC_DECL size_t get_local_id(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_local_size.h b/libclc/generic/include/clc/workitem/get_local_size.h deleted file mode 100644 index 040ec58a3d8bb5d817173aa5631029210c1d3c6d..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/workitem/get_local_size.h +++ /dev/null @@ -1 +0,0 @@ -_CLC_DECL size_t get_local_size(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_num_groups.h b/libclc/generic/include/clc/workitem/get_num_groups.h deleted file mode 100644 index e555c7efc2d2a7b4ebb900ba40e7bc5a6eda2d7c..0000000000000000000000000000000000000000 --- a/libclc/generic/include/clc/workitem/get_num_groups.h +++ /dev/null @@ -1 +0,0 @@ -_CLC_DECL size_t get_num_groups(uint dim); diff --git a/libclc/generic/include/math/clc_nextafter.h b/libclc/generic/include/math/clc_nextafter.h deleted file mode 100644 index 2b674b7079568f2f217c9232da28b8db01aaedf8..0000000000000000000000000000000000000000 --- a/libclc/generic/include/math/clc_nextafter.h +++ /dev/null @@ -1,7 +0,0 @@ -#define __CLC_BODY <clc/math/binary_decl.inc> -#define __CLC_FUNCTION __clc_nextafter - -#include <clc/math/gentype.inc> - -#undef __CLC_BODY -#undef __CLC_FUNCTION diff --git a/libclc/generic/lib/SOURCES b/libclc/generic/lib/SOURCES deleted file mode 100644 index bfdec7b7cd4c96ef31a2588ebf758ac3ce37e3ea..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/SOURCES +++ /dev/null @@ -1,64 +0,0 @@ -atomic/atomic_impl.ll -cl_khr_global_int32_base_atomics/atom_add.cl -cl_khr_global_int32_base_atomics/atom_dec.cl -cl_khr_global_int32_base_atomics/atom_inc.cl -cl_khr_global_int32_base_atomics/atom_sub.cl -convert.cl -common/sign.cl -geometric/cross.cl -geometric/dot.cl -geometric/length.cl -geometric/normalize.cl -integer/abs.cl -integer/abs_diff.cl -integer/add_sat.cl -integer/add_sat_if.ll -integer/add_sat_impl.ll -integer/clz.cl -integer/clz_if.ll -integer/clz_impl.ll -integer/hadd.cl -integer/mad24.cl -integer/mul24.cl -integer/mul_hi.cl -integer/rhadd.cl -integer/rotate.cl -integer/sub_sat.cl -integer/sub_sat_if.ll -integer/sub_sat_impl.ll -integer/upsample.cl -math/atan.cl -math/atan2.cl -math/cos.cl -math/exp.cl -math/exp10.cl -math/fmax.cl -math/fmin.cl -math/hypot.cl -math/mad.cl -math/mix.cl -math/clc_nextafter.cl -math/nextafter.cl -math/pown.cl -math/sin.cl -math/sincos.cl -math/sincos_helpers.cl -relational/all.cl -relational/any.cl -relational/isequal.cl -relational/isgreater.cl -relational/isgreaterequal.cl -relational/isless.cl -relational/islessequal.cl -relational/isnan.cl -relational/isnotequal.cl -relational/signbit.cl -shared/clamp.cl -shared/max.cl -shared/min.cl -shared/vload.cl -shared/vload_impl.ll -shared/vstore.cl -shared/vstore_impl.ll -workitem/get_global_id.cl -workitem/get_global_size.cl diff --git a/libclc/generic/lib/atomic/atomic_impl.ll b/libclc/generic/lib/atomic/atomic_impl.ll deleted file mode 100644 index 9df5b9f3c55b5b4b3297c49e51d5ea2823ece69d..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/atomic/atomic_impl.ll +++ /dev/null @@ -1,23 +0,0 @@ -define i32 @__clc_atomic_add_addr1(i32 addrspace(1)* nocapture %ptr, i32 %value) nounwind alwaysinline { -entry: - %0 = atomicrmw volatile add i32 addrspace(1)* %ptr, i32 %value seq_cst - ret i32 %0 -} - -define i32 @__clc_atomic_add_addr3(i32 addrspace(3)* nocapture %ptr, i32 %value) nounwind alwaysinline { -entry: - %0 = atomicrmw volatile add i32 addrspace(3)* %ptr, i32 %value seq_cst - ret i32 %0 -} - -define i32 @__clc_atomic_sub_addr1(i32 addrspace(1)* nocapture %ptr, i32 %value) nounwind alwaysinline { -entry: - %0 = atomicrmw volatile sub i32 addrspace(1)* %ptr, i32 %value seq_cst - ret i32 %0 -} - -define i32 @__clc_atomic_sub_addr3(i32 addrspace(3)* nocapture %ptr, i32 %value) nounwind alwaysinline { -entry: - %0 = atomicrmw volatile sub i32 addrspace(3)* %ptr, i32 %value seq_cst - ret i32 %0 -} diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl deleted file mode 100644 index 9151b0ccf8d919a66a8af883c620a59b1bee01fa..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl +++ /dev/null @@ -1,9 +0,0 @@ -#include <clc/clc.h> - -#define IMPL(TYPE) \ -_CLC_OVERLOAD _CLC_DEF TYPE atom_add(global TYPE *p, TYPE val) { \ - return atomic_add(p, val); \ -} - -IMPL(int) -IMPL(unsigned int) diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl deleted file mode 100644 index a74158d45fc840e6b5746219b4e3bb3e53338c4d..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl +++ /dev/null @@ -1,9 +0,0 @@ -#include <clc/clc.h> - -#define IMPL(TYPE) \ -_CLC_OVERLOAD _CLC_DEF TYPE atom_dec(global TYPE *p) { \ - return atom_sub(p, 1); \ -} - -IMPL(int) -IMPL(unsigned int) diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl deleted file mode 100644 index 1404b5aa4477ddb1fad1b30dd1d077a490142f52..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl +++ /dev/null @@ -1,9 +0,0 @@ -#include <clc/clc.h> - -#define IMPL(TYPE) \ -_CLC_OVERLOAD _CLC_DEF TYPE atom_inc(global TYPE *p) { \ - return atom_add(p, 1); \ -} - -IMPL(int) -IMPL(unsigned int) diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl deleted file mode 100644 index 7faa3cc040f0e02d336879c22e92193a841be54e..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl +++ /dev/null @@ -1,9 +0,0 @@ -#include <clc/clc.h> - -#define IMPL(TYPE) \ -_CLC_OVERLOAD _CLC_DEF TYPE atom_sub(global TYPE *p, TYPE val) { \ - return atomic_sub(p, val); \ -} - -IMPL(int) -IMPL(unsigned int) diff --git a/libclc/generic/lib/clcmacro.h b/libclc/generic/lib/clcmacro.h deleted file mode 100644 index 730073ae1f9922cfaf3d56856ae099fa0d72956c..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/clcmacro.h +++ /dev/null @@ -1,54 +0,0 @@ -#define _CLC_UNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE) \ - DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x) { \ - return (RET_TYPE##2)(FUNCTION(x.x), FUNCTION(x.y)); \ - } \ -\ - DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x) { \ - return (RET_TYPE##3)(FUNCTION(x.x), FUNCTION(x.y), FUNCTION(x.z)); \ - } \ -\ - DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x) { \ - return (RET_TYPE##4)(FUNCTION(x.lo), FUNCTION(x.hi)); \ - } \ -\ - DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x) { \ - return (RET_TYPE##8)(FUNCTION(x.lo), FUNCTION(x.hi)); \ - } \ -\ - DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x) { \ - return (RET_TYPE##16)(FUNCTION(x.lo), FUNCTION(x.hi)); \ - } - -#define _CLC_BINARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, ARG2_TYPE) \ - DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y) { \ - return (RET_TYPE##2)(FUNCTION(x.x, y.x), FUNCTION(x.y, y.y)); \ - } \ -\ - DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ARG2_TYPE##3 y) { \ - return (RET_TYPE##3)(FUNCTION(x.x, y.x), FUNCTION(x.y, y.y), \ - FUNCTION(x.z, y.z)); \ - } \ -\ - DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x, ARG2_TYPE##4 y) { \ - return (RET_TYPE##4)(FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)); \ - } \ -\ - DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x, ARG2_TYPE##8 y) { \ - return (RET_TYPE##8)(FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)); \ - } \ -\ - DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x, ARG2_TYPE##16 y) { \ - return (RET_TYPE##16)(FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)); \ - } - -#define _CLC_DEFINE_BINARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE, ARG2_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \ - return BUILTIN(x, y); \ -} \ -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, RET_TYPE, FUNCTION, ARG1_TYPE, ARG2_TYPE) - -#define _CLC_DEFINE_UNARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x) { \ - return BUILTIN(x); \ -} \ -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, RET_TYPE, FUNCTION, ARG1_TYPE) diff --git a/libclc/generic/lib/common/sign.cl b/libclc/generic/lib/common/sign.cl deleted file mode 100644 index 25832e0b4f8b929e0f3be55249b391b59f439b3e..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/common/sign.cl +++ /dev/null @@ -1,28 +0,0 @@ -#include <clc/clc.h> -#include "../clcmacro.h" - -#define SIGN(TYPE, F) \ -_CLC_DEF _CLC_OVERLOAD TYPE sign(TYPE x) { \ - if (isnan(x)) { \ - return 0.0F; \ - } \ - if (x > 0.0F) { \ - return 1.0F; \ - } \ - if (x < 0.0F) { \ - return -1.0F; \ - } \ - return x; /* -0.0 or +0.0 */ \ -} - -SIGN(float, f) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, sign, float) - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -SIGN(double, ) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, sign, double) - -#endif diff --git a/libclc/generic/lib/convert.cl b/libclc/generic/lib/convert.cl deleted file mode 100644 index 92bfc51cadfa2017dd2b6d8976a7b3fb17db54b3..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/convert.cl +++ /dev/null @@ -1,36114 +0,0 @@ -/* !!!! AUTOGENERATED FILE generated by convert_type.py !!!!! - - DON'T CHANGE THIS FILE. MAKE YOUR CHANGES TO convert_type.py AND RUN: - $ ./generate-conversion-type-cl.sh - - OpenCL type conversion functions - - Copyright (c) 2013 Victor Oliveira <victormatheus@gmail.com> - Copyright (c) 2013 Jesse Towner <jessetowner@lavabit.com> - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - - -_CLC_DEF _CLC_OVERLOAD -char convert_char(char x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(char2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(char4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(char8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(char16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(char3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(char x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(char2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(char4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(char8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(char16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(char3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short(char x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(char2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(char4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(char8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(char16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(char3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(char x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(char2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(char4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(char8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(char16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(char3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int(char x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(char2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(char4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(char8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(char16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(char3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(char x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(char2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(char4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(char8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(char16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(char3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long(char x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(char2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(char4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(char8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(char16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(char3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(char x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(char2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(char4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(char8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(char16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(char3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float(char x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(char2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(char4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(char8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(char16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(char3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double(char x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(char2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(char4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(char8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(char16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(char3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char(uchar x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(uchar2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(uchar4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(uchar8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(uchar16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(uchar3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(uchar x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(uchar2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(uchar4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(uchar8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(uchar16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(uchar3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short(uchar x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(uchar2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(uchar4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(uchar8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(uchar16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(uchar3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(uchar x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(uchar2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(uchar4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(uchar8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(uchar16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(uchar3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int(uchar x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(uchar2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(uchar4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(uchar8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(uchar16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(uchar3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(uchar x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(uchar2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(uchar4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(uchar8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(uchar16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(uchar3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long(uchar x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(uchar2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(uchar4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(uchar8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(uchar16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(uchar3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(uchar x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(uchar2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(uchar4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(uchar8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(uchar16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(uchar3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float(uchar x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(uchar2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(uchar4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(uchar8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(uchar16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(uchar3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double(uchar x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(uchar2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(uchar4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(uchar8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(uchar16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(uchar3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char(short x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(short2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(short4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(short8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(short16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(short3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(short x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(short2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(short4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(short8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(short16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(short3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short(short x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(short2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(short4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(short8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(short16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(short3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(short x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(short2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(short4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(short8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(short16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(short3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int(short x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(short2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(short4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(short8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(short16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(short3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(short x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(short2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(short4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(short8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(short16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(short3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long(short x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(short2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(short4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(short8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(short16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(short3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(short x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(short2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(short4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(short8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(short16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(short3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float(short x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(short2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(short4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(short8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(short16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(short3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double(short x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(short2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(short4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(short8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(short16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(short3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char(ushort x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(ushort2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(ushort4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(ushort8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(ushort16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(ushort3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(ushort x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(ushort2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(ushort4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(ushort8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(ushort16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(ushort3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short(ushort x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(ushort2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(ushort4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(ushort8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(ushort16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(ushort3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(ushort x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(ushort2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(ushort4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(ushort8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(ushort16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(ushort3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int(ushort x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(ushort2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(ushort4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(ushort8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(ushort16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(ushort3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(ushort x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(ushort2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(ushort4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(ushort8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(ushort16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(ushort3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long(ushort x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(ushort2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(ushort4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(ushort8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(ushort16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(ushort3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(ushort x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(ushort2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(ushort4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(ushort8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(ushort16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(ushort3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float(ushort x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(ushort2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(ushort4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(ushort8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(ushort16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(ushort3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double(ushort x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(ushort2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(ushort4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(ushort8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(ushort16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(ushort3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char(int x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(int2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(int4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(int8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(int16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(int3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(int x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(int2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(int4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(int8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(int16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(int3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short(int x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(int2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(int4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(int8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(int16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(int3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(int x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(int2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(int4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(int8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(int16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(int3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int(int x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(int2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(int4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(int8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(int16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(int3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(int x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(int2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(int4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(int8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(int16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(int3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long(int x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(int2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(int4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(int8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(int16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(int3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(int x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(int2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(int4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(int8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(int16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(int3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float(int x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(int2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(int4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(int8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(int16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(int3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double(int x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(int2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(int4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(int8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(int16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(int3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char(uint x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(uint2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(uint4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(uint8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(uint16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(uint3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(uint x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(uint2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(uint4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(uint8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(uint16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(uint3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short(uint x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(uint2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(uint4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(uint8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(uint16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(uint3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(uint x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(uint2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(uint4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(uint8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(uint16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(uint3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int(uint x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(uint2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(uint4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(uint8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(uint16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(uint3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(uint x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(uint2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(uint4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(uint8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(uint16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(uint3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long(uint x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(uint2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(uint4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(uint8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(uint16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(uint3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(uint x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(uint2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(uint4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(uint8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(uint16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(uint3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float(uint x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(uint2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(uint4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(uint8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(uint16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(uint3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double(uint x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(uint2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(uint4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(uint8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(uint16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(uint3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char(long x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(long2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(long4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(long8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(long16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(long3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(long x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(long2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(long4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(long8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(long16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(long3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short(long x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(long2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(long4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(long8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(long16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(long3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(long x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(long2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(long4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(long8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(long16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(long3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int(long x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(long2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(long4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(long8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(long16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(long3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(long x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(long2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(long4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(long8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(long16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(long3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long(long x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(long2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(long4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(long8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(long16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(long3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(long x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(long2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(long4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(long8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(long16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(long3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float(long x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(long2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(long4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(long8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(long16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(long3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double(long x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(long2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(long4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(long8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(long16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(long3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char(ulong x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(ulong2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(ulong4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(ulong8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(ulong16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(ulong3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(ulong x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(ulong2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(ulong4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(ulong8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(ulong16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(ulong3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short(ulong x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(ulong2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(ulong4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(ulong8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(ulong16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(ulong3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(ulong x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(ulong2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(ulong4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(ulong8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(ulong16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(ulong3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int(ulong x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(ulong2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(ulong4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(ulong8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(ulong16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(ulong3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(ulong x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(ulong2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(ulong4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(ulong8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(ulong16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(ulong3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long(ulong x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(ulong2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(ulong4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(ulong8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(ulong16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(ulong3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(ulong x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(ulong2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(ulong4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(ulong8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(ulong16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(ulong3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float(ulong x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(ulong2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(ulong4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(ulong8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(ulong16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(ulong3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double(ulong x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(ulong2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(ulong4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(ulong8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(ulong16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(ulong3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char(float x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(float2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(float4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(float8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(float16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(float3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(float x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(float2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(float4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(float8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(float16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(float3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short(float x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(float2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(float4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(float8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(float16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(float3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(float x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(float2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(float4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(float8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(float16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(float3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int(float x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(float2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(float4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(float8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(float16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(float3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(float x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(float2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(float4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(float8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(float16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(float3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long(float x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(float2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(float4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(float8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(float16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(float3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(float x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(float2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(float4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(float8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(float16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(float3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float(float x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(float2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(float4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(float8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(float16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(float3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double(float x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(float2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(float4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(float8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(float16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(float3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char(double x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2(double2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4(double4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8(double8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16(double16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3(double3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar(double x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2(double2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4(double4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8(double8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16(double16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3(double3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short(double x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2(double2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4(double4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8(double8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16(double16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3(double3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort(double x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2(double2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4(double4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8(double8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16(double16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3(double3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int(double x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2(double2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4(double4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8(double8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16(double16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3(double3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint(double x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2(double2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4(double4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8(double8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16(double16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3(double3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long(double x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2(double2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4(double4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8(double8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16(double16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3(double3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong(double x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2(double2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4(double4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8(double8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16(double16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3(double3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float convert_float(double x) -{ - return (float)x; -} - -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2(double2 x) -{ - return (float2)(convert_float(x.lo), convert_float(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4(double4 x) -{ - return (float4)(convert_float2(x.lo), convert_float2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8(double8 x) -{ - return (float8)(convert_float4(x.lo), convert_float4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16(double16 x) -{ - return (float16)(convert_float8(x.lo), convert_float8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3(double3 x) -{ - return (float3)(convert_float2(x.s01), convert_float(x.s2)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double(double x) -{ - return (double)x; -} - -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2(double2 x) -{ - return (double2)(convert_double(x.lo), convert_double(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4(double4 x) -{ - return (double4)(convert_double2(x.lo), convert_double2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8(double8 x) -{ - return (double8)(convert_double4(x.lo), convert_double4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16(double16 x) -{ - return (double16)(convert_double8(x.lo), convert_double8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3(double3 x) -{ - return (double3)(convert_double2(x.s01), convert_double(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(char x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(char2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(char4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(char8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(char16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(char3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(char x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(char2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(char4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(char8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(char16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(char3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(char x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(char2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(char4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(char8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(char16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(char3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(char x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(char2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(char4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(char8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(char16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(char3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(char x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(char2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(char4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(char8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(char16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(char3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(char x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(char2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(char4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(char8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(char16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(char3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(char x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(char2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(char4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(char8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(char16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(char3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(char x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(char2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(char4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(char8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(char16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(char3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(char x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(char2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(char4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(char8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(char16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(char3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(char x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(char2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(char4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(char8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(char16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(char3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(char x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(char2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(char4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(char8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(char16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(char3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(char x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(char2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(char4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(char8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(char16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(char3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(char x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(char2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(char4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(char8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(char16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(char3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(char x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(char2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(char4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(char8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(char16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(char3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(char x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(char2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(char4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(char8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(char16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(char3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(char x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(char2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(char4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(char8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(char16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(char3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(char x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(char2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(char4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(char8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(char16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(char3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(char x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(char2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(char4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(char8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(char16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(char3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(char x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(char2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(char4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(char8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(char16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(char3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(char x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(char2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(char4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(char8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(char16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(char3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(char x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(char2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(char4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(char8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(char16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(char3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(char x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(char2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(char4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(char8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(char16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(char3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(char x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(char2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(char4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(char8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(char16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(char3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(char x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(char2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(char4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(char8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(char16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(char3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(char x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(char2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(char4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(char8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(char16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(char3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(char x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(char2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(char4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(char8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(char16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(char3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(char x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(char2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(char4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(char8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(char16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(char3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(char x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(char2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(char4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(char8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(char16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(char3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(char x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(char2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(char4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(char8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(char16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(char3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(char x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(char2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(char4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(char8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(char16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(char3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(char x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(char2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(char4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(char8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(char16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(char3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(char x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(char2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(char4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(char8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(char16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(char3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(uchar x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(uchar2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(uchar4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(uchar8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(uchar16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(uchar3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(uchar x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(uchar2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(uchar4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(uchar8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(uchar16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(uchar3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(uchar x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(uchar2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(uchar4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(uchar8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(uchar16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(uchar3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(uchar x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(uchar2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(uchar4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(uchar8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(uchar16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(uchar3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(uchar x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(uchar2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(uchar4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(uchar8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(uchar16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(uchar3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(uchar x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(uchar2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(uchar4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(uchar8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(uchar16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(uchar3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(uchar x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(uchar2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(uchar4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(uchar8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(uchar16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(uchar3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(uchar x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(uchar2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(uchar4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(uchar8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(uchar16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(uchar3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(uchar x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(uchar2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(uchar4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(uchar8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(uchar16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(uchar3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(uchar x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(uchar2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(uchar4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(uchar8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(uchar16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(uchar3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(uchar x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(uchar2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(uchar4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(uchar8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(uchar16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(uchar3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(uchar x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(uchar2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(uchar4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(uchar8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(uchar16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(uchar3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(uchar x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(uchar2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(uchar4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(uchar8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(uchar16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(uchar3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(uchar x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(uchar2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(uchar4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(uchar8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(uchar16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(uchar3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(uchar x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(uchar2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(uchar4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(uchar8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(uchar16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(uchar3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(uchar x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(uchar2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(uchar4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(uchar8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(uchar16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(uchar3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(uchar x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(uchar2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(uchar4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(uchar8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(uchar16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(uchar3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(uchar x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(uchar2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(uchar4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(uchar8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(uchar16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(uchar3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(uchar x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(uchar2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(uchar4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(uchar8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(uchar16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(uchar3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(uchar x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(uchar2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(uchar4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(uchar8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(uchar16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(uchar3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(uchar x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(uchar2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(uchar4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(uchar8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(uchar16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(uchar3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(uchar x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(uchar2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(uchar4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(uchar8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(uchar16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(uchar3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(uchar x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(uchar2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(uchar4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(uchar8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(uchar16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(uchar3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(uchar x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(uchar2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(uchar4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(uchar8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(uchar16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(uchar3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(uchar x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(uchar2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(uchar4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(uchar8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(uchar16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(uchar3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(uchar x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(uchar2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(uchar4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(uchar8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(uchar16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(uchar3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(uchar x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(uchar2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(uchar4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(uchar8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(uchar16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(uchar3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(uchar x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(uchar2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(uchar4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(uchar8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(uchar16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(uchar3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(uchar x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(uchar2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(uchar4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(uchar8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(uchar16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(uchar3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(uchar x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(uchar2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(uchar4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(uchar8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(uchar16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(uchar3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(uchar x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(uchar2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(uchar4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(uchar8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(uchar16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(uchar3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(uchar x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(uchar2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(uchar4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(uchar8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(uchar16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(uchar3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(short x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(short2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(short4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(short8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(short16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(short3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(short x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(short2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(short4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(short8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(short16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(short3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(short x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(short2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(short4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(short8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(short16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(short3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(short x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(short2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(short4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(short8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(short16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(short3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(short x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(short2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(short4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(short8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(short16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(short3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(short x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(short2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(short4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(short8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(short16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(short3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(short x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(short2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(short4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(short8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(short16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(short3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(short x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(short2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(short4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(short8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(short16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(short3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(short x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(short2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(short4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(short8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(short16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(short3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(short x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(short2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(short4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(short8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(short16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(short3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(short x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(short2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(short4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(short8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(short16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(short3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(short x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(short2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(short4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(short8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(short16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(short3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(short x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(short2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(short4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(short8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(short16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(short3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(short x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(short2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(short4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(short8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(short16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(short3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(short x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(short2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(short4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(short8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(short16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(short3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(short x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(short2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(short4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(short8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(short16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(short3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(short x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(short2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(short4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(short8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(short16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(short3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(short x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(short2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(short4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(short8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(short16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(short3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(short x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(short2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(short4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(short8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(short16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(short3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(short x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(short2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(short4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(short8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(short16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(short3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(short x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(short2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(short4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(short8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(short16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(short3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(short x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(short2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(short4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(short8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(short16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(short3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(short x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(short2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(short4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(short8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(short16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(short3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(short x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(short2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(short4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(short8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(short16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(short3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(short x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(short2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(short4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(short8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(short16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(short3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(short x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(short2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(short4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(short8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(short16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(short3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(short x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(short2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(short4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(short8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(short16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(short3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(short x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(short2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(short4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(short8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(short16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(short3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(short x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(short2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(short4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(short8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(short16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(short3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(short x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(short2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(short4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(short8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(short16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(short3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(short x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(short2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(short4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(short8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(short16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(short3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(short x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(short2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(short4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(short8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(short16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(short3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(ushort x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(ushort2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(ushort4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(ushort8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(ushort16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(ushort3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(ushort x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(ushort2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(ushort4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(ushort8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(ushort16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(ushort3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(ushort x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(ushort2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(ushort4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(ushort8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(ushort16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(ushort3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(ushort x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(ushort2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(ushort4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(ushort8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(ushort16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(ushort3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(ushort x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(ushort2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(ushort4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(ushort8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(ushort16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(ushort3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(ushort x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(ushort2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(ushort4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(ushort8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(ushort16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(ushort3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(ushort x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(ushort2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(ushort4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(ushort8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(ushort16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(ushort3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(ushort x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(ushort2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(ushort4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(ushort8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(ushort16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(ushort3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(ushort x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(ushort2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(ushort4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(ushort8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(ushort16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(ushort3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(ushort x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(ushort2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(ushort4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(ushort8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(ushort16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(ushort3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(ushort x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(ushort2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(ushort4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(ushort8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(ushort16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(ushort3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(ushort x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(ushort2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(ushort4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(ushort8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(ushort16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(ushort3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(ushort x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(ushort2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(ushort4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(ushort8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(ushort16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(ushort3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(ushort x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(ushort2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(ushort4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(ushort8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(ushort16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(ushort3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(ushort x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(ushort2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(ushort4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(ushort8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(ushort16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(ushort3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(ushort x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(ushort2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(ushort4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(ushort8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(ushort16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(ushort3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(ushort x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(ushort2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(ushort4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(ushort8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(ushort16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(ushort3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(ushort x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(ushort2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(ushort4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(ushort8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(ushort16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(ushort3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(ushort x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(ushort2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(ushort4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(ushort8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(ushort16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(ushort3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(ushort x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(ushort2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(ushort4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(ushort8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(ushort16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(ushort3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(ushort x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(ushort2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(ushort4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(ushort8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(ushort16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(ushort3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(ushort x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(ushort2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(ushort4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(ushort8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(ushort16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(ushort3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(ushort x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(ushort2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(ushort4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(ushort8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(ushort16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(ushort3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(ushort x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(ushort2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(ushort4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(ushort8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(ushort16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(ushort3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(ushort x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(ushort2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(ushort4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(ushort8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(ushort16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(ushort3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(ushort x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(ushort2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(ushort4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(ushort8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(ushort16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(ushort3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(ushort x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(ushort2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(ushort4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(ushort8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(ushort16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(ushort3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(ushort x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(ushort2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(ushort4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(ushort8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(ushort16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(ushort3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(ushort x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(ushort2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(ushort4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(ushort8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(ushort16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(ushort3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(ushort x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(ushort2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(ushort4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(ushort8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(ushort16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(ushort3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(ushort x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(ushort2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(ushort4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(ushort8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(ushort16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(ushort3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(ushort x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(ushort2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(ushort4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(ushort8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(ushort16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(ushort3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(int x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(int2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(int4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(int8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(int16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(int3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(int x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(int2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(int4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(int8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(int16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(int3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(int x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(int2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(int4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(int8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(int16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(int3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(int x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(int2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(int4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(int8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(int16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(int3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(int x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(int2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(int4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(int8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(int16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(int3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(int x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(int2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(int4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(int8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(int16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(int3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(int x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(int2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(int4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(int8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(int16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(int3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(int x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(int2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(int4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(int8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(int16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(int3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(int x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(int2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(int4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(int8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(int16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(int3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(int x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(int2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(int4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(int8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(int16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(int3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(int x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(int2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(int4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(int8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(int16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(int3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(int x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(int2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(int4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(int8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(int16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(int3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(int x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(int2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(int4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(int8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(int16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(int3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(int x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(int2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(int4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(int8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(int16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(int3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(int x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(int2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(int4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(int8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(int16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(int3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(int x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(int2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(int4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(int8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(int16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(int3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(int x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(int2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(int4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(int8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(int16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(int3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(int x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(int2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(int4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(int8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(int16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(int3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(int x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(int2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(int4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(int8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(int16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(int3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(int x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(int2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(int4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(int8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(int16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(int3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(int x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(int2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(int4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(int8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(int16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(int3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(int x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(int2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(int4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(int8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(int16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(int3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(int x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(int2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(int4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(int8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(int16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(int3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(int x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(int2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(int4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(int8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(int16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(int3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(int x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(int2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(int4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(int8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(int16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(int3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(int x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(int2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(int4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(int8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(int16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(int3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(int x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(int2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(int4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(int8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(int16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(int3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(int x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(int2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(int4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(int8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(int16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(int3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(int x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(int2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(int4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(int8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(int16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(int3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(int x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(int2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(int4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(int8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(int16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(int3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(int x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(int2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(int4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(int8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(int16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(int3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(int x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(int2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(int4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(int8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(int16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(int3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(uint x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(uint2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(uint4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(uint8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(uint16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(uint3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(uint x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(uint2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(uint4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(uint8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(uint16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(uint3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(uint x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(uint2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(uint4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(uint8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(uint16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(uint3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(uint x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(uint2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(uint4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(uint8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(uint16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(uint3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(uint x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(uint2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(uint4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(uint8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(uint16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(uint3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(uint x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(uint2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(uint4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(uint8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(uint16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(uint3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(uint x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(uint2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(uint4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(uint8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(uint16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(uint3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(uint x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(uint2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(uint4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(uint8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(uint16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(uint3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(uint x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(uint2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(uint4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(uint8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(uint16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(uint3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(uint x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(uint2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(uint4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(uint8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(uint16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(uint3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(uint x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(uint2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(uint4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(uint8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(uint16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(uint3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(uint x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(uint2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(uint4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(uint8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(uint16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(uint3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(uint x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(uint2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(uint4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(uint8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(uint16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(uint3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(uint x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(uint2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(uint4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(uint8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(uint16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(uint3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(uint x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(uint2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(uint4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(uint8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(uint16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(uint3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(uint x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(uint2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(uint4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(uint8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(uint16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(uint3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(uint x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(uint2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(uint4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(uint8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(uint16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(uint3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(uint x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(uint2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(uint4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(uint8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(uint16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(uint3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(uint x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(uint2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(uint4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(uint8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(uint16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(uint3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(uint x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(uint2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(uint4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(uint8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(uint16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(uint3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(uint x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(uint2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(uint4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(uint8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(uint16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(uint3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(uint x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(uint2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(uint4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(uint8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(uint16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(uint3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(uint x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(uint2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(uint4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(uint8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(uint16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(uint3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(uint x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(uint2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(uint4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(uint8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(uint16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(uint3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(uint x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(uint2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(uint4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(uint8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(uint16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(uint3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(uint x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(uint2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(uint4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(uint8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(uint16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(uint3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(uint x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(uint2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(uint4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(uint8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(uint16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(uint3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(uint x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(uint2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(uint4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(uint8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(uint16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(uint3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(uint x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(uint2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(uint4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(uint8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(uint16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(uint3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(uint x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(uint2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(uint4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(uint8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(uint16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(uint3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(uint x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(uint2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(uint4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(uint8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(uint16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(uint3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(uint x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(uint2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(uint4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(uint8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(uint16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(uint3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(long x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(long2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(long4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(long8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(long16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(long3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(long x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(long2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(long4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(long8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(long16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(long3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(long x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(long2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(long4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(long8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(long16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(long3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(long x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(long2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(long4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(long8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(long16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(long3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(long x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(long2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(long4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(long8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(long16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(long3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(long x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(long2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(long4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(long8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(long16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(long3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(long x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(long2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(long4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(long8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(long16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(long3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(long x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(long2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(long4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(long8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(long16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(long3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(long x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(long2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(long4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(long8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(long16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(long3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(long x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(long2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(long4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(long8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(long16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(long3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(long x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(long2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(long4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(long8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(long16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(long3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(long x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(long2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(long4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(long8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(long16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(long3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(long x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(long2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(long4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(long8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(long16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(long3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(long x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(long2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(long4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(long8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(long16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(long3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(long x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(long2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(long4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(long8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(long16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(long3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(long x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(long2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(long4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(long8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(long16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(long3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(long x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(long2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(long4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(long8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(long16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(long3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(long x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(long2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(long4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(long8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(long16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(long3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(long x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(long2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(long4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(long8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(long16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(long3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(long x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(long2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(long4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(long8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(long16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(long3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(long x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(long2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(long4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(long8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(long16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(long3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(long x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(long2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(long4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(long8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(long16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(long3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(long x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(long2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(long4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(long8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(long16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(long3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(long x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(long2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(long4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(long8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(long16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(long3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(long x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(long2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(long4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(long8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(long16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(long3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(long x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(long2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(long4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(long8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(long16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(long3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(long x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(long2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(long4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(long8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(long16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(long3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(long x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(long2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(long4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(long8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(long16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(long3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(long x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(long2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(long4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(long8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(long16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(long3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(long x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(long2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(long4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(long8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(long16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(long3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(long x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(long2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(long4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(long8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(long16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(long3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(long x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(long2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(long4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(long8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(long16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(long3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(ulong x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(ulong2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(ulong4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(ulong8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(ulong16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(ulong3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(ulong x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(ulong2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(ulong4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(ulong8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(ulong16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(ulong3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(ulong x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(ulong2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(ulong4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(ulong8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(ulong16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(ulong3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(ulong x) -{ - return (char)x; -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(ulong2 x) -{ - return (char2)(convert_char(x.lo), convert_char(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(ulong4 x) -{ - return (char4)(convert_char2(x.lo), convert_char2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(ulong8 x) -{ - return (char8)(convert_char4(x.lo), convert_char4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(ulong16 x) -{ - return (char16)(convert_char8(x.lo), convert_char8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(ulong3 x) -{ - return (char3)(convert_char2(x.s01), convert_char(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(ulong x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(ulong2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(ulong4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(ulong8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(ulong16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(ulong3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(ulong x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(ulong2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(ulong4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(ulong8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(ulong16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(ulong3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(ulong x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(ulong2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(ulong4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(ulong8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(ulong16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(ulong3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(ulong x) -{ - return (uchar)x; -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(ulong2 x) -{ - return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(ulong4 x) -{ - return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(ulong8 x) -{ - return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(ulong16 x) -{ - return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(ulong3 x) -{ - return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(ulong x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(ulong2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(ulong4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(ulong8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(ulong16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(ulong3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(ulong x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(ulong2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(ulong4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(ulong8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(ulong16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(ulong3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(ulong x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(ulong2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(ulong4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(ulong8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(ulong16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(ulong3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(ulong x) -{ - return (short)x; -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(ulong2 x) -{ - return (short2)(convert_short(x.lo), convert_short(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(ulong4 x) -{ - return (short4)(convert_short2(x.lo), convert_short2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(ulong8 x) -{ - return (short8)(convert_short4(x.lo), convert_short4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(ulong16 x) -{ - return (short16)(convert_short8(x.lo), convert_short8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(ulong3 x) -{ - return (short3)(convert_short2(x.s01), convert_short(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(ulong x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(ulong2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(ulong4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(ulong8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(ulong16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(ulong3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(ulong x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(ulong2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(ulong4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(ulong8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(ulong16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(ulong3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(ulong x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(ulong2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(ulong4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(ulong8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(ulong16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(ulong3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(ulong x) -{ - return (ushort)x; -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(ulong2 x) -{ - return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(ulong4 x) -{ - return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(ulong8 x) -{ - return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(ulong16 x) -{ - return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(ulong3 x) -{ - return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(ulong x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(ulong2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(ulong4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(ulong8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(ulong16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(ulong3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(ulong x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(ulong2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(ulong4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(ulong8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(ulong16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(ulong3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(ulong x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(ulong2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(ulong4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(ulong8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(ulong16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(ulong3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(ulong x) -{ - return (int)x; -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(ulong2 x) -{ - return (int2)(convert_int(x.lo), convert_int(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(ulong4 x) -{ - return (int4)(convert_int2(x.lo), convert_int2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(ulong8 x) -{ - return (int8)(convert_int4(x.lo), convert_int4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(ulong16 x) -{ - return (int16)(convert_int8(x.lo), convert_int8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(ulong3 x) -{ - return (int3)(convert_int2(x.s01), convert_int(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(ulong x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(ulong2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(ulong4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(ulong8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(ulong16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(ulong3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(ulong x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(ulong2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(ulong4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(ulong8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(ulong16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(ulong3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(ulong x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(ulong2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(ulong4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(ulong8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(ulong16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(ulong3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(ulong x) -{ - return (uint)x; -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(ulong2 x) -{ - return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(ulong4 x) -{ - return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(ulong8 x) -{ - return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(ulong16 x) -{ - return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(ulong3 x) -{ - return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(ulong x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(ulong2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(ulong4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(ulong8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(ulong16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(ulong3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(ulong x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(ulong2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(ulong4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(ulong8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(ulong16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(ulong3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(ulong x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(ulong2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(ulong4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(ulong8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(ulong16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(ulong3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(ulong x) -{ - return (long)x; -} - -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(ulong2 x) -{ - return (long2)(convert_long(x.lo), convert_long(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(ulong4 x) -{ - return (long4)(convert_long2(x.lo), convert_long2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(ulong8 x) -{ - return (long8)(convert_long4(x.lo), convert_long4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(ulong16 x) -{ - return (long16)(convert_long8(x.lo), convert_long8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(ulong3 x) -{ - return (long3)(convert_long2(x.s01), convert_long(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(ulong x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(ulong2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(ulong4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(ulong8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(ulong16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(ulong3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(ulong x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(ulong2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(ulong4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(ulong8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(ulong16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(ulong3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(ulong x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(ulong2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(ulong4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(ulong8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(ulong16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(ulong3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(ulong x) -{ - return (ulong)x; -} - -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(ulong2 x) -{ - return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(ulong4 x) -{ - return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(ulong8 x) -{ - return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(ulong16 x) -{ - return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); -} - -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(ulong3 x) -{ - return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(char x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(char2 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(char3 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(char4 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(char8 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(char16 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(char x) -{ - x = max(x, (char)0); - return convert_uchar(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(char2 x) -{ - x = max(x, (char)0); - return convert_uchar2(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(char3 x) -{ - x = max(x, (char)0); - return convert_uchar3(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(char4 x) -{ - x = max(x, (char)0); - return convert_uchar4(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(char8 x) -{ - x = max(x, (char)0); - return convert_uchar8(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(char16 x) -{ - x = max(x, (char)0); - return convert_uchar16(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(char x) -{ - return convert_short(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(char2 x) -{ - return convert_short2(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(char3 x) -{ - return convert_short3(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(char4 x) -{ - return convert_short4(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(char8 x) -{ - return convert_short8(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(char16 x) -{ - return convert_short16(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(char x) -{ - x = max(x, (char)0); - return convert_ushort(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(char2 x) -{ - x = max(x, (char)0); - return convert_ushort2(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(char3 x) -{ - x = max(x, (char)0); - return convert_ushort3(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(char4 x) -{ - x = max(x, (char)0); - return convert_ushort4(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(char8 x) -{ - x = max(x, (char)0); - return convert_ushort8(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(char16 x) -{ - x = max(x, (char)0); - return convert_ushort16(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(char x) -{ - return convert_int(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(char2 x) -{ - return convert_int2(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(char3 x) -{ - return convert_int3(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(char4 x) -{ - return convert_int4(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(char8 x) -{ - return convert_int8(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(char16 x) -{ - return convert_int16(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(char x) -{ - x = max(x, (char)0); - return convert_uint(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(char2 x) -{ - x = max(x, (char)0); - return convert_uint2(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(char3 x) -{ - x = max(x, (char)0); - return convert_uint3(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(char4 x) -{ - x = max(x, (char)0); - return convert_uint4(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(char8 x) -{ - x = max(x, (char)0); - return convert_uint8(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(char16 x) -{ - x = max(x, (char)0); - return convert_uint16(x); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(char x) -{ - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(char2 x) -{ - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(char3 x) -{ - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(char4 x) -{ - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(char8 x) -{ - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(char16 x) -{ - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(char x) -{ - x = max(x, (char)0); - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(char2 x) -{ - x = max(x, (char)0); - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(char3 x) -{ - x = max(x, (char)0); - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(char4 x) -{ - x = max(x, (char)0); - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(char8 x) -{ - x = max(x, (char)0); - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(char16 x) -{ - x = max(x, (char)0); - return convert_ulong16(x); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(uchar x) -{ - x = min(x, (uchar)CHAR_MAX); - return convert_char(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(uchar2 x) -{ - x = min(x, (uchar)CHAR_MAX); - return convert_char2(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(uchar3 x) -{ - x = min(x, (uchar)CHAR_MAX); - return convert_char3(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(uchar4 x) -{ - x = min(x, (uchar)CHAR_MAX); - return convert_char4(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(uchar8 x) -{ - x = min(x, (uchar)CHAR_MAX); - return convert_char8(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(uchar16 x) -{ - x = min(x, (uchar)CHAR_MAX); - return convert_char16(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(uchar x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(uchar2 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(uchar3 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(uchar4 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(uchar8 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(uchar16 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(uchar x) -{ - return convert_short(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(uchar2 x) -{ - return convert_short2(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(uchar3 x) -{ - return convert_short3(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(uchar4 x) -{ - return convert_short4(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(uchar8 x) -{ - return convert_short8(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(uchar16 x) -{ - return convert_short16(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(uchar x) -{ - return convert_ushort(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(uchar2 x) -{ - return convert_ushort2(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(uchar3 x) -{ - return convert_ushort3(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(uchar4 x) -{ - return convert_ushort4(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(uchar8 x) -{ - return convert_ushort8(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(uchar16 x) -{ - return convert_ushort16(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(uchar x) -{ - return convert_int(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(uchar2 x) -{ - return convert_int2(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(uchar3 x) -{ - return convert_int3(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(uchar4 x) -{ - return convert_int4(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(uchar8 x) -{ - return convert_int8(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(uchar16 x) -{ - return convert_int16(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(uchar x) -{ - return convert_uint(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(uchar2 x) -{ - return convert_uint2(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(uchar3 x) -{ - return convert_uint3(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(uchar4 x) -{ - return convert_uint4(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(uchar8 x) -{ - return convert_uint8(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(uchar16 x) -{ - return convert_uint16(x); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(uchar x) -{ - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(uchar2 x) -{ - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(uchar3 x) -{ - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(uchar4 x) -{ - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(uchar8 x) -{ - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(uchar16 x) -{ - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(uchar x) -{ - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(uchar2 x) -{ - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(uchar3 x) -{ - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(uchar4 x) -{ - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(uchar8 x) -{ - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(uchar16 x) -{ - return convert_ulong16(x); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(short x) -{ - x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); - return convert_char(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(short2 x) -{ - x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); - return convert_char2(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(short3 x) -{ - x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); - return convert_char3(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(short4 x) -{ - x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); - return convert_char4(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(short8 x) -{ - x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); - return convert_char8(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(short16 x) -{ - x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); - return convert_char16(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(short x) -{ - x = clamp(x, (short)0, (short)UCHAR_MAX); - return convert_uchar(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(short2 x) -{ - x = clamp(x, (short)0, (short)UCHAR_MAX); - return convert_uchar2(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(short3 x) -{ - x = clamp(x, (short)0, (short)UCHAR_MAX); - return convert_uchar3(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(short4 x) -{ - x = clamp(x, (short)0, (short)UCHAR_MAX); - return convert_uchar4(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(short8 x) -{ - x = clamp(x, (short)0, (short)UCHAR_MAX); - return convert_uchar8(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(short16 x) -{ - x = clamp(x, (short)0, (short)UCHAR_MAX); - return convert_uchar16(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(short x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(short2 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(short3 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(short4 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(short8 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(short16 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(short x) -{ - x = max(x, (short)0); - return convert_ushort(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(short2 x) -{ - x = max(x, (short)0); - return convert_ushort2(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(short3 x) -{ - x = max(x, (short)0); - return convert_ushort3(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(short4 x) -{ - x = max(x, (short)0); - return convert_ushort4(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(short8 x) -{ - x = max(x, (short)0); - return convert_ushort8(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(short16 x) -{ - x = max(x, (short)0); - return convert_ushort16(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(short x) -{ - return convert_int(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(short2 x) -{ - return convert_int2(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(short3 x) -{ - return convert_int3(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(short4 x) -{ - return convert_int4(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(short8 x) -{ - return convert_int8(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(short16 x) -{ - return convert_int16(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(short x) -{ - x = max(x, (short)0); - return convert_uint(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(short2 x) -{ - x = max(x, (short)0); - return convert_uint2(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(short3 x) -{ - x = max(x, (short)0); - return convert_uint3(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(short4 x) -{ - x = max(x, (short)0); - return convert_uint4(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(short8 x) -{ - x = max(x, (short)0); - return convert_uint8(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(short16 x) -{ - x = max(x, (short)0); - return convert_uint16(x); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(short x) -{ - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(short2 x) -{ - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(short3 x) -{ - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(short4 x) -{ - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(short8 x) -{ - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(short16 x) -{ - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(short x) -{ - x = max(x, (short)0); - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(short2 x) -{ - x = max(x, (short)0); - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(short3 x) -{ - x = max(x, (short)0); - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(short4 x) -{ - x = max(x, (short)0); - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(short8 x) -{ - x = max(x, (short)0); - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(short16 x) -{ - x = max(x, (short)0); - return convert_ulong16(x); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(ushort x) -{ - x = min(x, (ushort)CHAR_MAX); - return convert_char(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(ushort2 x) -{ - x = min(x, (ushort)CHAR_MAX); - return convert_char2(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(ushort3 x) -{ - x = min(x, (ushort)CHAR_MAX); - return convert_char3(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(ushort4 x) -{ - x = min(x, (ushort)CHAR_MAX); - return convert_char4(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(ushort8 x) -{ - x = min(x, (ushort)CHAR_MAX); - return convert_char8(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(ushort16 x) -{ - x = min(x, (ushort)CHAR_MAX); - return convert_char16(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(ushort x) -{ - x = min(x, (ushort)UCHAR_MAX); - return convert_uchar(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(ushort2 x) -{ - x = min(x, (ushort)UCHAR_MAX); - return convert_uchar2(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(ushort3 x) -{ - x = min(x, (ushort)UCHAR_MAX); - return convert_uchar3(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(ushort4 x) -{ - x = min(x, (ushort)UCHAR_MAX); - return convert_uchar4(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(ushort8 x) -{ - x = min(x, (ushort)UCHAR_MAX); - return convert_uchar8(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(ushort16 x) -{ - x = min(x, (ushort)UCHAR_MAX); - return convert_uchar16(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(ushort x) -{ - x = min(x, (ushort)SHRT_MAX); - return convert_short(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(ushort2 x) -{ - x = min(x, (ushort)SHRT_MAX); - return convert_short2(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(ushort3 x) -{ - x = min(x, (ushort)SHRT_MAX); - return convert_short3(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(ushort4 x) -{ - x = min(x, (ushort)SHRT_MAX); - return convert_short4(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(ushort8 x) -{ - x = min(x, (ushort)SHRT_MAX); - return convert_short8(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(ushort16 x) -{ - x = min(x, (ushort)SHRT_MAX); - return convert_short16(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(ushort x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(ushort2 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(ushort3 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(ushort4 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(ushort8 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(ushort16 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(ushort x) -{ - return convert_int(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(ushort2 x) -{ - return convert_int2(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(ushort3 x) -{ - return convert_int3(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(ushort4 x) -{ - return convert_int4(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(ushort8 x) -{ - return convert_int8(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(ushort16 x) -{ - return convert_int16(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(ushort x) -{ - return convert_uint(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(ushort2 x) -{ - return convert_uint2(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(ushort3 x) -{ - return convert_uint3(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(ushort4 x) -{ - return convert_uint4(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(ushort8 x) -{ - return convert_uint8(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(ushort16 x) -{ - return convert_uint16(x); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(ushort x) -{ - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(ushort2 x) -{ - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(ushort3 x) -{ - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(ushort4 x) -{ - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(ushort8 x) -{ - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(ushort16 x) -{ - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(ushort x) -{ - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(ushort2 x) -{ - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(ushort3 x) -{ - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(ushort4 x) -{ - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(ushort8 x) -{ - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(ushort16 x) -{ - return convert_ulong16(x); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(int x) -{ - x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); - return convert_char(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(int2 x) -{ - x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); - return convert_char2(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(int3 x) -{ - x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); - return convert_char3(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(int4 x) -{ - x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); - return convert_char4(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(int8 x) -{ - x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); - return convert_char8(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(int16 x) -{ - x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); - return convert_char16(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(int x) -{ - x = clamp(x, (int)0, (int)UCHAR_MAX); - return convert_uchar(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(int2 x) -{ - x = clamp(x, (int)0, (int)UCHAR_MAX); - return convert_uchar2(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(int3 x) -{ - x = clamp(x, (int)0, (int)UCHAR_MAX); - return convert_uchar3(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(int4 x) -{ - x = clamp(x, (int)0, (int)UCHAR_MAX); - return convert_uchar4(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(int8 x) -{ - x = clamp(x, (int)0, (int)UCHAR_MAX); - return convert_uchar8(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(int16 x) -{ - x = clamp(x, (int)0, (int)UCHAR_MAX); - return convert_uchar16(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(int x) -{ - x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); - return convert_short(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(int2 x) -{ - x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); - return convert_short2(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(int3 x) -{ - x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); - return convert_short3(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(int4 x) -{ - x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); - return convert_short4(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(int8 x) -{ - x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); - return convert_short8(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(int16 x) -{ - x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); - return convert_short16(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(int x) -{ - x = clamp(x, (int)0, (int)USHRT_MAX); - return convert_ushort(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(int2 x) -{ - x = clamp(x, (int)0, (int)USHRT_MAX); - return convert_ushort2(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(int3 x) -{ - x = clamp(x, (int)0, (int)USHRT_MAX); - return convert_ushort3(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(int4 x) -{ - x = clamp(x, (int)0, (int)USHRT_MAX); - return convert_ushort4(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(int8 x) -{ - x = clamp(x, (int)0, (int)USHRT_MAX); - return convert_ushort8(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(int16 x) -{ - x = clamp(x, (int)0, (int)USHRT_MAX); - return convert_ushort16(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(int x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(int2 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(int3 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(int4 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(int8 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(int16 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(int x) -{ - x = max(x, (int)0); - return convert_uint(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(int2 x) -{ - x = max(x, (int)0); - return convert_uint2(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(int3 x) -{ - x = max(x, (int)0); - return convert_uint3(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(int4 x) -{ - x = max(x, (int)0); - return convert_uint4(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(int8 x) -{ - x = max(x, (int)0); - return convert_uint8(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(int16 x) -{ - x = max(x, (int)0); - return convert_uint16(x); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(int x) -{ - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(int2 x) -{ - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(int3 x) -{ - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(int4 x) -{ - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(int8 x) -{ - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(int16 x) -{ - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(int x) -{ - x = max(x, (int)0); - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(int2 x) -{ - x = max(x, (int)0); - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(int3 x) -{ - x = max(x, (int)0); - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(int4 x) -{ - x = max(x, (int)0); - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(int8 x) -{ - x = max(x, (int)0); - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(int16 x) -{ - x = max(x, (int)0); - return convert_ulong16(x); -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(uint x) -{ - x = min(x, (uint)CHAR_MAX); - return convert_char(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(uint2 x) -{ - x = min(x, (uint)CHAR_MAX); - return convert_char2(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(uint3 x) -{ - x = min(x, (uint)CHAR_MAX); - return convert_char3(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(uint4 x) -{ - x = min(x, (uint)CHAR_MAX); - return convert_char4(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(uint8 x) -{ - x = min(x, (uint)CHAR_MAX); - return convert_char8(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(uint16 x) -{ - x = min(x, (uint)CHAR_MAX); - return convert_char16(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(uint x) -{ - x = min(x, (uint)UCHAR_MAX); - return convert_uchar(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(uint2 x) -{ - x = min(x, (uint)UCHAR_MAX); - return convert_uchar2(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(uint3 x) -{ - x = min(x, (uint)UCHAR_MAX); - return convert_uchar3(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(uint4 x) -{ - x = min(x, (uint)UCHAR_MAX); - return convert_uchar4(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(uint8 x) -{ - x = min(x, (uint)UCHAR_MAX); - return convert_uchar8(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(uint16 x) -{ - x = min(x, (uint)UCHAR_MAX); - return convert_uchar16(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(uint x) -{ - x = min(x, (uint)SHRT_MAX); - return convert_short(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(uint2 x) -{ - x = min(x, (uint)SHRT_MAX); - return convert_short2(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(uint3 x) -{ - x = min(x, (uint)SHRT_MAX); - return convert_short3(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(uint4 x) -{ - x = min(x, (uint)SHRT_MAX); - return convert_short4(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(uint8 x) -{ - x = min(x, (uint)SHRT_MAX); - return convert_short8(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(uint16 x) -{ - x = min(x, (uint)SHRT_MAX); - return convert_short16(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(uint x) -{ - x = min(x, (uint)USHRT_MAX); - return convert_ushort(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(uint2 x) -{ - x = min(x, (uint)USHRT_MAX); - return convert_ushort2(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(uint3 x) -{ - x = min(x, (uint)USHRT_MAX); - return convert_ushort3(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(uint4 x) -{ - x = min(x, (uint)USHRT_MAX); - return convert_ushort4(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(uint8 x) -{ - x = min(x, (uint)USHRT_MAX); - return convert_ushort8(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(uint16 x) -{ - x = min(x, (uint)USHRT_MAX); - return convert_ushort16(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(uint x) -{ - x = min(x, (uint)INT_MAX); - return convert_int(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(uint2 x) -{ - x = min(x, (uint)INT_MAX); - return convert_int2(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(uint3 x) -{ - x = min(x, (uint)INT_MAX); - return convert_int3(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(uint4 x) -{ - x = min(x, (uint)INT_MAX); - return convert_int4(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(uint8 x) -{ - x = min(x, (uint)INT_MAX); - return convert_int8(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(uint16 x) -{ - x = min(x, (uint)INT_MAX); - return convert_int16(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(uint x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(uint2 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(uint3 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(uint4 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(uint8 x) -{ - return x; -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(uint16 x) -{ - return x; -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(uint x) -{ - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(uint2 x) -{ - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(uint3 x) -{ - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(uint4 x) -{ - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(uint8 x) -{ - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(uint16 x) -{ - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(uint x) -{ - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(uint2 x) -{ - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(uint3 x) -{ - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(uint4 x) -{ - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(uint8 x) -{ - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(uint16 x) -{ - return convert_ulong16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(long x) -{ - x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); - return convert_char(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(long2 x) -{ - x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); - return convert_char2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(long3 x) -{ - x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); - return convert_char3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(long4 x) -{ - x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); - return convert_char4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(long8 x) -{ - x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); - return convert_char8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(long16 x) -{ - x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); - return convert_char16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(long x) -{ - x = clamp(x, (long)0, (long)UCHAR_MAX); - return convert_uchar(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(long2 x) -{ - x = clamp(x, (long)0, (long)UCHAR_MAX); - return convert_uchar2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(long3 x) -{ - x = clamp(x, (long)0, (long)UCHAR_MAX); - return convert_uchar3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(long4 x) -{ - x = clamp(x, (long)0, (long)UCHAR_MAX); - return convert_uchar4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(long8 x) -{ - x = clamp(x, (long)0, (long)UCHAR_MAX); - return convert_uchar8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(long16 x) -{ - x = clamp(x, (long)0, (long)UCHAR_MAX); - return convert_uchar16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(long x) -{ - x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); - return convert_short(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(long2 x) -{ - x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); - return convert_short2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(long3 x) -{ - x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); - return convert_short3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(long4 x) -{ - x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); - return convert_short4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(long8 x) -{ - x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); - return convert_short8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(long16 x) -{ - x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); - return convert_short16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(long x) -{ - x = clamp(x, (long)0, (long)USHRT_MAX); - return convert_ushort(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(long2 x) -{ - x = clamp(x, (long)0, (long)USHRT_MAX); - return convert_ushort2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(long3 x) -{ - x = clamp(x, (long)0, (long)USHRT_MAX); - return convert_ushort3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(long4 x) -{ - x = clamp(x, (long)0, (long)USHRT_MAX); - return convert_ushort4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(long8 x) -{ - x = clamp(x, (long)0, (long)USHRT_MAX); - return convert_ushort8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(long16 x) -{ - x = clamp(x, (long)0, (long)USHRT_MAX); - return convert_ushort16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(long x) -{ - x = clamp(x, (long)INT_MIN, (long)INT_MAX); - return convert_int(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(long2 x) -{ - x = clamp(x, (long)INT_MIN, (long)INT_MAX); - return convert_int2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(long3 x) -{ - x = clamp(x, (long)INT_MIN, (long)INT_MAX); - return convert_int3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(long4 x) -{ - x = clamp(x, (long)INT_MIN, (long)INT_MAX); - return convert_int4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(long8 x) -{ - x = clamp(x, (long)INT_MIN, (long)INT_MAX); - return convert_int8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(long16 x) -{ - x = clamp(x, (long)INT_MIN, (long)INT_MAX); - return convert_int16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(long x) -{ - x = clamp(x, (long)0, (long)UINT_MAX); - return convert_uint(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(long2 x) -{ - x = clamp(x, (long)0, (long)UINT_MAX); - return convert_uint2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(long3 x) -{ - x = clamp(x, (long)0, (long)UINT_MAX); - return convert_uint3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(long4 x) -{ - x = clamp(x, (long)0, (long)UINT_MAX); - return convert_uint4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(long8 x) -{ - x = clamp(x, (long)0, (long)UINT_MAX); - return convert_uint8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(long16 x) -{ - x = clamp(x, (long)0, (long)UINT_MAX); - return convert_uint16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(long x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(long2 x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(long3 x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(long4 x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(long8 x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(long16 x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(long x) -{ - x = max(x, (long)0); - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(long2 x) -{ - x = max(x, (long)0); - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(long3 x) -{ - x = max(x, (long)0); - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(long4 x) -{ - x = max(x, (long)0); - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(long8 x) -{ - x = max(x, (long)0); - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(long16 x) -{ - x = max(x, (long)0); - return convert_ulong16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(ulong x) -{ - x = min(x, (ulong)CHAR_MAX); - return convert_char(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(ulong2 x) -{ - x = min(x, (ulong)CHAR_MAX); - return convert_char2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(ulong3 x) -{ - x = min(x, (ulong)CHAR_MAX); - return convert_char3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(ulong4 x) -{ - x = min(x, (ulong)CHAR_MAX); - return convert_char4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(ulong8 x) -{ - x = min(x, (ulong)CHAR_MAX); - return convert_char8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(ulong16 x) -{ - x = min(x, (ulong)CHAR_MAX); - return convert_char16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(ulong x) -{ - x = min(x, (ulong)UCHAR_MAX); - return convert_uchar(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(ulong2 x) -{ - x = min(x, (ulong)UCHAR_MAX); - return convert_uchar2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(ulong3 x) -{ - x = min(x, (ulong)UCHAR_MAX); - return convert_uchar3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(ulong4 x) -{ - x = min(x, (ulong)UCHAR_MAX); - return convert_uchar4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(ulong8 x) -{ - x = min(x, (ulong)UCHAR_MAX); - return convert_uchar8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(ulong16 x) -{ - x = min(x, (ulong)UCHAR_MAX); - return convert_uchar16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(ulong x) -{ - x = min(x, (ulong)SHRT_MAX); - return convert_short(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(ulong2 x) -{ - x = min(x, (ulong)SHRT_MAX); - return convert_short2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(ulong3 x) -{ - x = min(x, (ulong)SHRT_MAX); - return convert_short3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(ulong4 x) -{ - x = min(x, (ulong)SHRT_MAX); - return convert_short4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(ulong8 x) -{ - x = min(x, (ulong)SHRT_MAX); - return convert_short8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(ulong16 x) -{ - x = min(x, (ulong)SHRT_MAX); - return convert_short16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(ulong x) -{ - x = min(x, (ulong)USHRT_MAX); - return convert_ushort(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(ulong2 x) -{ - x = min(x, (ulong)USHRT_MAX); - return convert_ushort2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(ulong3 x) -{ - x = min(x, (ulong)USHRT_MAX); - return convert_ushort3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(ulong4 x) -{ - x = min(x, (ulong)USHRT_MAX); - return convert_ushort4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(ulong8 x) -{ - x = min(x, (ulong)USHRT_MAX); - return convert_ushort8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(ulong16 x) -{ - x = min(x, (ulong)USHRT_MAX); - return convert_ushort16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(ulong x) -{ - x = min(x, (ulong)INT_MAX); - return convert_int(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(ulong2 x) -{ - x = min(x, (ulong)INT_MAX); - return convert_int2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(ulong3 x) -{ - x = min(x, (ulong)INT_MAX); - return convert_int3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(ulong4 x) -{ - x = min(x, (ulong)INT_MAX); - return convert_int4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(ulong8 x) -{ - x = min(x, (ulong)INT_MAX); - return convert_int8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(ulong16 x) -{ - x = min(x, (ulong)INT_MAX); - return convert_int16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(ulong x) -{ - x = min(x, (ulong)UINT_MAX); - return convert_uint(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(ulong2 x) -{ - x = min(x, (ulong)UINT_MAX); - return convert_uint2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(ulong3 x) -{ - x = min(x, (ulong)UINT_MAX); - return convert_uint3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(ulong4 x) -{ - x = min(x, (ulong)UINT_MAX); - return convert_uint4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(ulong8 x) -{ - x = min(x, (ulong)UINT_MAX); - return convert_uint8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(ulong16 x) -{ - x = min(x, (ulong)UINT_MAX); - return convert_uint16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(ulong x) -{ - x = min(x, (ulong)LONG_MAX); - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(ulong2 x) -{ - x = min(x, (ulong)LONG_MAX); - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(ulong3 x) -{ - x = min(x, (ulong)LONG_MAX); - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(ulong4 x) -{ - x = min(x, (ulong)LONG_MAX); - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(ulong8 x) -{ - x = min(x, (ulong)LONG_MAX); - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(ulong16 x) -{ - x = min(x, (ulong)LONG_MAX); - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(ulong x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(ulong2 x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(ulong3 x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(ulong4 x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(ulong8 x) -{ - return x; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(ulong16 x) -{ - return x; -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(float x) -{ - char y = convert_char(x); - y = select(y, (char)CHAR_MIN, convert_char(x < (float)CHAR_MIN)); - y = select(y, (char)CHAR_MAX, convert_char(x > (float)CHAR_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(float2 x) -{ - char2 y = convert_char2(x); - y = select(y, (char2)CHAR_MIN, convert_char2(x < (float2)CHAR_MIN)); - y = select(y, (char2)CHAR_MAX, convert_char2(x > (float2)CHAR_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(float3 x) -{ - char3 y = convert_char3(x); - y = select(y, (char3)CHAR_MIN, convert_char3(x < (float3)CHAR_MIN)); - y = select(y, (char3)CHAR_MAX, convert_char3(x > (float3)CHAR_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(float4 x) -{ - char4 y = convert_char4(x); - y = select(y, (char4)CHAR_MIN, convert_char4(x < (float4)CHAR_MIN)); - y = select(y, (char4)CHAR_MAX, convert_char4(x > (float4)CHAR_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(float8 x) -{ - char8 y = convert_char8(x); - y = select(y, (char8)CHAR_MIN, convert_char8(x < (float8)CHAR_MIN)); - y = select(y, (char8)CHAR_MAX, convert_char8(x > (float8)CHAR_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(float16 x) -{ - char16 y = convert_char16(x); - y = select(y, (char16)CHAR_MIN, convert_char16(x < (float16)CHAR_MIN)); - y = select(y, (char16)CHAR_MAX, convert_char16(x > (float16)CHAR_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(float x) -{ - uchar y = convert_uchar(x); - y = select(y, (uchar)0, as_uchar(convert_char(x < (float)0))); - y = select(y, (uchar)UCHAR_MAX, as_uchar(convert_char(x > (float)UCHAR_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(float2 x) -{ - uchar2 y = convert_uchar2(x); - y = select(y, (uchar2)0, as_uchar2(convert_char2(x < (float2)0))); - y = select(y, (uchar2)UCHAR_MAX, as_uchar2(convert_char2(x > (float2)UCHAR_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(float3 x) -{ - uchar3 y = convert_uchar3(x); - y = select(y, (uchar3)0, as_uchar3(convert_char3(x < (float3)0))); - y = select(y, (uchar3)UCHAR_MAX, as_uchar3(convert_char3(x > (float3)UCHAR_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(float4 x) -{ - uchar4 y = convert_uchar4(x); - y = select(y, (uchar4)0, as_uchar4(convert_char4(x < (float4)0))); - y = select(y, (uchar4)UCHAR_MAX, as_uchar4(convert_char4(x > (float4)UCHAR_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(float8 x) -{ - uchar8 y = convert_uchar8(x); - y = select(y, (uchar8)0, as_uchar8(convert_char8(x < (float8)0))); - y = select(y, (uchar8)UCHAR_MAX, as_uchar8(convert_char8(x > (float8)UCHAR_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(float16 x) -{ - uchar16 y = convert_uchar16(x); - y = select(y, (uchar16)0, as_uchar16(convert_char16(x < (float16)0))); - y = select(y, (uchar16)UCHAR_MAX, as_uchar16(convert_char16(x > (float16)UCHAR_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(float x) -{ - short y = convert_short(x); - y = select(y, (short)SHRT_MIN, convert_short(x < (float)SHRT_MIN)); - y = select(y, (short)SHRT_MAX, convert_short(x > (float)SHRT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(float2 x) -{ - short2 y = convert_short2(x); - y = select(y, (short2)SHRT_MIN, convert_short2(x < (float2)SHRT_MIN)); - y = select(y, (short2)SHRT_MAX, convert_short2(x > (float2)SHRT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(float3 x) -{ - short3 y = convert_short3(x); - y = select(y, (short3)SHRT_MIN, convert_short3(x < (float3)SHRT_MIN)); - y = select(y, (short3)SHRT_MAX, convert_short3(x > (float3)SHRT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(float4 x) -{ - short4 y = convert_short4(x); - y = select(y, (short4)SHRT_MIN, convert_short4(x < (float4)SHRT_MIN)); - y = select(y, (short4)SHRT_MAX, convert_short4(x > (float4)SHRT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(float8 x) -{ - short8 y = convert_short8(x); - y = select(y, (short8)SHRT_MIN, convert_short8(x < (float8)SHRT_MIN)); - y = select(y, (short8)SHRT_MAX, convert_short8(x > (float8)SHRT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(float16 x) -{ - short16 y = convert_short16(x); - y = select(y, (short16)SHRT_MIN, convert_short16(x < (float16)SHRT_MIN)); - y = select(y, (short16)SHRT_MAX, convert_short16(x > (float16)SHRT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(float x) -{ - ushort y = convert_ushort(x); - y = select(y, (ushort)0, as_ushort(convert_short(x < (float)0))); - y = select(y, (ushort)USHRT_MAX, as_ushort(convert_short(x > (float)USHRT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(float2 x) -{ - ushort2 y = convert_ushort2(x); - y = select(y, (ushort2)0, as_ushort2(convert_short2(x < (float2)0))); - y = select(y, (ushort2)USHRT_MAX, as_ushort2(convert_short2(x > (float2)USHRT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(float3 x) -{ - ushort3 y = convert_ushort3(x); - y = select(y, (ushort3)0, as_ushort3(convert_short3(x < (float3)0))); - y = select(y, (ushort3)USHRT_MAX, as_ushort3(convert_short3(x > (float3)USHRT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(float4 x) -{ - ushort4 y = convert_ushort4(x); - y = select(y, (ushort4)0, as_ushort4(convert_short4(x < (float4)0))); - y = select(y, (ushort4)USHRT_MAX, as_ushort4(convert_short4(x > (float4)USHRT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(float8 x) -{ - ushort8 y = convert_ushort8(x); - y = select(y, (ushort8)0, as_ushort8(convert_short8(x < (float8)0))); - y = select(y, (ushort8)USHRT_MAX, as_ushort8(convert_short8(x > (float8)USHRT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(float16 x) -{ - ushort16 y = convert_ushort16(x); - y = select(y, (ushort16)0, as_ushort16(convert_short16(x < (float16)0))); - y = select(y, (ushort16)USHRT_MAX, as_ushort16(convert_short16(x > (float16)USHRT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(float x) -{ - int y = convert_int(x); - y = select(y, (int)INT_MIN, convert_int(x < (float)INT_MIN)); - y = select(y, (int)INT_MAX, convert_int(x > (float)INT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(float2 x) -{ - int2 y = convert_int2(x); - y = select(y, (int2)INT_MIN, convert_int2(x < (float2)INT_MIN)); - y = select(y, (int2)INT_MAX, convert_int2(x > (float2)INT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(float3 x) -{ - int3 y = convert_int3(x); - y = select(y, (int3)INT_MIN, convert_int3(x < (float3)INT_MIN)); - y = select(y, (int3)INT_MAX, convert_int3(x > (float3)INT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(float4 x) -{ - int4 y = convert_int4(x); - y = select(y, (int4)INT_MIN, convert_int4(x < (float4)INT_MIN)); - y = select(y, (int4)INT_MAX, convert_int4(x > (float4)INT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(float8 x) -{ - int8 y = convert_int8(x); - y = select(y, (int8)INT_MIN, convert_int8(x < (float8)INT_MIN)); - y = select(y, (int8)INT_MAX, convert_int8(x > (float8)INT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(float16 x) -{ - int16 y = convert_int16(x); - y = select(y, (int16)INT_MIN, convert_int16(x < (float16)INT_MIN)); - y = select(y, (int16)INT_MAX, convert_int16(x > (float16)INT_MAX)); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(float x) -{ - uint y = convert_uint(x); - y = select(y, (uint)0, as_uint(convert_int(x < (float)0))); - y = select(y, (uint)UINT_MAX, as_uint(convert_int(x > (float)UINT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(float2 x) -{ - uint2 y = convert_uint2(x); - y = select(y, (uint2)0, as_uint2(convert_int2(x < (float2)0))); - y = select(y, (uint2)UINT_MAX, as_uint2(convert_int2(x > (float2)UINT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(float3 x) -{ - uint3 y = convert_uint3(x); - y = select(y, (uint3)0, as_uint3(convert_int3(x < (float3)0))); - y = select(y, (uint3)UINT_MAX, as_uint3(convert_int3(x > (float3)UINT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(float4 x) -{ - uint4 y = convert_uint4(x); - y = select(y, (uint4)0, as_uint4(convert_int4(x < (float4)0))); - y = select(y, (uint4)UINT_MAX, as_uint4(convert_int4(x > (float4)UINT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(float8 x) -{ - uint8 y = convert_uint8(x); - y = select(y, (uint8)0, as_uint8(convert_int8(x < (float8)0))); - y = select(y, (uint8)UINT_MAX, as_uint8(convert_int8(x > (float8)UINT_MAX))); - return y; -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(float16 x) -{ - uint16 y = convert_uint16(x); - y = select(y, (uint16)0, as_uint16(convert_int16(x < (float16)0))); - y = select(y, (uint16)UINT_MAX, as_uint16(convert_int16(x > (float16)UINT_MAX))); - return y; -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(float x) -{ - long y = convert_long(x); - y = select(y, (long)LONG_MIN, convert_long(x < (float)LONG_MIN)); - y = select(y, (long)LONG_MAX, convert_long(x > (float)LONG_MAX)); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(float2 x) -{ - long2 y = convert_long2(x); - y = select(y, (long2)LONG_MIN, convert_long2(x < (float2)LONG_MIN)); - y = select(y, (long2)LONG_MAX, convert_long2(x > (float2)LONG_MAX)); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(float3 x) -{ - long3 y = convert_long3(x); - y = select(y, (long3)LONG_MIN, convert_long3(x < (float3)LONG_MIN)); - y = select(y, (long3)LONG_MAX, convert_long3(x > (float3)LONG_MAX)); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(float4 x) -{ - long4 y = convert_long4(x); - y = select(y, (long4)LONG_MIN, convert_long4(x < (float4)LONG_MIN)); - y = select(y, (long4)LONG_MAX, convert_long4(x > (float4)LONG_MAX)); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(float8 x) -{ - long8 y = convert_long8(x); - y = select(y, (long8)LONG_MIN, convert_long8(x < (float8)LONG_MIN)); - y = select(y, (long8)LONG_MAX, convert_long8(x > (float8)LONG_MAX)); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(float16 x) -{ - long16 y = convert_long16(x); - y = select(y, (long16)LONG_MIN, convert_long16(x < (float16)LONG_MIN)); - y = select(y, (long16)LONG_MAX, convert_long16(x > (float16)LONG_MAX)); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(float x) -{ - ulong y = convert_ulong(x); - y = select(y, (ulong)0, as_ulong(convert_long(x < (float)0))); - y = select(y, (ulong)ULONG_MAX, as_ulong(convert_long(x > (float)ULONG_MAX))); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(float2 x) -{ - ulong2 y = convert_ulong2(x); - y = select(y, (ulong2)0, as_ulong2(convert_long2(x < (float2)0))); - y = select(y, (ulong2)ULONG_MAX, as_ulong2(convert_long2(x > (float2)ULONG_MAX))); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(float3 x) -{ - ulong3 y = convert_ulong3(x); - y = select(y, (ulong3)0, as_ulong3(convert_long3(x < (float3)0))); - y = select(y, (ulong3)ULONG_MAX, as_ulong3(convert_long3(x > (float3)ULONG_MAX))); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(float4 x) -{ - ulong4 y = convert_ulong4(x); - y = select(y, (ulong4)0, as_ulong4(convert_long4(x < (float4)0))); - y = select(y, (ulong4)ULONG_MAX, as_ulong4(convert_long4(x > (float4)ULONG_MAX))); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(float8 x) -{ - ulong8 y = convert_ulong8(x); - y = select(y, (ulong8)0, as_ulong8(convert_long8(x < (float8)0))); - y = select(y, (ulong8)ULONG_MAX, as_ulong8(convert_long8(x > (float8)ULONG_MAX))); - return y; -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(float16 x) -{ - ulong16 y = convert_ulong16(x); - y = select(y, (ulong16)0, as_ulong16(convert_long16(x < (float16)0))); - y = select(y, (ulong16)ULONG_MAX, as_ulong16(convert_long16(x > (float16)ULONG_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat(double x) -{ - char y = convert_char(x); - y = select(y, (char)CHAR_MIN, convert_char(x < (double)CHAR_MIN)); - y = select(y, (char)CHAR_MAX, convert_char(x > (double)CHAR_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat(double2 x) -{ - char2 y = convert_char2(x); - y = select(y, (char2)CHAR_MIN, convert_char2(x < (double2)CHAR_MIN)); - y = select(y, (char2)CHAR_MAX, convert_char2(x > (double2)CHAR_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat(double3 x) -{ - char3 y = convert_char3(x); - y = select(y, (char3)CHAR_MIN, convert_char3(x < (double3)CHAR_MIN)); - y = select(y, (char3)CHAR_MAX, convert_char3(x > (double3)CHAR_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat(double4 x) -{ - char4 y = convert_char4(x); - y = select(y, (char4)CHAR_MIN, convert_char4(x < (double4)CHAR_MIN)); - y = select(y, (char4)CHAR_MAX, convert_char4(x > (double4)CHAR_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat(double8 x) -{ - char8 y = convert_char8(x); - y = select(y, (char8)CHAR_MIN, convert_char8(x < (double8)CHAR_MIN)); - y = select(y, (char8)CHAR_MAX, convert_char8(x > (double8)CHAR_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat(double16 x) -{ - char16 y = convert_char16(x); - y = select(y, (char16)CHAR_MIN, convert_char16(x < (double16)CHAR_MIN)); - y = select(y, (char16)CHAR_MAX, convert_char16(x > (double16)CHAR_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat(double x) -{ - uchar y = convert_uchar(x); - y = select(y, (uchar)0, as_uchar(convert_char(x < (double)0))); - y = select(y, (uchar)UCHAR_MAX, as_uchar(convert_char(x > (double)UCHAR_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat(double2 x) -{ - uchar2 y = convert_uchar2(x); - y = select(y, (uchar2)0, as_uchar2(convert_char2(x < (double2)0))); - y = select(y, (uchar2)UCHAR_MAX, as_uchar2(convert_char2(x > (double2)UCHAR_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat(double3 x) -{ - uchar3 y = convert_uchar3(x); - y = select(y, (uchar3)0, as_uchar3(convert_char3(x < (double3)0))); - y = select(y, (uchar3)UCHAR_MAX, as_uchar3(convert_char3(x > (double3)UCHAR_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat(double4 x) -{ - uchar4 y = convert_uchar4(x); - y = select(y, (uchar4)0, as_uchar4(convert_char4(x < (double4)0))); - y = select(y, (uchar4)UCHAR_MAX, as_uchar4(convert_char4(x > (double4)UCHAR_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat(double8 x) -{ - uchar8 y = convert_uchar8(x); - y = select(y, (uchar8)0, as_uchar8(convert_char8(x < (double8)0))); - y = select(y, (uchar8)UCHAR_MAX, as_uchar8(convert_char8(x > (double8)UCHAR_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat(double16 x) -{ - uchar16 y = convert_uchar16(x); - y = select(y, (uchar16)0, as_uchar16(convert_char16(x < (double16)0))); - y = select(y, (uchar16)UCHAR_MAX, as_uchar16(convert_char16(x > (double16)UCHAR_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat(double x) -{ - short y = convert_short(x); - y = select(y, (short)SHRT_MIN, convert_short(x < (double)SHRT_MIN)); - y = select(y, (short)SHRT_MAX, convert_short(x > (double)SHRT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat(double2 x) -{ - short2 y = convert_short2(x); - y = select(y, (short2)SHRT_MIN, convert_short2(x < (double2)SHRT_MIN)); - y = select(y, (short2)SHRT_MAX, convert_short2(x > (double2)SHRT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat(double3 x) -{ - short3 y = convert_short3(x); - y = select(y, (short3)SHRT_MIN, convert_short3(x < (double3)SHRT_MIN)); - y = select(y, (short3)SHRT_MAX, convert_short3(x > (double3)SHRT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat(double4 x) -{ - short4 y = convert_short4(x); - y = select(y, (short4)SHRT_MIN, convert_short4(x < (double4)SHRT_MIN)); - y = select(y, (short4)SHRT_MAX, convert_short4(x > (double4)SHRT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat(double8 x) -{ - short8 y = convert_short8(x); - y = select(y, (short8)SHRT_MIN, convert_short8(x < (double8)SHRT_MIN)); - y = select(y, (short8)SHRT_MAX, convert_short8(x > (double8)SHRT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat(double16 x) -{ - short16 y = convert_short16(x); - y = select(y, (short16)SHRT_MIN, convert_short16(x < (double16)SHRT_MIN)); - y = select(y, (short16)SHRT_MAX, convert_short16(x > (double16)SHRT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat(double x) -{ - ushort y = convert_ushort(x); - y = select(y, (ushort)0, as_ushort(convert_short(x < (double)0))); - y = select(y, (ushort)USHRT_MAX, as_ushort(convert_short(x > (double)USHRT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat(double2 x) -{ - ushort2 y = convert_ushort2(x); - y = select(y, (ushort2)0, as_ushort2(convert_short2(x < (double2)0))); - y = select(y, (ushort2)USHRT_MAX, as_ushort2(convert_short2(x > (double2)USHRT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat(double3 x) -{ - ushort3 y = convert_ushort3(x); - y = select(y, (ushort3)0, as_ushort3(convert_short3(x < (double3)0))); - y = select(y, (ushort3)USHRT_MAX, as_ushort3(convert_short3(x > (double3)USHRT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat(double4 x) -{ - ushort4 y = convert_ushort4(x); - y = select(y, (ushort4)0, as_ushort4(convert_short4(x < (double4)0))); - y = select(y, (ushort4)USHRT_MAX, as_ushort4(convert_short4(x > (double4)USHRT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat(double8 x) -{ - ushort8 y = convert_ushort8(x); - y = select(y, (ushort8)0, as_ushort8(convert_short8(x < (double8)0))); - y = select(y, (ushort8)USHRT_MAX, as_ushort8(convert_short8(x > (double8)USHRT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat(double16 x) -{ - ushort16 y = convert_ushort16(x); - y = select(y, (ushort16)0, as_ushort16(convert_short16(x < (double16)0))); - y = select(y, (ushort16)USHRT_MAX, as_ushort16(convert_short16(x > (double16)USHRT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat(double x) -{ - int y = convert_int(x); - y = select(y, (int)INT_MIN, convert_int(x < (double)INT_MIN)); - y = select(y, (int)INT_MAX, convert_int(x > (double)INT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat(double2 x) -{ - int2 y = convert_int2(x); - y = select(y, (int2)INT_MIN, convert_int2(x < (double2)INT_MIN)); - y = select(y, (int2)INT_MAX, convert_int2(x > (double2)INT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat(double3 x) -{ - int3 y = convert_int3(x); - y = select(y, (int3)INT_MIN, convert_int3(x < (double3)INT_MIN)); - y = select(y, (int3)INT_MAX, convert_int3(x > (double3)INT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat(double4 x) -{ - int4 y = convert_int4(x); - y = select(y, (int4)INT_MIN, convert_int4(x < (double4)INT_MIN)); - y = select(y, (int4)INT_MAX, convert_int4(x > (double4)INT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat(double8 x) -{ - int8 y = convert_int8(x); - y = select(y, (int8)INT_MIN, convert_int8(x < (double8)INT_MIN)); - y = select(y, (int8)INT_MAX, convert_int8(x > (double8)INT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat(double16 x) -{ - int16 y = convert_int16(x); - y = select(y, (int16)INT_MIN, convert_int16(x < (double16)INT_MIN)); - y = select(y, (int16)INT_MAX, convert_int16(x > (double16)INT_MAX)); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat(double x) -{ - uint y = convert_uint(x); - y = select(y, (uint)0, as_uint(convert_int(x < (double)0))); - y = select(y, (uint)UINT_MAX, as_uint(convert_int(x > (double)UINT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat(double2 x) -{ - uint2 y = convert_uint2(x); - y = select(y, (uint2)0, as_uint2(convert_int2(x < (double2)0))); - y = select(y, (uint2)UINT_MAX, as_uint2(convert_int2(x > (double2)UINT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat(double3 x) -{ - uint3 y = convert_uint3(x); - y = select(y, (uint3)0, as_uint3(convert_int3(x < (double3)0))); - y = select(y, (uint3)UINT_MAX, as_uint3(convert_int3(x > (double3)UINT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat(double4 x) -{ - uint4 y = convert_uint4(x); - y = select(y, (uint4)0, as_uint4(convert_int4(x < (double4)0))); - y = select(y, (uint4)UINT_MAX, as_uint4(convert_int4(x > (double4)UINT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat(double8 x) -{ - uint8 y = convert_uint8(x); - y = select(y, (uint8)0, as_uint8(convert_int8(x < (double8)0))); - y = select(y, (uint8)UINT_MAX, as_uint8(convert_int8(x > (double8)UINT_MAX))); - return y; -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat(double16 x) -{ - uint16 y = convert_uint16(x); - y = select(y, (uint16)0, as_uint16(convert_int16(x < (double16)0))); - y = select(y, (uint16)UINT_MAX, as_uint16(convert_int16(x > (double16)UINT_MAX))); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat(double x) -{ - long y = convert_long(x); - y = select(y, (long)LONG_MIN, convert_long(x < (double)LONG_MIN)); - y = select(y, (long)LONG_MAX, convert_long(x > (double)LONG_MAX)); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat(double2 x) -{ - long2 y = convert_long2(x); - y = select(y, (long2)LONG_MIN, convert_long2(x < (double2)LONG_MIN)); - y = select(y, (long2)LONG_MAX, convert_long2(x > (double2)LONG_MAX)); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat(double3 x) -{ - long3 y = convert_long3(x); - y = select(y, (long3)LONG_MIN, convert_long3(x < (double3)LONG_MIN)); - y = select(y, (long3)LONG_MAX, convert_long3(x > (double3)LONG_MAX)); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat(double4 x) -{ - long4 y = convert_long4(x); - y = select(y, (long4)LONG_MIN, convert_long4(x < (double4)LONG_MIN)); - y = select(y, (long4)LONG_MAX, convert_long4(x > (double4)LONG_MAX)); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat(double8 x) -{ - long8 y = convert_long8(x); - y = select(y, (long8)LONG_MIN, convert_long8(x < (double8)LONG_MIN)); - y = select(y, (long8)LONG_MAX, convert_long8(x > (double8)LONG_MAX)); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat(double16 x) -{ - long16 y = convert_long16(x); - y = select(y, (long16)LONG_MIN, convert_long16(x < (double16)LONG_MIN)); - y = select(y, (long16)LONG_MAX, convert_long16(x > (double16)LONG_MAX)); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat(double x) -{ - ulong y = convert_ulong(x); - y = select(y, (ulong)0, as_ulong(convert_long(x < (double)0))); - y = select(y, (ulong)ULONG_MAX, as_ulong(convert_long(x > (double)ULONG_MAX))); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat(double2 x) -{ - ulong2 y = convert_ulong2(x); - y = select(y, (ulong2)0, as_ulong2(convert_long2(x < (double2)0))); - y = select(y, (ulong2)ULONG_MAX, as_ulong2(convert_long2(x > (double2)ULONG_MAX))); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat(double3 x) -{ - ulong3 y = convert_ulong3(x); - y = select(y, (ulong3)0, as_ulong3(convert_long3(x < (double3)0))); - y = select(y, (ulong3)ULONG_MAX, as_ulong3(convert_long3(x > (double3)ULONG_MAX))); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat(double4 x) -{ - ulong4 y = convert_ulong4(x); - y = select(y, (ulong4)0, as_ulong4(convert_long4(x < (double4)0))); - y = select(y, (ulong4)ULONG_MAX, as_ulong4(convert_long4(x > (double4)ULONG_MAX))); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat(double8 x) -{ - ulong8 y = convert_ulong8(x); - y = select(y, (ulong8)0, as_ulong8(convert_long8(x < (double8)0))); - y = select(y, (ulong8)ULONG_MAX, as_ulong8(convert_long8(x > (double8)ULONG_MAX))); - return y; -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat(double16 x) -{ - ulong16 y = convert_ulong16(x); - y = select(y, (ulong16)0, as_ulong16(convert_long16(x < (double16)0))); - y = select(y, (ulong16)ULONG_MAX, as_ulong16(convert_long16(x > (double16)ULONG_MAX))); - return y; -} -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(char x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(char x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(char x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(char x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(char2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(char2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(char2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(char2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(char3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(char3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(char3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(char3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(char4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(char4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(char4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(char4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(char8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(char8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(char8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(char8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(char16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(char16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(char16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(char16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(char x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(char x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(char x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(char x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(char2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(char2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(char2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(char2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(char3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(char3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(char3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(char3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(char4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(char4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(char4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(char4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(char8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(char8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(char8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(char8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(char16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(char16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(char16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(char16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(char x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(char x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(char x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(char x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(char2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(char2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(char2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(char2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(char3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(char3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(char3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(char3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(char4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(char4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(char4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(char4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(char8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(char8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(char8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(char8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(char16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(char16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(char16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(char16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(char x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(char x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(char x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(char x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(char2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(char2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(char2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(char2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(char3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(char3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(char3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(char3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(char4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(char4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(char4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(char4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(char8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(char8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(char8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(char8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(char16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(char16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(char16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(char16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(char x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(char x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(char x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(char x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(char2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(char2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(char2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(char2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(char3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(char3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(char3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(char3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(char4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(char4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(char4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(char4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(char8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(char8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(char8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(char8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(char16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(char16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(char16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(char16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(char x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(char x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(char x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(char x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(char2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(char2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(char2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(char2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(char3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(char3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(char3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(char3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(char4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(char4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(char4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(char4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(char8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(char8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(char8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(char8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(char16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(char16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(char16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(char16 x) -{ - return convert_uint16_sat(x); -} - -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(char x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(char x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(char x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(char x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(char2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(char2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(char2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(char2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(char3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(char3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(char3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(char3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(char4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(char4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(char4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(char4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(char8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(char8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(char8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(char8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(char16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(char16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(char16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(char16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(char x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(char x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(char x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(char x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(char2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(char2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(char2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(char2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(char3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(char3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(char3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(char3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(char4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(char4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(char4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(char4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(char8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(char8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(char8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(char8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(char16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(char16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(char16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(char16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(uchar x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(uchar x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(uchar x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(uchar x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(uchar2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(uchar2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(uchar2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(uchar2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(uchar3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(uchar3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(uchar3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(uchar3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(uchar4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(uchar4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(uchar4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(uchar4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(uchar8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(uchar8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(uchar8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(uchar8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(uchar16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(uchar16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(uchar16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(uchar16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(uchar x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(uchar x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(uchar x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(uchar x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(uchar2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(uchar2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(uchar2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(uchar2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(uchar3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(uchar3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(uchar3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(uchar3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(uchar4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(uchar4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(uchar4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(uchar4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(uchar8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(uchar8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(uchar8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(uchar8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(uchar16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(uchar16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(uchar16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(uchar16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(uchar x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(uchar x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(uchar x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(uchar x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(uchar2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(uchar2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(uchar2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(uchar2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(uchar3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(uchar3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(uchar3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(uchar3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(uchar4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(uchar4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(uchar4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(uchar4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(uchar8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(uchar8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(uchar8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(uchar8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(uchar16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(uchar16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(uchar16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(uchar16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(uchar x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(uchar x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(uchar x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(uchar x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(uchar2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(uchar2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(uchar2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(uchar2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(uchar3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(uchar3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(uchar3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(uchar3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(uchar4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(uchar4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(uchar4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(uchar4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(uchar8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(uchar8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(uchar8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(uchar8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(uchar16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(uchar16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(uchar16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(uchar16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(uchar x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(uchar x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(uchar x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(uchar x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(uchar2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(uchar2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(uchar2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(uchar2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(uchar3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(uchar3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(uchar3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(uchar3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(uchar4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(uchar4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(uchar4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(uchar4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(uchar8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(uchar8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(uchar8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(uchar8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(uchar16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(uchar16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(uchar16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(uchar16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(uchar x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(uchar x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(uchar x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(uchar x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(uchar2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(uchar2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(uchar2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(uchar2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(uchar3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(uchar3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(uchar3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(uchar3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(uchar4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(uchar4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(uchar4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(uchar4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(uchar8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(uchar8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(uchar8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(uchar8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(uchar16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(uchar16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(uchar16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(uchar16 x) -{ - return convert_uint16_sat(x); -} - -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(uchar x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(uchar x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(uchar x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(uchar x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(uchar2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(uchar2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(uchar2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(uchar2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(uchar3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(uchar3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(uchar3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(uchar3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(uchar4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(uchar4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(uchar4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(uchar4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(uchar8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(uchar8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(uchar8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(uchar8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(uchar16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(uchar16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(uchar16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(uchar16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(uchar x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(uchar x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(uchar x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(uchar x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(uchar2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(uchar2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(uchar2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(uchar2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(uchar3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(uchar3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(uchar3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(uchar3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(uchar4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(uchar4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(uchar4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(uchar4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(uchar8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(uchar8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(uchar8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(uchar8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(uchar16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(uchar16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(uchar16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(uchar16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(short x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(short x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(short x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(short x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(short2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(short2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(short2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(short2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(short3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(short3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(short3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(short3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(short4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(short4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(short4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(short4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(short8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(short8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(short8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(short8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(short16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(short16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(short16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(short16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(short x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(short x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(short x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(short x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(short2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(short2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(short2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(short2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(short3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(short3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(short3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(short3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(short4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(short4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(short4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(short4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(short8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(short8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(short8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(short8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(short16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(short16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(short16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(short16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(short x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(short x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(short x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(short x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(short2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(short2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(short2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(short2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(short3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(short3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(short3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(short3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(short4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(short4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(short4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(short4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(short8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(short8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(short8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(short8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(short16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(short16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(short16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(short16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(short x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(short x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(short x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(short x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(short2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(short2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(short2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(short2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(short3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(short3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(short3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(short3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(short4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(short4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(short4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(short4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(short8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(short8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(short8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(short8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(short16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(short16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(short16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(short16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(short x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(short x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(short x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(short x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(short2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(short2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(short2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(short2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(short3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(short3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(short3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(short3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(short4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(short4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(short4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(short4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(short8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(short8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(short8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(short8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(short16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(short16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(short16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(short16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(short x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(short x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(short x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(short x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(short2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(short2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(short2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(short2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(short3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(short3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(short3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(short3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(short4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(short4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(short4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(short4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(short8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(short8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(short8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(short8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(short16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(short16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(short16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(short16 x) -{ - return convert_uint16_sat(x); -} - -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(short x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(short x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(short x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(short x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(short2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(short2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(short2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(short2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(short3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(short3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(short3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(short3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(short4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(short4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(short4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(short4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(short8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(short8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(short8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(short8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(short16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(short16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(short16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(short16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(short x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(short x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(short x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(short x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(short2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(short2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(short2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(short2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(short3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(short3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(short3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(short3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(short4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(short4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(short4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(short4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(short8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(short8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(short8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(short8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(short16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(short16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(short16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(short16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(ushort x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(ushort x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(ushort x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(ushort x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(ushort2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(ushort2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(ushort2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(ushort2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(ushort3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(ushort3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(ushort3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(ushort3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(ushort4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(ushort4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(ushort4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(ushort4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(ushort8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(ushort8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(ushort8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(ushort8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(ushort16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(ushort16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(ushort16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(ushort16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(ushort x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(ushort x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(ushort x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(ushort x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(ushort2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(ushort2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(ushort2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(ushort2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(ushort3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(ushort3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(ushort3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(ushort3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(ushort4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(ushort4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(ushort4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(ushort4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(ushort8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(ushort8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(ushort8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(ushort8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(ushort16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(ushort16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(ushort16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(ushort16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(ushort x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(ushort x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(ushort x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(ushort x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(ushort2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(ushort2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(ushort2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(ushort2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(ushort3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(ushort3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(ushort3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(ushort3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(ushort4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(ushort4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(ushort4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(ushort4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(ushort8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(ushort8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(ushort8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(ushort8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(ushort16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(ushort16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(ushort16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(ushort16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(ushort x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(ushort x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(ushort x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(ushort x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(ushort2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(ushort2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(ushort2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(ushort2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(ushort3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(ushort3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(ushort3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(ushort3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(ushort4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(ushort4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(ushort4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(ushort4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(ushort8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(ushort8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(ushort8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(ushort8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(ushort16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(ushort16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(ushort16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(ushort16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(ushort x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(ushort x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(ushort x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(ushort x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(ushort2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(ushort2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(ushort2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(ushort2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(ushort3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(ushort3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(ushort3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(ushort3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(ushort4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(ushort4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(ushort4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(ushort4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(ushort8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(ushort8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(ushort8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(ushort8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(ushort16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(ushort16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(ushort16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(ushort16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(ushort x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(ushort x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(ushort x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(ushort x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(ushort2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(ushort2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(ushort2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(ushort2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(ushort3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(ushort3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(ushort3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(ushort3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(ushort4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(ushort4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(ushort4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(ushort4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(ushort8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(ushort8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(ushort8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(ushort8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(ushort16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(ushort16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(ushort16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(ushort16 x) -{ - return convert_uint16_sat(x); -} - -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(ushort x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(ushort x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(ushort x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(ushort x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(ushort2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(ushort2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(ushort2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(ushort2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(ushort3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(ushort3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(ushort3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(ushort3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(ushort4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(ushort4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(ushort4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(ushort4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(ushort8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(ushort8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(ushort8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(ushort8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(ushort16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(ushort16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(ushort16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(ushort16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(ushort x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(ushort x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(ushort x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(ushort x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(ushort2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(ushort2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(ushort2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(ushort2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(ushort3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(ushort3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(ushort3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(ushort3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(ushort4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(ushort4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(ushort4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(ushort4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(ushort8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(ushort8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(ushort8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(ushort8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(ushort16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(ushort16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(ushort16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(ushort16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(int x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(int x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(int x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(int x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(int2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(int2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(int2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(int2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(int3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(int3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(int3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(int3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(int4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(int4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(int4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(int4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(int8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(int8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(int8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(int8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(int16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(int16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(int16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(int16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(int x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(int x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(int x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(int x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(int2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(int2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(int2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(int2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(int3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(int3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(int3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(int3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(int4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(int4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(int4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(int4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(int8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(int8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(int8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(int8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(int16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(int16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(int16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(int16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(int x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(int x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(int x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(int x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(int2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(int2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(int2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(int2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(int3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(int3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(int3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(int3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(int4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(int4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(int4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(int4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(int8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(int8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(int8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(int8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(int16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(int16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(int16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(int16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(int x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(int x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(int x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(int x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(int2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(int2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(int2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(int2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(int3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(int3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(int3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(int3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(int4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(int4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(int4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(int4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(int8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(int8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(int8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(int8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(int16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(int16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(int16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(int16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(int x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(int x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(int x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(int x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(int2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(int2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(int2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(int2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(int3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(int3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(int3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(int3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(int4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(int4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(int4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(int4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(int8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(int8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(int8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(int8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(int16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(int16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(int16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(int16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(int x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(int x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(int x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(int x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(int2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(int2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(int2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(int2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(int3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(int3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(int3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(int3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(int4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(int4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(int4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(int4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(int8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(int8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(int8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(int8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(int16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(int16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(int16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(int16 x) -{ - return convert_uint16_sat(x); -} - -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(int x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(int x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(int x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(int x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(int2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(int2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(int2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(int2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(int3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(int3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(int3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(int3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(int4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(int4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(int4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(int4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(int8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(int8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(int8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(int8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(int16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(int16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(int16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(int16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(int x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(int x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(int x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(int x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(int2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(int2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(int2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(int2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(int3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(int3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(int3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(int3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(int4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(int4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(int4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(int4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(int8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(int8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(int8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(int8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(int16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(int16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(int16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(int16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(uint x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(uint x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(uint x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(uint x) -{ - return convert_char_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(uint2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(uint2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(uint2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(uint2 x) -{ - return convert_char2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(uint3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(uint3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(uint3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(uint3 x) -{ - return convert_char3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(uint4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(uint4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(uint4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(uint4 x) -{ - return convert_char4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(uint8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(uint8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(uint8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(uint8 x) -{ - return convert_char8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(uint16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(uint16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(uint16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(uint16 x) -{ - return convert_char16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(uint x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(uint x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(uint x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(uint x) -{ - return convert_uchar_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(uint2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(uint2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(uint2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(uint2 x) -{ - return convert_uchar2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(uint3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(uint3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(uint3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(uint3 x) -{ - return convert_uchar3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(uint4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(uint4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(uint4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(uint4 x) -{ - return convert_uchar4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(uint8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(uint8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(uint8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(uint8 x) -{ - return convert_uchar8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(uint16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(uint16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(uint16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(uint16 x) -{ - return convert_uchar16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(uint x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(uint x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(uint x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(uint x) -{ - return convert_short_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(uint2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(uint2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(uint2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(uint2 x) -{ - return convert_short2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(uint3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(uint3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(uint3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(uint3 x) -{ - return convert_short3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(uint4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(uint4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(uint4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(uint4 x) -{ - return convert_short4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(uint8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(uint8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(uint8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(uint8 x) -{ - return convert_short8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(uint16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(uint16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(uint16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(uint16 x) -{ - return convert_short16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(uint x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(uint x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(uint x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(uint x) -{ - return convert_ushort_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(uint2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(uint2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(uint2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(uint2 x) -{ - return convert_ushort2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(uint3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(uint3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(uint3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(uint3 x) -{ - return convert_ushort3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(uint4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(uint4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(uint4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(uint4 x) -{ - return convert_ushort4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(uint8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(uint8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(uint8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(uint8 x) -{ - return convert_ushort8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(uint16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(uint16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(uint16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(uint16 x) -{ - return convert_ushort16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(uint x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(uint x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(uint x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(uint x) -{ - return convert_int_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(uint2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(uint2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(uint2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(uint2 x) -{ - return convert_int2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(uint3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(uint3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(uint3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(uint3 x) -{ - return convert_int3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(uint4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(uint4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(uint4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(uint4 x) -{ - return convert_int4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(uint8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(uint8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(uint8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(uint8 x) -{ - return convert_int8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(uint16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(uint16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(uint16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(uint16 x) -{ - return convert_int16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(uint x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(uint x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(uint x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(uint x) -{ - return convert_uint_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(uint2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(uint2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(uint2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(uint2 x) -{ - return convert_uint2_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(uint3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(uint3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(uint3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(uint3 x) -{ - return convert_uint3_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(uint4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(uint4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(uint4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(uint4 x) -{ - return convert_uint4_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(uint8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(uint8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(uint8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(uint8 x) -{ - return convert_uint8_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(uint16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(uint16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(uint16 x) -{ - return convert_uint16_sat(x); -} - -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(uint16 x) -{ - return convert_uint16_sat(x); -} - -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(uint x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(uint x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(uint x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(uint x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(uint2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(uint2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(uint2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(uint2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(uint3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(uint3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(uint3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(uint3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(uint4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(uint4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(uint4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(uint4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(uint8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(uint8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(uint8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(uint8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(uint16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(uint16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(uint16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(uint16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(uint x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(uint x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(uint x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(uint x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(uint2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(uint2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(uint2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(uint2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(uint3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(uint3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(uint3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(uint3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(uint4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(uint4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(uint4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(uint4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(uint8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(uint8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(uint8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(uint8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(uint16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(uint16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(uint16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(uint16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(long x) -{ - return convert_char_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(long x) -{ - return convert_char_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(long x) -{ - return convert_char_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(long x) -{ - return convert_char_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(long2 x) -{ - return convert_char2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(long2 x) -{ - return convert_char2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(long2 x) -{ - return convert_char2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(long2 x) -{ - return convert_char2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(long3 x) -{ - return convert_char3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(long3 x) -{ - return convert_char3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(long3 x) -{ - return convert_char3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(long3 x) -{ - return convert_char3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(long4 x) -{ - return convert_char4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(long4 x) -{ - return convert_char4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(long4 x) -{ - return convert_char4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(long4 x) -{ - return convert_char4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(long8 x) -{ - return convert_char8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(long8 x) -{ - return convert_char8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(long8 x) -{ - return convert_char8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(long8 x) -{ - return convert_char8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(long16 x) -{ - return convert_char16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(long16 x) -{ - return convert_char16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(long16 x) -{ - return convert_char16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(long16 x) -{ - return convert_char16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(long x) -{ - return convert_uchar_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(long x) -{ - return convert_uchar_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(long x) -{ - return convert_uchar_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(long x) -{ - return convert_uchar_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(long2 x) -{ - return convert_uchar2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(long2 x) -{ - return convert_uchar2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(long2 x) -{ - return convert_uchar2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(long2 x) -{ - return convert_uchar2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(long3 x) -{ - return convert_uchar3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(long3 x) -{ - return convert_uchar3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(long3 x) -{ - return convert_uchar3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(long3 x) -{ - return convert_uchar3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(long4 x) -{ - return convert_uchar4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(long4 x) -{ - return convert_uchar4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(long4 x) -{ - return convert_uchar4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(long4 x) -{ - return convert_uchar4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(long8 x) -{ - return convert_uchar8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(long8 x) -{ - return convert_uchar8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(long8 x) -{ - return convert_uchar8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(long8 x) -{ - return convert_uchar8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(long16 x) -{ - return convert_uchar16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(long16 x) -{ - return convert_uchar16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(long16 x) -{ - return convert_uchar16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(long16 x) -{ - return convert_uchar16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(long x) -{ - return convert_short_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(long x) -{ - return convert_short_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(long x) -{ - return convert_short_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(long x) -{ - return convert_short_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(long2 x) -{ - return convert_short2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(long2 x) -{ - return convert_short2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(long2 x) -{ - return convert_short2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(long2 x) -{ - return convert_short2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(long3 x) -{ - return convert_short3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(long3 x) -{ - return convert_short3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(long3 x) -{ - return convert_short3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(long3 x) -{ - return convert_short3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(long4 x) -{ - return convert_short4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(long4 x) -{ - return convert_short4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(long4 x) -{ - return convert_short4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(long4 x) -{ - return convert_short4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(long8 x) -{ - return convert_short8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(long8 x) -{ - return convert_short8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(long8 x) -{ - return convert_short8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(long8 x) -{ - return convert_short8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(long16 x) -{ - return convert_short16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(long16 x) -{ - return convert_short16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(long16 x) -{ - return convert_short16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(long16 x) -{ - return convert_short16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(long x) -{ - return convert_ushort_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(long x) -{ - return convert_ushort_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(long x) -{ - return convert_ushort_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(long x) -{ - return convert_ushort_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(long2 x) -{ - return convert_ushort2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(long2 x) -{ - return convert_ushort2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(long2 x) -{ - return convert_ushort2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(long2 x) -{ - return convert_ushort2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(long3 x) -{ - return convert_ushort3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(long3 x) -{ - return convert_ushort3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(long3 x) -{ - return convert_ushort3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(long3 x) -{ - return convert_ushort3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(long4 x) -{ - return convert_ushort4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(long4 x) -{ - return convert_ushort4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(long4 x) -{ - return convert_ushort4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(long4 x) -{ - return convert_ushort4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(long8 x) -{ - return convert_ushort8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(long8 x) -{ - return convert_ushort8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(long8 x) -{ - return convert_ushort8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(long8 x) -{ - return convert_ushort8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(long16 x) -{ - return convert_ushort16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(long16 x) -{ - return convert_ushort16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(long16 x) -{ - return convert_ushort16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(long16 x) -{ - return convert_ushort16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(long x) -{ - return convert_int_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(long x) -{ - return convert_int_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(long x) -{ - return convert_int_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(long x) -{ - return convert_int_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(long2 x) -{ - return convert_int2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(long2 x) -{ - return convert_int2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(long2 x) -{ - return convert_int2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(long2 x) -{ - return convert_int2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(long3 x) -{ - return convert_int3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(long3 x) -{ - return convert_int3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(long3 x) -{ - return convert_int3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(long3 x) -{ - return convert_int3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(long4 x) -{ - return convert_int4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(long4 x) -{ - return convert_int4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(long4 x) -{ - return convert_int4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(long4 x) -{ - return convert_int4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(long8 x) -{ - return convert_int8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(long8 x) -{ - return convert_int8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(long8 x) -{ - return convert_int8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(long8 x) -{ - return convert_int8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(long16 x) -{ - return convert_int16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(long16 x) -{ - return convert_int16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(long16 x) -{ - return convert_int16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(long16 x) -{ - return convert_int16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(long x) -{ - return convert_uint_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(long x) -{ - return convert_uint_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(long x) -{ - return convert_uint_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(long x) -{ - return convert_uint_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(long2 x) -{ - return convert_uint2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(long2 x) -{ - return convert_uint2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(long2 x) -{ - return convert_uint2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(long2 x) -{ - return convert_uint2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(long3 x) -{ - return convert_uint3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(long3 x) -{ - return convert_uint3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(long3 x) -{ - return convert_uint3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(long3 x) -{ - return convert_uint3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(long4 x) -{ - return convert_uint4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(long4 x) -{ - return convert_uint4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(long4 x) -{ - return convert_uint4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(long4 x) -{ - return convert_uint4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(long8 x) -{ - return convert_uint8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(long8 x) -{ - return convert_uint8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(long8 x) -{ - return convert_uint8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(long8 x) -{ - return convert_uint8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(long16 x) -{ - return convert_uint16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(long16 x) -{ - return convert_uint16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(long16 x) -{ - return convert_uint16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(long16 x) -{ - return convert_uint16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(long x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(long x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(long x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(long x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(long2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(long2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(long2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(long2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(long3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(long3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(long3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(long3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(long4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(long4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(long4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(long4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(long8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(long8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(long8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(long8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(long16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(long16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(long16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(long16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(long x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(long x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(long x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(long x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(long2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(long2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(long2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(long2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(long3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(long3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(long3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(long3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(long4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(long4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(long4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(long4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(long8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(long8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(long8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(long8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(long16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(long16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(long16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(long16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(ulong x) -{ - return convert_char_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(ulong x) -{ - return convert_char_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(ulong x) -{ - return convert_char_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(ulong x) -{ - return convert_char_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(ulong2 x) -{ - return convert_char2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(ulong2 x) -{ - return convert_char2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(ulong2 x) -{ - return convert_char2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(ulong2 x) -{ - return convert_char2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(ulong3 x) -{ - return convert_char3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(ulong3 x) -{ - return convert_char3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(ulong3 x) -{ - return convert_char3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(ulong3 x) -{ - return convert_char3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(ulong4 x) -{ - return convert_char4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(ulong4 x) -{ - return convert_char4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(ulong4 x) -{ - return convert_char4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(ulong4 x) -{ - return convert_char4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(ulong8 x) -{ - return convert_char8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(ulong8 x) -{ - return convert_char8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(ulong8 x) -{ - return convert_char8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(ulong8 x) -{ - return convert_char8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(ulong16 x) -{ - return convert_char16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(ulong16 x) -{ - return convert_char16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(ulong16 x) -{ - return convert_char16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(ulong16 x) -{ - return convert_char16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(ulong x) -{ - return convert_uchar_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(ulong x) -{ - return convert_uchar_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(ulong x) -{ - return convert_uchar_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(ulong x) -{ - return convert_uchar_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(ulong2 x) -{ - return convert_uchar2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(ulong2 x) -{ - return convert_uchar2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(ulong2 x) -{ - return convert_uchar2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(ulong2 x) -{ - return convert_uchar2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(ulong3 x) -{ - return convert_uchar3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(ulong3 x) -{ - return convert_uchar3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(ulong3 x) -{ - return convert_uchar3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(ulong3 x) -{ - return convert_uchar3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(ulong4 x) -{ - return convert_uchar4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(ulong4 x) -{ - return convert_uchar4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(ulong4 x) -{ - return convert_uchar4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(ulong4 x) -{ - return convert_uchar4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(ulong8 x) -{ - return convert_uchar8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(ulong8 x) -{ - return convert_uchar8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(ulong8 x) -{ - return convert_uchar8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(ulong8 x) -{ - return convert_uchar8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(ulong16 x) -{ - return convert_uchar16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(ulong16 x) -{ - return convert_uchar16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(ulong16 x) -{ - return convert_uchar16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(ulong16 x) -{ - return convert_uchar16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(ulong x) -{ - return convert_short_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(ulong x) -{ - return convert_short_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(ulong x) -{ - return convert_short_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(ulong x) -{ - return convert_short_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(ulong2 x) -{ - return convert_short2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(ulong2 x) -{ - return convert_short2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(ulong2 x) -{ - return convert_short2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(ulong2 x) -{ - return convert_short2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(ulong3 x) -{ - return convert_short3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(ulong3 x) -{ - return convert_short3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(ulong3 x) -{ - return convert_short3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(ulong3 x) -{ - return convert_short3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(ulong4 x) -{ - return convert_short4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(ulong4 x) -{ - return convert_short4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(ulong4 x) -{ - return convert_short4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(ulong4 x) -{ - return convert_short4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(ulong8 x) -{ - return convert_short8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(ulong8 x) -{ - return convert_short8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(ulong8 x) -{ - return convert_short8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(ulong8 x) -{ - return convert_short8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(ulong16 x) -{ - return convert_short16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(ulong16 x) -{ - return convert_short16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(ulong16 x) -{ - return convert_short16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(ulong16 x) -{ - return convert_short16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(ulong x) -{ - return convert_ushort_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(ulong x) -{ - return convert_ushort_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(ulong x) -{ - return convert_ushort_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(ulong x) -{ - return convert_ushort_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(ulong2 x) -{ - return convert_ushort2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(ulong2 x) -{ - return convert_ushort2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(ulong2 x) -{ - return convert_ushort2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(ulong2 x) -{ - return convert_ushort2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(ulong3 x) -{ - return convert_ushort3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(ulong3 x) -{ - return convert_ushort3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(ulong3 x) -{ - return convert_ushort3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(ulong3 x) -{ - return convert_ushort3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(ulong4 x) -{ - return convert_ushort4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(ulong4 x) -{ - return convert_ushort4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(ulong4 x) -{ - return convert_ushort4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(ulong4 x) -{ - return convert_ushort4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(ulong8 x) -{ - return convert_ushort8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(ulong8 x) -{ - return convert_ushort8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(ulong8 x) -{ - return convert_ushort8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(ulong8 x) -{ - return convert_ushort8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(ulong16 x) -{ - return convert_ushort16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(ulong16 x) -{ - return convert_ushort16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(ulong16 x) -{ - return convert_ushort16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(ulong16 x) -{ - return convert_ushort16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(ulong x) -{ - return convert_int_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(ulong x) -{ - return convert_int_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(ulong x) -{ - return convert_int_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(ulong x) -{ - return convert_int_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(ulong2 x) -{ - return convert_int2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(ulong2 x) -{ - return convert_int2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(ulong2 x) -{ - return convert_int2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(ulong2 x) -{ - return convert_int2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(ulong3 x) -{ - return convert_int3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(ulong3 x) -{ - return convert_int3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(ulong3 x) -{ - return convert_int3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(ulong3 x) -{ - return convert_int3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(ulong4 x) -{ - return convert_int4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(ulong4 x) -{ - return convert_int4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(ulong4 x) -{ - return convert_int4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(ulong4 x) -{ - return convert_int4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(ulong8 x) -{ - return convert_int8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(ulong8 x) -{ - return convert_int8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(ulong8 x) -{ - return convert_int8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(ulong8 x) -{ - return convert_int8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(ulong16 x) -{ - return convert_int16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(ulong16 x) -{ - return convert_int16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(ulong16 x) -{ - return convert_int16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(ulong16 x) -{ - return convert_int16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(ulong x) -{ - return convert_uint_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(ulong x) -{ - return convert_uint_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(ulong x) -{ - return convert_uint_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(ulong x) -{ - return convert_uint_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(ulong2 x) -{ - return convert_uint2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(ulong2 x) -{ - return convert_uint2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(ulong2 x) -{ - return convert_uint2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(ulong2 x) -{ - return convert_uint2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(ulong3 x) -{ - return convert_uint3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(ulong3 x) -{ - return convert_uint3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(ulong3 x) -{ - return convert_uint3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(ulong3 x) -{ - return convert_uint3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(ulong4 x) -{ - return convert_uint4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(ulong4 x) -{ - return convert_uint4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(ulong4 x) -{ - return convert_uint4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(ulong4 x) -{ - return convert_uint4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(ulong8 x) -{ - return convert_uint8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(ulong8 x) -{ - return convert_uint8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(ulong8 x) -{ - return convert_uint8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(ulong8 x) -{ - return convert_uint8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(ulong16 x) -{ - return convert_uint16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(ulong16 x) -{ - return convert_uint16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(ulong16 x) -{ - return convert_uint16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(ulong16 x) -{ - return convert_uint16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(ulong x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(ulong x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(ulong x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(ulong x) -{ - return convert_long_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(ulong2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(ulong2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(ulong2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(ulong2 x) -{ - return convert_long2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(ulong3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(ulong3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(ulong3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(ulong3 x) -{ - return convert_long3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(ulong4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(ulong4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(ulong4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(ulong4 x) -{ - return convert_long4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(ulong8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(ulong8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(ulong8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(ulong8 x) -{ - return convert_long8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(ulong16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(ulong16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(ulong16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(ulong16 x) -{ - return convert_long16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(ulong x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(ulong x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(ulong x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(ulong x) -{ - return convert_ulong_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(ulong2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(ulong2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(ulong2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(ulong2 x) -{ - return convert_ulong2_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(ulong3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(ulong3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(ulong3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(ulong3 x) -{ - return convert_ulong3_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(ulong4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(ulong4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(ulong4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(ulong4 x) -{ - return convert_ulong4_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(ulong8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(ulong8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(ulong8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(ulong8 x) -{ - return convert_ulong8_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(ulong16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(ulong16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(ulong16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(ulong16 x) -{ - return convert_ulong16_sat(x); -} - -#endif -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(float x) -{ - return convert_char(x); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(float x) -{ - return convert_char_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(float x) -{ - x = rint(x); - return convert_char(x); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(float x) -{ - x = rint(x); - return convert_char_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(float x) -{ - x = ceil(x); - return convert_char(x); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(float x) -{ - x = ceil(x); - return convert_char_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(float x) -{ - x = floor(x); - return convert_char(x); -} -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(float x) -{ - x = floor(x); - return convert_char_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(float2 x) -{ - return convert_char2(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(float2 x) -{ - return convert_char2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(float2 x) -{ - x = rint(x); - return convert_char2(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(float2 x) -{ - x = rint(x); - return convert_char2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(float2 x) -{ - x = ceil(x); - return convert_char2(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(float2 x) -{ - x = ceil(x); - return convert_char2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(float2 x) -{ - x = floor(x); - return convert_char2(x); -} -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(float2 x) -{ - x = floor(x); - return convert_char2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(float3 x) -{ - return convert_char3(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(float3 x) -{ - return convert_char3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(float3 x) -{ - x = rint(x); - return convert_char3(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(float3 x) -{ - x = rint(x); - return convert_char3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(float3 x) -{ - x = ceil(x); - return convert_char3(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(float3 x) -{ - x = ceil(x); - return convert_char3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(float3 x) -{ - x = floor(x); - return convert_char3(x); -} -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(float3 x) -{ - x = floor(x); - return convert_char3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(float4 x) -{ - return convert_char4(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(float4 x) -{ - return convert_char4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(float4 x) -{ - x = rint(x); - return convert_char4(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(float4 x) -{ - x = rint(x); - return convert_char4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(float4 x) -{ - x = ceil(x); - return convert_char4(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(float4 x) -{ - x = ceil(x); - return convert_char4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(float4 x) -{ - x = floor(x); - return convert_char4(x); -} -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(float4 x) -{ - x = floor(x); - return convert_char4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(float8 x) -{ - return convert_char8(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(float8 x) -{ - return convert_char8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(float8 x) -{ - x = rint(x); - return convert_char8(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(float8 x) -{ - x = rint(x); - return convert_char8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(float8 x) -{ - x = ceil(x); - return convert_char8(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(float8 x) -{ - x = ceil(x); - return convert_char8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(float8 x) -{ - x = floor(x); - return convert_char8(x); -} -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(float8 x) -{ - x = floor(x); - return convert_char8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(float16 x) -{ - return convert_char16(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(float16 x) -{ - return convert_char16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(float16 x) -{ - x = rint(x); - return convert_char16(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(float16 x) -{ - x = rint(x); - return convert_char16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(float16 x) -{ - x = ceil(x); - return convert_char16(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(float16 x) -{ - x = ceil(x); - return convert_char16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(float16 x) -{ - x = floor(x); - return convert_char16(x); -} -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(float16 x) -{ - x = floor(x); - return convert_char16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(float x) -{ - return convert_uchar(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(float x) -{ - return convert_uchar_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(float x) -{ - x = rint(x); - return convert_uchar(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(float x) -{ - x = rint(x); - return convert_uchar_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(float x) -{ - x = ceil(x); - return convert_uchar(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(float x) -{ - x = ceil(x); - return convert_uchar_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(float x) -{ - x = floor(x); - return convert_uchar(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(float x) -{ - x = floor(x); - return convert_uchar_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(float2 x) -{ - return convert_uchar2(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(float2 x) -{ - return convert_uchar2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(float2 x) -{ - x = rint(x); - return convert_uchar2(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(float2 x) -{ - x = rint(x); - return convert_uchar2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(float2 x) -{ - x = ceil(x); - return convert_uchar2(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(float2 x) -{ - x = ceil(x); - return convert_uchar2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(float2 x) -{ - x = floor(x); - return convert_uchar2(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(float2 x) -{ - x = floor(x); - return convert_uchar2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(float3 x) -{ - return convert_uchar3(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(float3 x) -{ - return convert_uchar3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(float3 x) -{ - x = rint(x); - return convert_uchar3(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(float3 x) -{ - x = rint(x); - return convert_uchar3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(float3 x) -{ - x = ceil(x); - return convert_uchar3(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(float3 x) -{ - x = ceil(x); - return convert_uchar3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(float3 x) -{ - x = floor(x); - return convert_uchar3(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(float3 x) -{ - x = floor(x); - return convert_uchar3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(float4 x) -{ - return convert_uchar4(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(float4 x) -{ - return convert_uchar4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(float4 x) -{ - x = rint(x); - return convert_uchar4(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(float4 x) -{ - x = rint(x); - return convert_uchar4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(float4 x) -{ - x = ceil(x); - return convert_uchar4(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(float4 x) -{ - x = ceil(x); - return convert_uchar4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(float4 x) -{ - x = floor(x); - return convert_uchar4(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(float4 x) -{ - x = floor(x); - return convert_uchar4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(float8 x) -{ - return convert_uchar8(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(float8 x) -{ - return convert_uchar8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(float8 x) -{ - x = rint(x); - return convert_uchar8(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(float8 x) -{ - x = rint(x); - return convert_uchar8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(float8 x) -{ - x = ceil(x); - return convert_uchar8(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(float8 x) -{ - x = ceil(x); - return convert_uchar8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(float8 x) -{ - x = floor(x); - return convert_uchar8(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(float8 x) -{ - x = floor(x); - return convert_uchar8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(float16 x) -{ - return convert_uchar16(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(float16 x) -{ - return convert_uchar16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(float16 x) -{ - x = rint(x); - return convert_uchar16(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(float16 x) -{ - x = rint(x); - return convert_uchar16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(float16 x) -{ - x = ceil(x); - return convert_uchar16(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(float16 x) -{ - x = ceil(x); - return convert_uchar16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(float16 x) -{ - x = floor(x); - return convert_uchar16(x); -} -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(float16 x) -{ - x = floor(x); - return convert_uchar16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(float x) -{ - return convert_short(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(float x) -{ - return convert_short_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(float x) -{ - x = rint(x); - return convert_short(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(float x) -{ - x = rint(x); - return convert_short_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(float x) -{ - x = ceil(x); - return convert_short(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(float x) -{ - x = ceil(x); - return convert_short_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(float x) -{ - x = floor(x); - return convert_short(x); -} -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(float x) -{ - x = floor(x); - return convert_short_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(float2 x) -{ - return convert_short2(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(float2 x) -{ - return convert_short2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(float2 x) -{ - x = rint(x); - return convert_short2(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(float2 x) -{ - x = rint(x); - return convert_short2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(float2 x) -{ - x = ceil(x); - return convert_short2(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(float2 x) -{ - x = ceil(x); - return convert_short2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(float2 x) -{ - x = floor(x); - return convert_short2(x); -} -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(float2 x) -{ - x = floor(x); - return convert_short2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(float3 x) -{ - return convert_short3(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(float3 x) -{ - return convert_short3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(float3 x) -{ - x = rint(x); - return convert_short3(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(float3 x) -{ - x = rint(x); - return convert_short3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(float3 x) -{ - x = ceil(x); - return convert_short3(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(float3 x) -{ - x = ceil(x); - return convert_short3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(float3 x) -{ - x = floor(x); - return convert_short3(x); -} -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(float3 x) -{ - x = floor(x); - return convert_short3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(float4 x) -{ - return convert_short4(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(float4 x) -{ - return convert_short4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(float4 x) -{ - x = rint(x); - return convert_short4(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(float4 x) -{ - x = rint(x); - return convert_short4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(float4 x) -{ - x = ceil(x); - return convert_short4(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(float4 x) -{ - x = ceil(x); - return convert_short4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(float4 x) -{ - x = floor(x); - return convert_short4(x); -} -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(float4 x) -{ - x = floor(x); - return convert_short4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(float8 x) -{ - return convert_short8(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(float8 x) -{ - return convert_short8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(float8 x) -{ - x = rint(x); - return convert_short8(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(float8 x) -{ - x = rint(x); - return convert_short8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(float8 x) -{ - x = ceil(x); - return convert_short8(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(float8 x) -{ - x = ceil(x); - return convert_short8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(float8 x) -{ - x = floor(x); - return convert_short8(x); -} -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(float8 x) -{ - x = floor(x); - return convert_short8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(float16 x) -{ - return convert_short16(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(float16 x) -{ - return convert_short16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(float16 x) -{ - x = rint(x); - return convert_short16(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(float16 x) -{ - x = rint(x); - return convert_short16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(float16 x) -{ - x = ceil(x); - return convert_short16(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(float16 x) -{ - x = ceil(x); - return convert_short16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(float16 x) -{ - x = floor(x); - return convert_short16(x); -} -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(float16 x) -{ - x = floor(x); - return convert_short16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(float x) -{ - return convert_ushort(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(float x) -{ - return convert_ushort_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(float x) -{ - x = rint(x); - return convert_ushort(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(float x) -{ - x = rint(x); - return convert_ushort_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(float x) -{ - x = ceil(x); - return convert_ushort(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(float x) -{ - x = ceil(x); - return convert_ushort_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(float x) -{ - x = floor(x); - return convert_ushort(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(float x) -{ - x = floor(x); - return convert_ushort_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(float2 x) -{ - return convert_ushort2(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(float2 x) -{ - return convert_ushort2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(float2 x) -{ - x = rint(x); - return convert_ushort2(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(float2 x) -{ - x = rint(x); - return convert_ushort2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(float2 x) -{ - x = ceil(x); - return convert_ushort2(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(float2 x) -{ - x = ceil(x); - return convert_ushort2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(float2 x) -{ - x = floor(x); - return convert_ushort2(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(float2 x) -{ - x = floor(x); - return convert_ushort2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(float3 x) -{ - return convert_ushort3(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(float3 x) -{ - return convert_ushort3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(float3 x) -{ - x = rint(x); - return convert_ushort3(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(float3 x) -{ - x = rint(x); - return convert_ushort3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(float3 x) -{ - x = ceil(x); - return convert_ushort3(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(float3 x) -{ - x = ceil(x); - return convert_ushort3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(float3 x) -{ - x = floor(x); - return convert_ushort3(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(float3 x) -{ - x = floor(x); - return convert_ushort3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(float4 x) -{ - return convert_ushort4(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(float4 x) -{ - return convert_ushort4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(float4 x) -{ - x = rint(x); - return convert_ushort4(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(float4 x) -{ - x = rint(x); - return convert_ushort4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(float4 x) -{ - x = ceil(x); - return convert_ushort4(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(float4 x) -{ - x = ceil(x); - return convert_ushort4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(float4 x) -{ - x = floor(x); - return convert_ushort4(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(float4 x) -{ - x = floor(x); - return convert_ushort4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(float8 x) -{ - return convert_ushort8(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(float8 x) -{ - return convert_ushort8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(float8 x) -{ - x = rint(x); - return convert_ushort8(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(float8 x) -{ - x = rint(x); - return convert_ushort8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(float8 x) -{ - x = ceil(x); - return convert_ushort8(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(float8 x) -{ - x = ceil(x); - return convert_ushort8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(float8 x) -{ - x = floor(x); - return convert_ushort8(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(float8 x) -{ - x = floor(x); - return convert_ushort8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(float16 x) -{ - return convert_ushort16(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(float16 x) -{ - return convert_ushort16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(float16 x) -{ - x = rint(x); - return convert_ushort16(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(float16 x) -{ - x = rint(x); - return convert_ushort16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(float16 x) -{ - x = ceil(x); - return convert_ushort16(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(float16 x) -{ - x = ceil(x); - return convert_ushort16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(float16 x) -{ - x = floor(x); - return convert_ushort16(x); -} -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(float16 x) -{ - x = floor(x); - return convert_ushort16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(float x) -{ - return convert_int(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(float x) -{ - return convert_int_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(float x) -{ - x = rint(x); - return convert_int(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(float x) -{ - x = rint(x); - return convert_int_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(float x) -{ - x = ceil(x); - return convert_int(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(float x) -{ - x = ceil(x); - return convert_int_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(float x) -{ - x = floor(x); - return convert_int(x); -} -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(float x) -{ - x = floor(x); - return convert_int_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(float2 x) -{ - return convert_int2(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(float2 x) -{ - return convert_int2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(float2 x) -{ - x = rint(x); - return convert_int2(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(float2 x) -{ - x = rint(x); - return convert_int2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(float2 x) -{ - x = ceil(x); - return convert_int2(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(float2 x) -{ - x = ceil(x); - return convert_int2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(float2 x) -{ - x = floor(x); - return convert_int2(x); -} -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(float2 x) -{ - x = floor(x); - return convert_int2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(float3 x) -{ - return convert_int3(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(float3 x) -{ - return convert_int3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(float3 x) -{ - x = rint(x); - return convert_int3(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(float3 x) -{ - x = rint(x); - return convert_int3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(float3 x) -{ - x = ceil(x); - return convert_int3(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(float3 x) -{ - x = ceil(x); - return convert_int3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(float3 x) -{ - x = floor(x); - return convert_int3(x); -} -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(float3 x) -{ - x = floor(x); - return convert_int3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(float4 x) -{ - return convert_int4(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(float4 x) -{ - return convert_int4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(float4 x) -{ - x = rint(x); - return convert_int4(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(float4 x) -{ - x = rint(x); - return convert_int4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(float4 x) -{ - x = ceil(x); - return convert_int4(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(float4 x) -{ - x = ceil(x); - return convert_int4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(float4 x) -{ - x = floor(x); - return convert_int4(x); -} -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(float4 x) -{ - x = floor(x); - return convert_int4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(float8 x) -{ - return convert_int8(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(float8 x) -{ - return convert_int8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(float8 x) -{ - x = rint(x); - return convert_int8(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(float8 x) -{ - x = rint(x); - return convert_int8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(float8 x) -{ - x = ceil(x); - return convert_int8(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(float8 x) -{ - x = ceil(x); - return convert_int8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(float8 x) -{ - x = floor(x); - return convert_int8(x); -} -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(float8 x) -{ - x = floor(x); - return convert_int8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(float16 x) -{ - return convert_int16(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(float16 x) -{ - return convert_int16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(float16 x) -{ - x = rint(x); - return convert_int16(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(float16 x) -{ - x = rint(x); - return convert_int16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(float16 x) -{ - x = ceil(x); - return convert_int16(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(float16 x) -{ - x = ceil(x); - return convert_int16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(float16 x) -{ - x = floor(x); - return convert_int16(x); -} -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(float16 x) -{ - x = floor(x); - return convert_int16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(float x) -{ - return convert_uint(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(float x) -{ - return convert_uint_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(float x) -{ - x = rint(x); - return convert_uint(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(float x) -{ - x = rint(x); - return convert_uint_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(float x) -{ - x = ceil(x); - return convert_uint(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(float x) -{ - x = ceil(x); - return convert_uint_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(float x) -{ - x = floor(x); - return convert_uint(x); -} -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(float x) -{ - x = floor(x); - return convert_uint_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(float2 x) -{ - return convert_uint2(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(float2 x) -{ - return convert_uint2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(float2 x) -{ - x = rint(x); - return convert_uint2(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(float2 x) -{ - x = rint(x); - return convert_uint2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(float2 x) -{ - x = ceil(x); - return convert_uint2(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(float2 x) -{ - x = ceil(x); - return convert_uint2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(float2 x) -{ - x = floor(x); - return convert_uint2(x); -} -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(float2 x) -{ - x = floor(x); - return convert_uint2_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(float3 x) -{ - return convert_uint3(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(float3 x) -{ - return convert_uint3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(float3 x) -{ - x = rint(x); - return convert_uint3(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(float3 x) -{ - x = rint(x); - return convert_uint3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(float3 x) -{ - x = ceil(x); - return convert_uint3(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(float3 x) -{ - x = ceil(x); - return convert_uint3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(float3 x) -{ - x = floor(x); - return convert_uint3(x); -} -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(float3 x) -{ - x = floor(x); - return convert_uint3_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(float4 x) -{ - return convert_uint4(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(float4 x) -{ - return convert_uint4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(float4 x) -{ - x = rint(x); - return convert_uint4(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(float4 x) -{ - x = rint(x); - return convert_uint4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(float4 x) -{ - x = ceil(x); - return convert_uint4(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(float4 x) -{ - x = ceil(x); - return convert_uint4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(float4 x) -{ - x = floor(x); - return convert_uint4(x); -} -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(float4 x) -{ - x = floor(x); - return convert_uint4_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(float8 x) -{ - return convert_uint8(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(float8 x) -{ - return convert_uint8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(float8 x) -{ - x = rint(x); - return convert_uint8(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(float8 x) -{ - x = rint(x); - return convert_uint8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(float8 x) -{ - x = ceil(x); - return convert_uint8(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(float8 x) -{ - x = ceil(x); - return convert_uint8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(float8 x) -{ - x = floor(x); - return convert_uint8(x); -} -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(float8 x) -{ - x = floor(x); - return convert_uint8_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(float16 x) -{ - return convert_uint16(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(float16 x) -{ - return convert_uint16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(float16 x) -{ - x = rint(x); - return convert_uint16(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(float16 x) -{ - x = rint(x); - return convert_uint16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(float16 x) -{ - x = ceil(x); - return convert_uint16(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(float16 x) -{ - x = ceil(x); - return convert_uint16_sat(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(float16 x) -{ - x = floor(x); - return convert_uint16(x); -} -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(float16 x) -{ - x = floor(x); - return convert_uint16_sat(x); -} -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(float x) -{ - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(float x) -{ - return convert_long_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(float x) -{ - x = rint(x); - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(float x) -{ - x = rint(x); - return convert_long_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(float x) -{ - x = ceil(x); - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(float x) -{ - x = ceil(x); - return convert_long_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(float x) -{ - x = floor(x); - return convert_long(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(float x) -{ - x = floor(x); - return convert_long_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(float2 x) -{ - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(float2 x) -{ - return convert_long2_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(float2 x) -{ - x = rint(x); - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(float2 x) -{ - x = rint(x); - return convert_long2_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(float2 x) -{ - x = ceil(x); - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(float2 x) -{ - x = ceil(x); - return convert_long2_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(float2 x) -{ - x = floor(x); - return convert_long2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(float2 x) -{ - x = floor(x); - return convert_long2_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(float3 x) -{ - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(float3 x) -{ - return convert_long3_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(float3 x) -{ - x = rint(x); - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(float3 x) -{ - x = rint(x); - return convert_long3_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(float3 x) -{ - x = ceil(x); - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(float3 x) -{ - x = ceil(x); - return convert_long3_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(float3 x) -{ - x = floor(x); - return convert_long3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(float3 x) -{ - x = floor(x); - return convert_long3_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(float4 x) -{ - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(float4 x) -{ - return convert_long4_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(float4 x) -{ - x = rint(x); - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(float4 x) -{ - x = rint(x); - return convert_long4_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(float4 x) -{ - x = ceil(x); - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(float4 x) -{ - x = ceil(x); - return convert_long4_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(float4 x) -{ - x = floor(x); - return convert_long4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(float4 x) -{ - x = floor(x); - return convert_long4_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(float8 x) -{ - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(float8 x) -{ - return convert_long8_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(float8 x) -{ - x = rint(x); - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(float8 x) -{ - x = rint(x); - return convert_long8_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(float8 x) -{ - x = ceil(x); - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(float8 x) -{ - x = ceil(x); - return convert_long8_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(float8 x) -{ - x = floor(x); - return convert_long8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(float8 x) -{ - x = floor(x); - return convert_long8_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(float16 x) -{ - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(float16 x) -{ - return convert_long16_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(float16 x) -{ - x = rint(x); - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(float16 x) -{ - x = rint(x); - return convert_long16_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(float16 x) -{ - x = ceil(x); - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(float16 x) -{ - x = ceil(x); - return convert_long16_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(float16 x) -{ - x = floor(x); - return convert_long16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(float16 x) -{ - x = floor(x); - return convert_long16_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(float x) -{ - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(float x) -{ - return convert_ulong_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(float x) -{ - x = rint(x); - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(float x) -{ - x = rint(x); - return convert_ulong_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(float x) -{ - x = ceil(x); - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(float x) -{ - x = ceil(x); - return convert_ulong_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(float x) -{ - x = floor(x); - return convert_ulong(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(float x) -{ - x = floor(x); - return convert_ulong_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(float2 x) -{ - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(float2 x) -{ - return convert_ulong2_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(float2 x) -{ - x = rint(x); - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(float2 x) -{ - x = rint(x); - return convert_ulong2_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(float2 x) -{ - x = ceil(x); - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(float2 x) -{ - x = ceil(x); - return convert_ulong2_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(float2 x) -{ - x = floor(x); - return convert_ulong2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(float2 x) -{ - x = floor(x); - return convert_ulong2_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(float3 x) -{ - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(float3 x) -{ - return convert_ulong3_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(float3 x) -{ - x = rint(x); - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(float3 x) -{ - x = rint(x); - return convert_ulong3_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(float3 x) -{ - x = ceil(x); - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(float3 x) -{ - x = ceil(x); - return convert_ulong3_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(float3 x) -{ - x = floor(x); - return convert_ulong3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(float3 x) -{ - x = floor(x); - return convert_ulong3_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(float4 x) -{ - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(float4 x) -{ - return convert_ulong4_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(float4 x) -{ - x = rint(x); - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(float4 x) -{ - x = rint(x); - return convert_ulong4_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(float4 x) -{ - x = ceil(x); - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(float4 x) -{ - x = ceil(x); - return convert_ulong4_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(float4 x) -{ - x = floor(x); - return convert_ulong4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(float4 x) -{ - x = floor(x); - return convert_ulong4_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(float8 x) -{ - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(float8 x) -{ - return convert_ulong8_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(float8 x) -{ - x = rint(x); - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(float8 x) -{ - x = rint(x); - return convert_ulong8_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(float8 x) -{ - x = ceil(x); - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(float8 x) -{ - x = ceil(x); - return convert_ulong8_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(float8 x) -{ - x = floor(x); - return convert_ulong8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(float8 x) -{ - x = floor(x); - return convert_ulong8_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(float16 x) -{ - return convert_ulong16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(float16 x) -{ - return convert_ulong16_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(float16 x) -{ - x = rint(x); - return convert_ulong16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(float16 x) -{ - x = rint(x); - return convert_ulong16_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(float16 x) -{ - x = ceil(x); - return convert_ulong16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(float16 x) -{ - x = ceil(x); - return convert_ulong16_sat(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(float16 x) -{ - x = floor(x); - return convert_ulong16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(float16 x) -{ - x = floor(x); - return convert_ulong16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtz(double x) -{ - return convert_char(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtz(double x) -{ - return convert_char_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rte(double x) -{ - x = rint(x); - return convert_char(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rte(double x) -{ - x = rint(x); - return convert_char_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtp(double x) -{ - x = ceil(x); - return convert_char(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtp(double x) -{ - x = ceil(x); - return convert_char_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_rtn(double x) -{ - x = floor(x); - return convert_char(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char convert_char_sat_rtn(double x) -{ - x = floor(x); - return convert_char_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtz(double2 x) -{ - return convert_char2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtz(double2 x) -{ - return convert_char2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rte(double2 x) -{ - x = rint(x); - return convert_char2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rte(double2 x) -{ - x = rint(x); - return convert_char2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtp(double2 x) -{ - x = ceil(x); - return convert_char2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtp(double2 x) -{ - x = ceil(x); - return convert_char2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_rtn(double2 x) -{ - x = floor(x); - return convert_char2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char2 convert_char2_sat_rtn(double2 x) -{ - x = floor(x); - return convert_char2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtz(double3 x) -{ - return convert_char3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtz(double3 x) -{ - return convert_char3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rte(double3 x) -{ - x = rint(x); - return convert_char3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rte(double3 x) -{ - x = rint(x); - return convert_char3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtp(double3 x) -{ - x = ceil(x); - return convert_char3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtp(double3 x) -{ - x = ceil(x); - return convert_char3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_rtn(double3 x) -{ - x = floor(x); - return convert_char3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char3 convert_char3_sat_rtn(double3 x) -{ - x = floor(x); - return convert_char3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtz(double4 x) -{ - return convert_char4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtz(double4 x) -{ - return convert_char4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rte(double4 x) -{ - x = rint(x); - return convert_char4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rte(double4 x) -{ - x = rint(x); - return convert_char4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtp(double4 x) -{ - x = ceil(x); - return convert_char4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtp(double4 x) -{ - x = ceil(x); - return convert_char4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_rtn(double4 x) -{ - x = floor(x); - return convert_char4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char4 convert_char4_sat_rtn(double4 x) -{ - x = floor(x); - return convert_char4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtz(double8 x) -{ - return convert_char8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtz(double8 x) -{ - return convert_char8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rte(double8 x) -{ - x = rint(x); - return convert_char8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rte(double8 x) -{ - x = rint(x); - return convert_char8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtp(double8 x) -{ - x = ceil(x); - return convert_char8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtp(double8 x) -{ - x = ceil(x); - return convert_char8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_rtn(double8 x) -{ - x = floor(x); - return convert_char8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char8 convert_char8_sat_rtn(double8 x) -{ - x = floor(x); - return convert_char8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtz(double16 x) -{ - return convert_char16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtz(double16 x) -{ - return convert_char16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rte(double16 x) -{ - x = rint(x); - return convert_char16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rte(double16 x) -{ - x = rint(x); - return convert_char16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtp(double16 x) -{ - x = ceil(x); - return convert_char16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtp(double16 x) -{ - x = ceil(x); - return convert_char16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_rtn(double16 x) -{ - x = floor(x); - return convert_char16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -char16 convert_char16_sat_rtn(double16 x) -{ - x = floor(x); - return convert_char16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtz(double x) -{ - return convert_uchar(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtz(double x) -{ - return convert_uchar_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rte(double x) -{ - x = rint(x); - return convert_uchar(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rte(double x) -{ - x = rint(x); - return convert_uchar_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtp(double x) -{ - x = ceil(x); - return convert_uchar(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtp(double x) -{ - x = ceil(x); - return convert_uchar_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_rtn(double x) -{ - x = floor(x); - return convert_uchar(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar convert_uchar_sat_rtn(double x) -{ - x = floor(x); - return convert_uchar_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtz(double2 x) -{ - return convert_uchar2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtz(double2 x) -{ - return convert_uchar2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rte(double2 x) -{ - x = rint(x); - return convert_uchar2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rte(double2 x) -{ - x = rint(x); - return convert_uchar2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtp(double2 x) -{ - x = ceil(x); - return convert_uchar2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtp(double2 x) -{ - x = ceil(x); - return convert_uchar2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_rtn(double2 x) -{ - x = floor(x); - return convert_uchar2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar2 convert_uchar2_sat_rtn(double2 x) -{ - x = floor(x); - return convert_uchar2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtz(double3 x) -{ - return convert_uchar3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtz(double3 x) -{ - return convert_uchar3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rte(double3 x) -{ - x = rint(x); - return convert_uchar3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rte(double3 x) -{ - x = rint(x); - return convert_uchar3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtp(double3 x) -{ - x = ceil(x); - return convert_uchar3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtp(double3 x) -{ - x = ceil(x); - return convert_uchar3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_rtn(double3 x) -{ - x = floor(x); - return convert_uchar3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar3 convert_uchar3_sat_rtn(double3 x) -{ - x = floor(x); - return convert_uchar3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtz(double4 x) -{ - return convert_uchar4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtz(double4 x) -{ - return convert_uchar4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rte(double4 x) -{ - x = rint(x); - return convert_uchar4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rte(double4 x) -{ - x = rint(x); - return convert_uchar4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtp(double4 x) -{ - x = ceil(x); - return convert_uchar4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtp(double4 x) -{ - x = ceil(x); - return convert_uchar4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_rtn(double4 x) -{ - x = floor(x); - return convert_uchar4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar4 convert_uchar4_sat_rtn(double4 x) -{ - x = floor(x); - return convert_uchar4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtz(double8 x) -{ - return convert_uchar8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtz(double8 x) -{ - return convert_uchar8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rte(double8 x) -{ - x = rint(x); - return convert_uchar8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rte(double8 x) -{ - x = rint(x); - return convert_uchar8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtp(double8 x) -{ - x = ceil(x); - return convert_uchar8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtp(double8 x) -{ - x = ceil(x); - return convert_uchar8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_rtn(double8 x) -{ - x = floor(x); - return convert_uchar8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar8 convert_uchar8_sat_rtn(double8 x) -{ - x = floor(x); - return convert_uchar8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtz(double16 x) -{ - return convert_uchar16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtz(double16 x) -{ - return convert_uchar16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rte(double16 x) -{ - x = rint(x); - return convert_uchar16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rte(double16 x) -{ - x = rint(x); - return convert_uchar16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtp(double16 x) -{ - x = ceil(x); - return convert_uchar16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtp(double16 x) -{ - x = ceil(x); - return convert_uchar16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_rtn(double16 x) -{ - x = floor(x); - return convert_uchar16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uchar16 convert_uchar16_sat_rtn(double16 x) -{ - x = floor(x); - return convert_uchar16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtz(double x) -{ - return convert_short(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtz(double x) -{ - return convert_short_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rte(double x) -{ - x = rint(x); - return convert_short(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rte(double x) -{ - x = rint(x); - return convert_short_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtp(double x) -{ - x = ceil(x); - return convert_short(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtp(double x) -{ - x = ceil(x); - return convert_short_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_rtn(double x) -{ - x = floor(x); - return convert_short(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short convert_short_sat_rtn(double x) -{ - x = floor(x); - return convert_short_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtz(double2 x) -{ - return convert_short2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtz(double2 x) -{ - return convert_short2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rte(double2 x) -{ - x = rint(x); - return convert_short2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rte(double2 x) -{ - x = rint(x); - return convert_short2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtp(double2 x) -{ - x = ceil(x); - return convert_short2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtp(double2 x) -{ - x = ceil(x); - return convert_short2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_rtn(double2 x) -{ - x = floor(x); - return convert_short2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short2 convert_short2_sat_rtn(double2 x) -{ - x = floor(x); - return convert_short2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtz(double3 x) -{ - return convert_short3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtz(double3 x) -{ - return convert_short3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rte(double3 x) -{ - x = rint(x); - return convert_short3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rte(double3 x) -{ - x = rint(x); - return convert_short3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtp(double3 x) -{ - x = ceil(x); - return convert_short3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtp(double3 x) -{ - x = ceil(x); - return convert_short3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_rtn(double3 x) -{ - x = floor(x); - return convert_short3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short3 convert_short3_sat_rtn(double3 x) -{ - x = floor(x); - return convert_short3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtz(double4 x) -{ - return convert_short4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtz(double4 x) -{ - return convert_short4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rte(double4 x) -{ - x = rint(x); - return convert_short4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rte(double4 x) -{ - x = rint(x); - return convert_short4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtp(double4 x) -{ - x = ceil(x); - return convert_short4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtp(double4 x) -{ - x = ceil(x); - return convert_short4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_rtn(double4 x) -{ - x = floor(x); - return convert_short4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short4 convert_short4_sat_rtn(double4 x) -{ - x = floor(x); - return convert_short4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtz(double8 x) -{ - return convert_short8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtz(double8 x) -{ - return convert_short8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rte(double8 x) -{ - x = rint(x); - return convert_short8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rte(double8 x) -{ - x = rint(x); - return convert_short8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtp(double8 x) -{ - x = ceil(x); - return convert_short8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtp(double8 x) -{ - x = ceil(x); - return convert_short8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_rtn(double8 x) -{ - x = floor(x); - return convert_short8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short8 convert_short8_sat_rtn(double8 x) -{ - x = floor(x); - return convert_short8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtz(double16 x) -{ - return convert_short16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtz(double16 x) -{ - return convert_short16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rte(double16 x) -{ - x = rint(x); - return convert_short16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rte(double16 x) -{ - x = rint(x); - return convert_short16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtp(double16 x) -{ - x = ceil(x); - return convert_short16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtp(double16 x) -{ - x = ceil(x); - return convert_short16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_rtn(double16 x) -{ - x = floor(x); - return convert_short16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -short16 convert_short16_sat_rtn(double16 x) -{ - x = floor(x); - return convert_short16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtz(double x) -{ - return convert_ushort(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtz(double x) -{ - return convert_ushort_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rte(double x) -{ - x = rint(x); - return convert_ushort(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rte(double x) -{ - x = rint(x); - return convert_ushort_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtp(double x) -{ - x = ceil(x); - return convert_ushort(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtp(double x) -{ - x = ceil(x); - return convert_ushort_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_rtn(double x) -{ - x = floor(x); - return convert_ushort(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort convert_ushort_sat_rtn(double x) -{ - x = floor(x); - return convert_ushort_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtz(double2 x) -{ - return convert_ushort2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtz(double2 x) -{ - return convert_ushort2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rte(double2 x) -{ - x = rint(x); - return convert_ushort2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rte(double2 x) -{ - x = rint(x); - return convert_ushort2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtp(double2 x) -{ - x = ceil(x); - return convert_ushort2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtp(double2 x) -{ - x = ceil(x); - return convert_ushort2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_rtn(double2 x) -{ - x = floor(x); - return convert_ushort2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort2 convert_ushort2_sat_rtn(double2 x) -{ - x = floor(x); - return convert_ushort2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtz(double3 x) -{ - return convert_ushort3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtz(double3 x) -{ - return convert_ushort3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rte(double3 x) -{ - x = rint(x); - return convert_ushort3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rte(double3 x) -{ - x = rint(x); - return convert_ushort3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtp(double3 x) -{ - x = ceil(x); - return convert_ushort3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtp(double3 x) -{ - x = ceil(x); - return convert_ushort3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_rtn(double3 x) -{ - x = floor(x); - return convert_ushort3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort3 convert_ushort3_sat_rtn(double3 x) -{ - x = floor(x); - return convert_ushort3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtz(double4 x) -{ - return convert_ushort4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtz(double4 x) -{ - return convert_ushort4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rte(double4 x) -{ - x = rint(x); - return convert_ushort4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rte(double4 x) -{ - x = rint(x); - return convert_ushort4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtp(double4 x) -{ - x = ceil(x); - return convert_ushort4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtp(double4 x) -{ - x = ceil(x); - return convert_ushort4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_rtn(double4 x) -{ - x = floor(x); - return convert_ushort4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort4 convert_ushort4_sat_rtn(double4 x) -{ - x = floor(x); - return convert_ushort4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtz(double8 x) -{ - return convert_ushort8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtz(double8 x) -{ - return convert_ushort8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rte(double8 x) -{ - x = rint(x); - return convert_ushort8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rte(double8 x) -{ - x = rint(x); - return convert_ushort8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtp(double8 x) -{ - x = ceil(x); - return convert_ushort8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtp(double8 x) -{ - x = ceil(x); - return convert_ushort8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_rtn(double8 x) -{ - x = floor(x); - return convert_ushort8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort8 convert_ushort8_sat_rtn(double8 x) -{ - x = floor(x); - return convert_ushort8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtz(double16 x) -{ - return convert_ushort16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtz(double16 x) -{ - return convert_ushort16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rte(double16 x) -{ - x = rint(x); - return convert_ushort16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rte(double16 x) -{ - x = rint(x); - return convert_ushort16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtp(double16 x) -{ - x = ceil(x); - return convert_ushort16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtp(double16 x) -{ - x = ceil(x); - return convert_ushort16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_rtn(double16 x) -{ - x = floor(x); - return convert_ushort16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -ushort16 convert_ushort16_sat_rtn(double16 x) -{ - x = floor(x); - return convert_ushort16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtz(double x) -{ - return convert_int(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtz(double x) -{ - return convert_int_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rte(double x) -{ - x = rint(x); - return convert_int(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rte(double x) -{ - x = rint(x); - return convert_int_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtp(double x) -{ - x = ceil(x); - return convert_int(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtp(double x) -{ - x = ceil(x); - return convert_int_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_rtn(double x) -{ - x = floor(x); - return convert_int(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int convert_int_sat_rtn(double x) -{ - x = floor(x); - return convert_int_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtz(double2 x) -{ - return convert_int2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtz(double2 x) -{ - return convert_int2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rte(double2 x) -{ - x = rint(x); - return convert_int2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rte(double2 x) -{ - x = rint(x); - return convert_int2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtp(double2 x) -{ - x = ceil(x); - return convert_int2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtp(double2 x) -{ - x = ceil(x); - return convert_int2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_rtn(double2 x) -{ - x = floor(x); - return convert_int2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int2 convert_int2_sat_rtn(double2 x) -{ - x = floor(x); - return convert_int2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtz(double3 x) -{ - return convert_int3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtz(double3 x) -{ - return convert_int3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rte(double3 x) -{ - x = rint(x); - return convert_int3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rte(double3 x) -{ - x = rint(x); - return convert_int3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtp(double3 x) -{ - x = ceil(x); - return convert_int3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtp(double3 x) -{ - x = ceil(x); - return convert_int3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_rtn(double3 x) -{ - x = floor(x); - return convert_int3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int3 convert_int3_sat_rtn(double3 x) -{ - x = floor(x); - return convert_int3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtz(double4 x) -{ - return convert_int4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtz(double4 x) -{ - return convert_int4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rte(double4 x) -{ - x = rint(x); - return convert_int4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rte(double4 x) -{ - x = rint(x); - return convert_int4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtp(double4 x) -{ - x = ceil(x); - return convert_int4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtp(double4 x) -{ - x = ceil(x); - return convert_int4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_rtn(double4 x) -{ - x = floor(x); - return convert_int4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int4 convert_int4_sat_rtn(double4 x) -{ - x = floor(x); - return convert_int4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtz(double8 x) -{ - return convert_int8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtz(double8 x) -{ - return convert_int8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rte(double8 x) -{ - x = rint(x); - return convert_int8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rte(double8 x) -{ - x = rint(x); - return convert_int8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtp(double8 x) -{ - x = ceil(x); - return convert_int8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtp(double8 x) -{ - x = ceil(x); - return convert_int8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_rtn(double8 x) -{ - x = floor(x); - return convert_int8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int8 convert_int8_sat_rtn(double8 x) -{ - x = floor(x); - return convert_int8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtz(double16 x) -{ - return convert_int16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtz(double16 x) -{ - return convert_int16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rte(double16 x) -{ - x = rint(x); - return convert_int16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rte(double16 x) -{ - x = rint(x); - return convert_int16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtp(double16 x) -{ - x = ceil(x); - return convert_int16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtp(double16 x) -{ - x = ceil(x); - return convert_int16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_rtn(double16 x) -{ - x = floor(x); - return convert_int16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -int16 convert_int16_sat_rtn(double16 x) -{ - x = floor(x); - return convert_int16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtz(double x) -{ - return convert_uint(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtz(double x) -{ - return convert_uint_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rte(double x) -{ - x = rint(x); - return convert_uint(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rte(double x) -{ - x = rint(x); - return convert_uint_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtp(double x) -{ - x = ceil(x); - return convert_uint(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtp(double x) -{ - x = ceil(x); - return convert_uint_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_rtn(double x) -{ - x = floor(x); - return convert_uint(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint convert_uint_sat_rtn(double x) -{ - x = floor(x); - return convert_uint_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtz(double2 x) -{ - return convert_uint2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtz(double2 x) -{ - return convert_uint2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rte(double2 x) -{ - x = rint(x); - return convert_uint2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rte(double2 x) -{ - x = rint(x); - return convert_uint2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtp(double2 x) -{ - x = ceil(x); - return convert_uint2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtp(double2 x) -{ - x = ceil(x); - return convert_uint2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_rtn(double2 x) -{ - x = floor(x); - return convert_uint2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint2 convert_uint2_sat_rtn(double2 x) -{ - x = floor(x); - return convert_uint2_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtz(double3 x) -{ - return convert_uint3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtz(double3 x) -{ - return convert_uint3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rte(double3 x) -{ - x = rint(x); - return convert_uint3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rte(double3 x) -{ - x = rint(x); - return convert_uint3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtp(double3 x) -{ - x = ceil(x); - return convert_uint3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtp(double3 x) -{ - x = ceil(x); - return convert_uint3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_rtn(double3 x) -{ - x = floor(x); - return convert_uint3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint3 convert_uint3_sat_rtn(double3 x) -{ - x = floor(x); - return convert_uint3_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtz(double4 x) -{ - return convert_uint4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtz(double4 x) -{ - return convert_uint4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rte(double4 x) -{ - x = rint(x); - return convert_uint4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rte(double4 x) -{ - x = rint(x); - return convert_uint4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtp(double4 x) -{ - x = ceil(x); - return convert_uint4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtp(double4 x) -{ - x = ceil(x); - return convert_uint4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_rtn(double4 x) -{ - x = floor(x); - return convert_uint4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint4 convert_uint4_sat_rtn(double4 x) -{ - x = floor(x); - return convert_uint4_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtz(double8 x) -{ - return convert_uint8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtz(double8 x) -{ - return convert_uint8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rte(double8 x) -{ - x = rint(x); - return convert_uint8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rte(double8 x) -{ - x = rint(x); - return convert_uint8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtp(double8 x) -{ - x = ceil(x); - return convert_uint8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtp(double8 x) -{ - x = ceil(x); - return convert_uint8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_rtn(double8 x) -{ - x = floor(x); - return convert_uint8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint8 convert_uint8_sat_rtn(double8 x) -{ - x = floor(x); - return convert_uint8_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtz(double16 x) -{ - return convert_uint16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtz(double16 x) -{ - return convert_uint16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rte(double16 x) -{ - x = rint(x); - return convert_uint16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rte(double16 x) -{ - x = rint(x); - return convert_uint16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtp(double16 x) -{ - x = ceil(x); - return convert_uint16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtp(double16 x) -{ - x = ceil(x); - return convert_uint16_sat(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_rtn(double16 x) -{ - x = floor(x); - return convert_uint16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -uint16 convert_uint16_sat_rtn(double16 x) -{ - x = floor(x); - return convert_uint16_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtz(double x) -{ - return convert_long(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtz(double x) -{ - return convert_long_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long_rte(double x) -{ - x = rint(x); - return convert_long(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rte(double x) -{ - x = rint(x); - return convert_long_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtp(double x) -{ - x = ceil(x); - return convert_long(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtp(double x) -{ - x = ceil(x); - return convert_long_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long_rtn(double x) -{ - x = floor(x); - return convert_long(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long convert_long_sat_rtn(double x) -{ - x = floor(x); - return convert_long_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtz(double2 x) -{ - return convert_long2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtz(double2 x) -{ - return convert_long2_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rte(double2 x) -{ - x = rint(x); - return convert_long2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rte(double2 x) -{ - x = rint(x); - return convert_long2_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtp(double2 x) -{ - x = ceil(x); - return convert_long2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtp(double2 x) -{ - x = ceil(x); - return convert_long2_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_rtn(double2 x) -{ - x = floor(x); - return convert_long2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long2 convert_long2_sat_rtn(double2 x) -{ - x = floor(x); - return convert_long2_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtz(double3 x) -{ - return convert_long3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtz(double3 x) -{ - return convert_long3_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rte(double3 x) -{ - x = rint(x); - return convert_long3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rte(double3 x) -{ - x = rint(x); - return convert_long3_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtp(double3 x) -{ - x = ceil(x); - return convert_long3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtp(double3 x) -{ - x = ceil(x); - return convert_long3_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_rtn(double3 x) -{ - x = floor(x); - return convert_long3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long3 convert_long3_sat_rtn(double3 x) -{ - x = floor(x); - return convert_long3_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtz(double4 x) -{ - return convert_long4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtz(double4 x) -{ - return convert_long4_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rte(double4 x) -{ - x = rint(x); - return convert_long4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rte(double4 x) -{ - x = rint(x); - return convert_long4_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtp(double4 x) -{ - x = ceil(x); - return convert_long4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtp(double4 x) -{ - x = ceil(x); - return convert_long4_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_rtn(double4 x) -{ - x = floor(x); - return convert_long4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long4 convert_long4_sat_rtn(double4 x) -{ - x = floor(x); - return convert_long4_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtz(double8 x) -{ - return convert_long8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtz(double8 x) -{ - return convert_long8_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rte(double8 x) -{ - x = rint(x); - return convert_long8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rte(double8 x) -{ - x = rint(x); - return convert_long8_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtp(double8 x) -{ - x = ceil(x); - return convert_long8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtp(double8 x) -{ - x = ceil(x); - return convert_long8_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_rtn(double8 x) -{ - x = floor(x); - return convert_long8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long8 convert_long8_sat_rtn(double8 x) -{ - x = floor(x); - return convert_long8_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtz(double16 x) -{ - return convert_long16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtz(double16 x) -{ - return convert_long16_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rte(double16 x) -{ - x = rint(x); - return convert_long16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rte(double16 x) -{ - x = rint(x); - return convert_long16_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtp(double16 x) -{ - x = ceil(x); - return convert_long16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtp(double16 x) -{ - x = ceil(x); - return convert_long16_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_rtn(double16 x) -{ - x = floor(x); - return convert_long16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -long16 convert_long16_sat_rtn(double16 x) -{ - x = floor(x); - return convert_long16_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtz(double x) -{ - return convert_ulong(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtz(double x) -{ - return convert_ulong_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rte(double x) -{ - x = rint(x); - return convert_ulong(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rte(double x) -{ - x = rint(x); - return convert_ulong_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtp(double x) -{ - x = ceil(x); - return convert_ulong(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtp(double x) -{ - x = ceil(x); - return convert_ulong_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_rtn(double x) -{ - x = floor(x); - return convert_ulong(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong convert_ulong_sat_rtn(double x) -{ - x = floor(x); - return convert_ulong_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtz(double2 x) -{ - return convert_ulong2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtz(double2 x) -{ - return convert_ulong2_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rte(double2 x) -{ - x = rint(x); - return convert_ulong2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rte(double2 x) -{ - x = rint(x); - return convert_ulong2_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtp(double2 x) -{ - x = ceil(x); - return convert_ulong2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtp(double2 x) -{ - x = ceil(x); - return convert_ulong2_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_rtn(double2 x) -{ - x = floor(x); - return convert_ulong2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong2 convert_ulong2_sat_rtn(double2 x) -{ - x = floor(x); - return convert_ulong2_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtz(double3 x) -{ - return convert_ulong3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtz(double3 x) -{ - return convert_ulong3_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rte(double3 x) -{ - x = rint(x); - return convert_ulong3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rte(double3 x) -{ - x = rint(x); - return convert_ulong3_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtp(double3 x) -{ - x = ceil(x); - return convert_ulong3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtp(double3 x) -{ - x = ceil(x); - return convert_ulong3_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_rtn(double3 x) -{ - x = floor(x); - return convert_ulong3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong3 convert_ulong3_sat_rtn(double3 x) -{ - x = floor(x); - return convert_ulong3_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtz(double4 x) -{ - return convert_ulong4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtz(double4 x) -{ - return convert_ulong4_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rte(double4 x) -{ - x = rint(x); - return convert_ulong4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rte(double4 x) -{ - x = rint(x); - return convert_ulong4_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtp(double4 x) -{ - x = ceil(x); - return convert_ulong4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtp(double4 x) -{ - x = ceil(x); - return convert_ulong4_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_rtn(double4 x) -{ - x = floor(x); - return convert_ulong4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong4 convert_ulong4_sat_rtn(double4 x) -{ - x = floor(x); - return convert_ulong4_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtz(double8 x) -{ - return convert_ulong8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtz(double8 x) -{ - return convert_ulong8_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rte(double8 x) -{ - x = rint(x); - return convert_ulong8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rte(double8 x) -{ - x = rint(x); - return convert_ulong8_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtp(double8 x) -{ - x = ceil(x); - return convert_ulong8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtp(double8 x) -{ - x = ceil(x); - return convert_ulong8_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_rtn(double8 x) -{ - x = floor(x); - return convert_ulong8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong8 convert_ulong8_sat_rtn(double8 x) -{ - x = floor(x); - return convert_ulong8_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtz(double16 x) -{ - return convert_ulong16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtz(double16 x) -{ - return convert_ulong16_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rte(double16 x) -{ - x = rint(x); - return convert_ulong16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rte(double16 x) -{ - x = rint(x); - return convert_ulong16_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtp(double16 x) -{ - x = ceil(x); - return convert_ulong16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtp(double16 x) -{ - x = ceil(x); - return convert_ulong16_sat(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_rtn(double16 x) -{ - x = floor(x); - return convert_ulong16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -ulong16 convert_ulong16_sat_rtn(double16 x) -{ - x = floor(x); - return convert_ulong16_sat(x); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(char x) -{ - float r = convert_float(x); - char y = convert_char(y); - uchar abs_x = abs(x); - uchar abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(char x) -{ - return convert_float(x); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(char x) -{ - float r = convert_float(x); - char y = convert_char(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(char x) -{ - float r = convert_float(x); - char y = convert_char(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(char2 x) -{ - float2 r = convert_float2(x); - char2 y = convert_char2(y); - uchar2 abs_x = abs(x); - uchar2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(char2 x) -{ - return convert_float2(x); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(char2 x) -{ - float2 r = convert_float2(x); - char2 y = convert_char2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(char2 x) -{ - float2 r = convert_float2(x); - char2 y = convert_char2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(char3 x) -{ - float3 r = convert_float3(x); - char3 y = convert_char3(y); - uchar3 abs_x = abs(x); - uchar3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(char3 x) -{ - return convert_float3(x); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(char3 x) -{ - float3 r = convert_float3(x); - char3 y = convert_char3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(char3 x) -{ - float3 r = convert_float3(x); - char3 y = convert_char3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(char4 x) -{ - float4 r = convert_float4(x); - char4 y = convert_char4(y); - uchar4 abs_x = abs(x); - uchar4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(char4 x) -{ - return convert_float4(x); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(char4 x) -{ - float4 r = convert_float4(x); - char4 y = convert_char4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(char4 x) -{ - float4 r = convert_float4(x); - char4 y = convert_char4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(char8 x) -{ - float8 r = convert_float8(x); - char8 y = convert_char8(y); - uchar8 abs_x = abs(x); - uchar8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(char8 x) -{ - return convert_float8(x); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(char8 x) -{ - float8 r = convert_float8(x); - char8 y = convert_char8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(char8 x) -{ - float8 r = convert_float8(x); - char8 y = convert_char8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(char16 x) -{ - float16 r = convert_float16(x); - char16 y = convert_char16(y); - uchar16 abs_x = abs(x); - uchar16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(char16 x) -{ - return convert_float16(x); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(char16 x) -{ - float16 r = convert_float16(x); - char16 y = convert_char16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(char16 x) -{ - float16 r = convert_float16(x); - char16 y = convert_char16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(char x) -{ - double r = convert_double(x); - char y = convert_char(y); - uchar abs_x = abs(x); - uchar abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(char x) -{ - return convert_double(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(char x) -{ - double r = convert_double(x); - char y = convert_char(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(char x) -{ - double r = convert_double(x); - char y = convert_char(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(char2 x) -{ - double2 r = convert_double2(x); - char2 y = convert_char2(y); - uchar2 abs_x = abs(x); - uchar2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(char2 x) -{ - return convert_double2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(char2 x) -{ - double2 r = convert_double2(x); - char2 y = convert_char2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(char2 x) -{ - double2 r = convert_double2(x); - char2 y = convert_char2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(char3 x) -{ - double3 r = convert_double3(x); - char3 y = convert_char3(y); - uchar3 abs_x = abs(x); - uchar3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(char3 x) -{ - return convert_double3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(char3 x) -{ - double3 r = convert_double3(x); - char3 y = convert_char3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(char3 x) -{ - double3 r = convert_double3(x); - char3 y = convert_char3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(char4 x) -{ - double4 r = convert_double4(x); - char4 y = convert_char4(y); - uchar4 abs_x = abs(x); - uchar4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(char4 x) -{ - return convert_double4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(char4 x) -{ - double4 r = convert_double4(x); - char4 y = convert_char4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(char4 x) -{ - double4 r = convert_double4(x); - char4 y = convert_char4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(char8 x) -{ - double8 r = convert_double8(x); - char8 y = convert_char8(y); - uchar8 abs_x = abs(x); - uchar8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(char8 x) -{ - return convert_double8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(char8 x) -{ - double8 r = convert_double8(x); - char8 y = convert_char8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(char8 x) -{ - double8 r = convert_double8(x); - char8 y = convert_char8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(char16 x) -{ - double16 r = convert_double16(x); - char16 y = convert_char16(y); - uchar16 abs_x = abs(x); - uchar16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(char16 x) -{ - return convert_double16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(char16 x) -{ - double16 r = convert_double16(x); - char16 y = convert_char16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(char16 x) -{ - double16 r = convert_double16(x); - char16 y = convert_char16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(uchar x) -{ - float r = convert_float(x); - uchar y = convert_uchar(y); - uchar abs_x = abs(x); - uchar abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(uchar x) -{ - return convert_float(x); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(uchar x) -{ - float r = convert_float(x); - uchar y = convert_uchar(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(uchar x) -{ - float r = convert_float(x); - uchar y = convert_uchar(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(uchar2 x) -{ - float2 r = convert_float2(x); - uchar2 y = convert_uchar2(y); - uchar2 abs_x = abs(x); - uchar2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(uchar2 x) -{ - return convert_float2(x); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(uchar2 x) -{ - float2 r = convert_float2(x); - uchar2 y = convert_uchar2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(uchar2 x) -{ - float2 r = convert_float2(x); - uchar2 y = convert_uchar2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(uchar3 x) -{ - float3 r = convert_float3(x); - uchar3 y = convert_uchar3(y); - uchar3 abs_x = abs(x); - uchar3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(uchar3 x) -{ - return convert_float3(x); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(uchar3 x) -{ - float3 r = convert_float3(x); - uchar3 y = convert_uchar3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(uchar3 x) -{ - float3 r = convert_float3(x); - uchar3 y = convert_uchar3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(uchar4 x) -{ - float4 r = convert_float4(x); - uchar4 y = convert_uchar4(y); - uchar4 abs_x = abs(x); - uchar4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(uchar4 x) -{ - return convert_float4(x); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(uchar4 x) -{ - float4 r = convert_float4(x); - uchar4 y = convert_uchar4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(uchar4 x) -{ - float4 r = convert_float4(x); - uchar4 y = convert_uchar4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(uchar8 x) -{ - float8 r = convert_float8(x); - uchar8 y = convert_uchar8(y); - uchar8 abs_x = abs(x); - uchar8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(uchar8 x) -{ - return convert_float8(x); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(uchar8 x) -{ - float8 r = convert_float8(x); - uchar8 y = convert_uchar8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(uchar8 x) -{ - float8 r = convert_float8(x); - uchar8 y = convert_uchar8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(uchar16 x) -{ - float16 r = convert_float16(x); - uchar16 y = convert_uchar16(y); - uchar16 abs_x = abs(x); - uchar16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(uchar16 x) -{ - return convert_float16(x); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(uchar16 x) -{ - float16 r = convert_float16(x); - uchar16 y = convert_uchar16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(uchar16 x) -{ - float16 r = convert_float16(x); - uchar16 y = convert_uchar16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(uchar x) -{ - double r = convert_double(x); - uchar y = convert_uchar(y); - uchar abs_x = abs(x); - uchar abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(uchar x) -{ - return convert_double(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(uchar x) -{ - double r = convert_double(x); - uchar y = convert_uchar(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(uchar x) -{ - double r = convert_double(x); - uchar y = convert_uchar(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(uchar2 x) -{ - double2 r = convert_double2(x); - uchar2 y = convert_uchar2(y); - uchar2 abs_x = abs(x); - uchar2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(uchar2 x) -{ - return convert_double2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(uchar2 x) -{ - double2 r = convert_double2(x); - uchar2 y = convert_uchar2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(uchar2 x) -{ - double2 r = convert_double2(x); - uchar2 y = convert_uchar2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(uchar3 x) -{ - double3 r = convert_double3(x); - uchar3 y = convert_uchar3(y); - uchar3 abs_x = abs(x); - uchar3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(uchar3 x) -{ - return convert_double3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(uchar3 x) -{ - double3 r = convert_double3(x); - uchar3 y = convert_uchar3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(uchar3 x) -{ - double3 r = convert_double3(x); - uchar3 y = convert_uchar3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(uchar4 x) -{ - double4 r = convert_double4(x); - uchar4 y = convert_uchar4(y); - uchar4 abs_x = abs(x); - uchar4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(uchar4 x) -{ - return convert_double4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(uchar4 x) -{ - double4 r = convert_double4(x); - uchar4 y = convert_uchar4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(uchar4 x) -{ - double4 r = convert_double4(x); - uchar4 y = convert_uchar4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(uchar8 x) -{ - double8 r = convert_double8(x); - uchar8 y = convert_uchar8(y); - uchar8 abs_x = abs(x); - uchar8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(uchar8 x) -{ - return convert_double8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(uchar8 x) -{ - double8 r = convert_double8(x); - uchar8 y = convert_uchar8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(uchar8 x) -{ - double8 r = convert_double8(x); - uchar8 y = convert_uchar8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(uchar16 x) -{ - double16 r = convert_double16(x); - uchar16 y = convert_uchar16(y); - uchar16 abs_x = abs(x); - uchar16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(uchar16 x) -{ - return convert_double16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(uchar16 x) -{ - double16 r = convert_double16(x); - uchar16 y = convert_uchar16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(uchar16 x) -{ - double16 r = convert_double16(x); - uchar16 y = convert_uchar16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(short x) -{ - float r = convert_float(x); - short y = convert_short(y); - ushort abs_x = abs(x); - ushort abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(short x) -{ - return convert_float(x); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(short x) -{ - float r = convert_float(x); - short y = convert_short(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(short x) -{ - float r = convert_float(x); - short y = convert_short(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(short2 x) -{ - float2 r = convert_float2(x); - short2 y = convert_short2(y); - ushort2 abs_x = abs(x); - ushort2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(short2 x) -{ - return convert_float2(x); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(short2 x) -{ - float2 r = convert_float2(x); - short2 y = convert_short2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(short2 x) -{ - float2 r = convert_float2(x); - short2 y = convert_short2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(short3 x) -{ - float3 r = convert_float3(x); - short3 y = convert_short3(y); - ushort3 abs_x = abs(x); - ushort3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(short3 x) -{ - return convert_float3(x); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(short3 x) -{ - float3 r = convert_float3(x); - short3 y = convert_short3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(short3 x) -{ - float3 r = convert_float3(x); - short3 y = convert_short3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(short4 x) -{ - float4 r = convert_float4(x); - short4 y = convert_short4(y); - ushort4 abs_x = abs(x); - ushort4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(short4 x) -{ - return convert_float4(x); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(short4 x) -{ - float4 r = convert_float4(x); - short4 y = convert_short4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(short4 x) -{ - float4 r = convert_float4(x); - short4 y = convert_short4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(short8 x) -{ - float8 r = convert_float8(x); - short8 y = convert_short8(y); - ushort8 abs_x = abs(x); - ushort8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(short8 x) -{ - return convert_float8(x); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(short8 x) -{ - float8 r = convert_float8(x); - short8 y = convert_short8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(short8 x) -{ - float8 r = convert_float8(x); - short8 y = convert_short8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(short16 x) -{ - float16 r = convert_float16(x); - short16 y = convert_short16(y); - ushort16 abs_x = abs(x); - ushort16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(short16 x) -{ - return convert_float16(x); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(short16 x) -{ - float16 r = convert_float16(x); - short16 y = convert_short16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(short16 x) -{ - float16 r = convert_float16(x); - short16 y = convert_short16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(short x) -{ - double r = convert_double(x); - short y = convert_short(y); - ushort abs_x = abs(x); - ushort abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(short x) -{ - return convert_double(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(short x) -{ - double r = convert_double(x); - short y = convert_short(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(short x) -{ - double r = convert_double(x); - short y = convert_short(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(short2 x) -{ - double2 r = convert_double2(x); - short2 y = convert_short2(y); - ushort2 abs_x = abs(x); - ushort2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(short2 x) -{ - return convert_double2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(short2 x) -{ - double2 r = convert_double2(x); - short2 y = convert_short2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(short2 x) -{ - double2 r = convert_double2(x); - short2 y = convert_short2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(short3 x) -{ - double3 r = convert_double3(x); - short3 y = convert_short3(y); - ushort3 abs_x = abs(x); - ushort3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(short3 x) -{ - return convert_double3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(short3 x) -{ - double3 r = convert_double3(x); - short3 y = convert_short3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(short3 x) -{ - double3 r = convert_double3(x); - short3 y = convert_short3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(short4 x) -{ - double4 r = convert_double4(x); - short4 y = convert_short4(y); - ushort4 abs_x = abs(x); - ushort4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(short4 x) -{ - return convert_double4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(short4 x) -{ - double4 r = convert_double4(x); - short4 y = convert_short4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(short4 x) -{ - double4 r = convert_double4(x); - short4 y = convert_short4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(short8 x) -{ - double8 r = convert_double8(x); - short8 y = convert_short8(y); - ushort8 abs_x = abs(x); - ushort8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(short8 x) -{ - return convert_double8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(short8 x) -{ - double8 r = convert_double8(x); - short8 y = convert_short8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(short8 x) -{ - double8 r = convert_double8(x); - short8 y = convert_short8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(short16 x) -{ - double16 r = convert_double16(x); - short16 y = convert_short16(y); - ushort16 abs_x = abs(x); - ushort16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(short16 x) -{ - return convert_double16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(short16 x) -{ - double16 r = convert_double16(x); - short16 y = convert_short16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(short16 x) -{ - double16 r = convert_double16(x); - short16 y = convert_short16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(ushort x) -{ - float r = convert_float(x); - ushort y = convert_ushort(y); - ushort abs_x = abs(x); - ushort abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(ushort x) -{ - return convert_float(x); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(ushort x) -{ - float r = convert_float(x); - ushort y = convert_ushort(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(ushort x) -{ - float r = convert_float(x); - ushort y = convert_ushort(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(ushort2 x) -{ - float2 r = convert_float2(x); - ushort2 y = convert_ushort2(y); - ushort2 abs_x = abs(x); - ushort2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(ushort2 x) -{ - return convert_float2(x); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(ushort2 x) -{ - float2 r = convert_float2(x); - ushort2 y = convert_ushort2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(ushort2 x) -{ - float2 r = convert_float2(x); - ushort2 y = convert_ushort2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(ushort3 x) -{ - float3 r = convert_float3(x); - ushort3 y = convert_ushort3(y); - ushort3 abs_x = abs(x); - ushort3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(ushort3 x) -{ - return convert_float3(x); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(ushort3 x) -{ - float3 r = convert_float3(x); - ushort3 y = convert_ushort3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(ushort3 x) -{ - float3 r = convert_float3(x); - ushort3 y = convert_ushort3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(ushort4 x) -{ - float4 r = convert_float4(x); - ushort4 y = convert_ushort4(y); - ushort4 abs_x = abs(x); - ushort4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(ushort4 x) -{ - return convert_float4(x); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(ushort4 x) -{ - float4 r = convert_float4(x); - ushort4 y = convert_ushort4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(ushort4 x) -{ - float4 r = convert_float4(x); - ushort4 y = convert_ushort4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(ushort8 x) -{ - float8 r = convert_float8(x); - ushort8 y = convert_ushort8(y); - ushort8 abs_x = abs(x); - ushort8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(ushort8 x) -{ - return convert_float8(x); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(ushort8 x) -{ - float8 r = convert_float8(x); - ushort8 y = convert_ushort8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(ushort8 x) -{ - float8 r = convert_float8(x); - ushort8 y = convert_ushort8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(ushort16 x) -{ - float16 r = convert_float16(x); - ushort16 y = convert_ushort16(y); - ushort16 abs_x = abs(x); - ushort16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(ushort16 x) -{ - return convert_float16(x); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(ushort16 x) -{ - float16 r = convert_float16(x); - ushort16 y = convert_ushort16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(ushort16 x) -{ - float16 r = convert_float16(x); - ushort16 y = convert_ushort16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(ushort x) -{ - double r = convert_double(x); - ushort y = convert_ushort(y); - ushort abs_x = abs(x); - ushort abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(ushort x) -{ - return convert_double(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(ushort x) -{ - double r = convert_double(x); - ushort y = convert_ushort(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(ushort x) -{ - double r = convert_double(x); - ushort y = convert_ushort(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(ushort2 x) -{ - double2 r = convert_double2(x); - ushort2 y = convert_ushort2(y); - ushort2 abs_x = abs(x); - ushort2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(ushort2 x) -{ - return convert_double2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(ushort2 x) -{ - double2 r = convert_double2(x); - ushort2 y = convert_ushort2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(ushort2 x) -{ - double2 r = convert_double2(x); - ushort2 y = convert_ushort2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(ushort3 x) -{ - double3 r = convert_double3(x); - ushort3 y = convert_ushort3(y); - ushort3 abs_x = abs(x); - ushort3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(ushort3 x) -{ - return convert_double3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(ushort3 x) -{ - double3 r = convert_double3(x); - ushort3 y = convert_ushort3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(ushort3 x) -{ - double3 r = convert_double3(x); - ushort3 y = convert_ushort3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(ushort4 x) -{ - double4 r = convert_double4(x); - ushort4 y = convert_ushort4(y); - ushort4 abs_x = abs(x); - ushort4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(ushort4 x) -{ - return convert_double4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(ushort4 x) -{ - double4 r = convert_double4(x); - ushort4 y = convert_ushort4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(ushort4 x) -{ - double4 r = convert_double4(x); - ushort4 y = convert_ushort4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(ushort8 x) -{ - double8 r = convert_double8(x); - ushort8 y = convert_ushort8(y); - ushort8 abs_x = abs(x); - ushort8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(ushort8 x) -{ - return convert_double8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(ushort8 x) -{ - double8 r = convert_double8(x); - ushort8 y = convert_ushort8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(ushort8 x) -{ - double8 r = convert_double8(x); - ushort8 y = convert_ushort8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(ushort16 x) -{ - double16 r = convert_double16(x); - ushort16 y = convert_ushort16(y); - ushort16 abs_x = abs(x); - ushort16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(ushort16 x) -{ - return convert_double16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(ushort16 x) -{ - double16 r = convert_double16(x); - ushort16 y = convert_ushort16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(ushort16 x) -{ - double16 r = convert_double16(x); - ushort16 y = convert_ushort16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(int x) -{ - float r = convert_float(x); - int y = convert_int(y); - uint abs_x = abs(x); - uint abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(int x) -{ - return convert_float(x); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(int x) -{ - float r = convert_float(x); - int y = convert_int(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(int x) -{ - float r = convert_float(x); - int y = convert_int(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(int2 x) -{ - float2 r = convert_float2(x); - int2 y = convert_int2(y); - uint2 abs_x = abs(x); - uint2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(int2 x) -{ - return convert_float2(x); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(int2 x) -{ - float2 r = convert_float2(x); - int2 y = convert_int2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(int2 x) -{ - float2 r = convert_float2(x); - int2 y = convert_int2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(int3 x) -{ - float3 r = convert_float3(x); - int3 y = convert_int3(y); - uint3 abs_x = abs(x); - uint3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(int3 x) -{ - return convert_float3(x); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(int3 x) -{ - float3 r = convert_float3(x); - int3 y = convert_int3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(int3 x) -{ - float3 r = convert_float3(x); - int3 y = convert_int3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(int4 x) -{ - float4 r = convert_float4(x); - int4 y = convert_int4(y); - uint4 abs_x = abs(x); - uint4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(int4 x) -{ - return convert_float4(x); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(int4 x) -{ - float4 r = convert_float4(x); - int4 y = convert_int4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(int4 x) -{ - float4 r = convert_float4(x); - int4 y = convert_int4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(int8 x) -{ - float8 r = convert_float8(x); - int8 y = convert_int8(y); - uint8 abs_x = abs(x); - uint8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(int8 x) -{ - return convert_float8(x); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(int8 x) -{ - float8 r = convert_float8(x); - int8 y = convert_int8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(int8 x) -{ - float8 r = convert_float8(x); - int8 y = convert_int8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(int16 x) -{ - float16 r = convert_float16(x); - int16 y = convert_int16(y); - uint16 abs_x = abs(x); - uint16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(int16 x) -{ - return convert_float16(x); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(int16 x) -{ - float16 r = convert_float16(x); - int16 y = convert_int16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(int16 x) -{ - float16 r = convert_float16(x); - int16 y = convert_int16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(int x) -{ - double r = convert_double(x); - int y = convert_int(y); - uint abs_x = abs(x); - uint abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(int x) -{ - return convert_double(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(int x) -{ - double r = convert_double(x); - int y = convert_int(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(int x) -{ - double r = convert_double(x); - int y = convert_int(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(int2 x) -{ - double2 r = convert_double2(x); - int2 y = convert_int2(y); - uint2 abs_x = abs(x); - uint2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(int2 x) -{ - return convert_double2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(int2 x) -{ - double2 r = convert_double2(x); - int2 y = convert_int2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(int2 x) -{ - double2 r = convert_double2(x); - int2 y = convert_int2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(int3 x) -{ - double3 r = convert_double3(x); - int3 y = convert_int3(y); - uint3 abs_x = abs(x); - uint3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(int3 x) -{ - return convert_double3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(int3 x) -{ - double3 r = convert_double3(x); - int3 y = convert_int3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(int3 x) -{ - double3 r = convert_double3(x); - int3 y = convert_int3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(int4 x) -{ - double4 r = convert_double4(x); - int4 y = convert_int4(y); - uint4 abs_x = abs(x); - uint4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(int4 x) -{ - return convert_double4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(int4 x) -{ - double4 r = convert_double4(x); - int4 y = convert_int4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(int4 x) -{ - double4 r = convert_double4(x); - int4 y = convert_int4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(int8 x) -{ - double8 r = convert_double8(x); - int8 y = convert_int8(y); - uint8 abs_x = abs(x); - uint8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(int8 x) -{ - return convert_double8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(int8 x) -{ - double8 r = convert_double8(x); - int8 y = convert_int8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(int8 x) -{ - double8 r = convert_double8(x); - int8 y = convert_int8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(int16 x) -{ - double16 r = convert_double16(x); - int16 y = convert_int16(y); - uint16 abs_x = abs(x); - uint16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(int16 x) -{ - return convert_double16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(int16 x) -{ - double16 r = convert_double16(x); - int16 y = convert_int16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(int16 x) -{ - double16 r = convert_double16(x); - int16 y = convert_int16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(uint x) -{ - float r = convert_float(x); - uint y = convert_uint(y); - uint abs_x = abs(x); - uint abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(uint x) -{ - return convert_float(x); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(uint x) -{ - float r = convert_float(x); - uint y = convert_uint(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(uint x) -{ - float r = convert_float(x); - uint y = convert_uint(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(uint2 x) -{ - float2 r = convert_float2(x); - uint2 y = convert_uint2(y); - uint2 abs_x = abs(x); - uint2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(uint2 x) -{ - return convert_float2(x); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(uint2 x) -{ - float2 r = convert_float2(x); - uint2 y = convert_uint2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(uint2 x) -{ - float2 r = convert_float2(x); - uint2 y = convert_uint2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(uint3 x) -{ - float3 r = convert_float3(x); - uint3 y = convert_uint3(y); - uint3 abs_x = abs(x); - uint3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(uint3 x) -{ - return convert_float3(x); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(uint3 x) -{ - float3 r = convert_float3(x); - uint3 y = convert_uint3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(uint3 x) -{ - float3 r = convert_float3(x); - uint3 y = convert_uint3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(uint4 x) -{ - float4 r = convert_float4(x); - uint4 y = convert_uint4(y); - uint4 abs_x = abs(x); - uint4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(uint4 x) -{ - return convert_float4(x); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(uint4 x) -{ - float4 r = convert_float4(x); - uint4 y = convert_uint4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(uint4 x) -{ - float4 r = convert_float4(x); - uint4 y = convert_uint4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(uint8 x) -{ - float8 r = convert_float8(x); - uint8 y = convert_uint8(y); - uint8 abs_x = abs(x); - uint8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(uint8 x) -{ - return convert_float8(x); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(uint8 x) -{ - float8 r = convert_float8(x); - uint8 y = convert_uint8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(uint8 x) -{ - float8 r = convert_float8(x); - uint8 y = convert_uint8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(uint16 x) -{ - float16 r = convert_float16(x); - uint16 y = convert_uint16(y); - uint16 abs_x = abs(x); - uint16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(uint16 x) -{ - return convert_float16(x); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(uint16 x) -{ - float16 r = convert_float16(x); - uint16 y = convert_uint16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(uint16 x) -{ - float16 r = convert_float16(x); - uint16 y = convert_uint16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(uint x) -{ - double r = convert_double(x); - uint y = convert_uint(y); - uint abs_x = abs(x); - uint abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(uint x) -{ - return convert_double(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(uint x) -{ - double r = convert_double(x); - uint y = convert_uint(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(uint x) -{ - double r = convert_double(x); - uint y = convert_uint(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(uint2 x) -{ - double2 r = convert_double2(x); - uint2 y = convert_uint2(y); - uint2 abs_x = abs(x); - uint2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(uint2 x) -{ - return convert_double2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(uint2 x) -{ - double2 r = convert_double2(x); - uint2 y = convert_uint2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(uint2 x) -{ - double2 r = convert_double2(x); - uint2 y = convert_uint2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(uint3 x) -{ - double3 r = convert_double3(x); - uint3 y = convert_uint3(y); - uint3 abs_x = abs(x); - uint3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(uint3 x) -{ - return convert_double3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(uint3 x) -{ - double3 r = convert_double3(x); - uint3 y = convert_uint3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(uint3 x) -{ - double3 r = convert_double3(x); - uint3 y = convert_uint3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(uint4 x) -{ - double4 r = convert_double4(x); - uint4 y = convert_uint4(y); - uint4 abs_x = abs(x); - uint4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(uint4 x) -{ - return convert_double4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(uint4 x) -{ - double4 r = convert_double4(x); - uint4 y = convert_uint4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(uint4 x) -{ - double4 r = convert_double4(x); - uint4 y = convert_uint4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(uint8 x) -{ - double8 r = convert_double8(x); - uint8 y = convert_uint8(y); - uint8 abs_x = abs(x); - uint8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(uint8 x) -{ - return convert_double8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(uint8 x) -{ - double8 r = convert_double8(x); - uint8 y = convert_uint8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(uint8 x) -{ - double8 r = convert_double8(x); - uint8 y = convert_uint8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(uint16 x) -{ - double16 r = convert_double16(x); - uint16 y = convert_uint16(y); - uint16 abs_x = abs(x); - uint16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(uint16 x) -{ - return convert_double16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(uint16 x) -{ - double16 r = convert_double16(x); - uint16 y = convert_uint16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(uint16 x) -{ - double16 r = convert_double16(x); - uint16 y = convert_uint16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(long x) -{ - float r = convert_float(x); - long y = convert_long(y); - ulong abs_x = abs(x); - ulong abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(long x) -{ - return convert_float(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(long x) -{ - float r = convert_float(x); - long y = convert_long(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(long x) -{ - float r = convert_float(x); - long y = convert_long(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(long2 x) -{ - float2 r = convert_float2(x); - long2 y = convert_long2(y); - ulong2 abs_x = abs(x); - ulong2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(long2 x) -{ - return convert_float2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(long2 x) -{ - float2 r = convert_float2(x); - long2 y = convert_long2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(long2 x) -{ - float2 r = convert_float2(x); - long2 y = convert_long2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(long3 x) -{ - float3 r = convert_float3(x); - long3 y = convert_long3(y); - ulong3 abs_x = abs(x); - ulong3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(long3 x) -{ - return convert_float3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(long3 x) -{ - float3 r = convert_float3(x); - long3 y = convert_long3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(long3 x) -{ - float3 r = convert_float3(x); - long3 y = convert_long3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(long4 x) -{ - float4 r = convert_float4(x); - long4 y = convert_long4(y); - ulong4 abs_x = abs(x); - ulong4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(long4 x) -{ - return convert_float4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(long4 x) -{ - float4 r = convert_float4(x); - long4 y = convert_long4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(long4 x) -{ - float4 r = convert_float4(x); - long4 y = convert_long4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(long8 x) -{ - float8 r = convert_float8(x); - long8 y = convert_long8(y); - ulong8 abs_x = abs(x); - ulong8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(long8 x) -{ - return convert_float8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(long8 x) -{ - float8 r = convert_float8(x); - long8 y = convert_long8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(long8 x) -{ - float8 r = convert_float8(x); - long8 y = convert_long8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(long16 x) -{ - float16 r = convert_float16(x); - long16 y = convert_long16(y); - ulong16 abs_x = abs(x); - ulong16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(long16 x) -{ - return convert_float16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(long16 x) -{ - float16 r = convert_float16(x); - long16 y = convert_long16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(long16 x) -{ - float16 r = convert_float16(x); - long16 y = convert_long16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(long x) -{ - double r = convert_double(x); - long y = convert_long(y); - ulong abs_x = abs(x); - ulong abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(long x) -{ - return convert_double(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(long x) -{ - double r = convert_double(x); - long y = convert_long(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(long x) -{ - double r = convert_double(x); - long y = convert_long(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(long2 x) -{ - double2 r = convert_double2(x); - long2 y = convert_long2(y); - ulong2 abs_x = abs(x); - ulong2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(long2 x) -{ - return convert_double2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(long2 x) -{ - double2 r = convert_double2(x); - long2 y = convert_long2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(long2 x) -{ - double2 r = convert_double2(x); - long2 y = convert_long2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(long3 x) -{ - double3 r = convert_double3(x); - long3 y = convert_long3(y); - ulong3 abs_x = abs(x); - ulong3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(long3 x) -{ - return convert_double3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(long3 x) -{ - double3 r = convert_double3(x); - long3 y = convert_long3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(long3 x) -{ - double3 r = convert_double3(x); - long3 y = convert_long3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(long4 x) -{ - double4 r = convert_double4(x); - long4 y = convert_long4(y); - ulong4 abs_x = abs(x); - ulong4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(long4 x) -{ - return convert_double4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(long4 x) -{ - double4 r = convert_double4(x); - long4 y = convert_long4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(long4 x) -{ - double4 r = convert_double4(x); - long4 y = convert_long4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(long8 x) -{ - double8 r = convert_double8(x); - long8 y = convert_long8(y); - ulong8 abs_x = abs(x); - ulong8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(long8 x) -{ - return convert_double8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(long8 x) -{ - double8 r = convert_double8(x); - long8 y = convert_long8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(long8 x) -{ - double8 r = convert_double8(x); - long8 y = convert_long8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(long16 x) -{ - double16 r = convert_double16(x); - long16 y = convert_long16(y); - ulong16 abs_x = abs(x); - ulong16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(long16 x) -{ - return convert_double16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(long16 x) -{ - double16 r = convert_double16(x); - long16 y = convert_long16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(long16 x) -{ - double16 r = convert_double16(x); - long16 y = convert_long16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(ulong x) -{ - float r = convert_float(x); - ulong y = convert_ulong(y); - ulong abs_x = abs(x); - ulong abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(ulong x) -{ - return convert_float(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(ulong x) -{ - float r = convert_float(x); - ulong y = convert_ulong(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(ulong x) -{ - float r = convert_float(x); - ulong y = convert_ulong(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(ulong2 x) -{ - float2 r = convert_float2(x); - ulong2 y = convert_ulong2(y); - ulong2 abs_x = abs(x); - ulong2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(ulong2 x) -{ - return convert_float2(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(ulong2 x) -{ - float2 r = convert_float2(x); - ulong2 y = convert_ulong2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(ulong2 x) -{ - float2 r = convert_float2(x); - ulong2 y = convert_ulong2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(ulong3 x) -{ - float3 r = convert_float3(x); - ulong3 y = convert_ulong3(y); - ulong3 abs_x = abs(x); - ulong3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(ulong3 x) -{ - return convert_float3(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(ulong3 x) -{ - float3 r = convert_float3(x); - ulong3 y = convert_ulong3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(ulong3 x) -{ - float3 r = convert_float3(x); - ulong3 y = convert_ulong3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(ulong4 x) -{ - float4 r = convert_float4(x); - ulong4 y = convert_ulong4(y); - ulong4 abs_x = abs(x); - ulong4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(ulong4 x) -{ - return convert_float4(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(ulong4 x) -{ - float4 r = convert_float4(x); - ulong4 y = convert_ulong4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(ulong4 x) -{ - float4 r = convert_float4(x); - ulong4 y = convert_ulong4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(ulong8 x) -{ - float8 r = convert_float8(x); - ulong8 y = convert_ulong8(y); - ulong8 abs_x = abs(x); - ulong8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(ulong8 x) -{ - return convert_float8(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(ulong8 x) -{ - float8 r = convert_float8(x); - ulong8 y = convert_ulong8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(ulong8 x) -{ - float8 r = convert_float8(x); - ulong8 y = convert_ulong8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(ulong16 x) -{ - float16 r = convert_float16(x); - ulong16 y = convert_ulong16(y); - ulong16 abs_x = abs(x); - ulong16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(ulong16 x) -{ - return convert_float16(x); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(ulong16 x) -{ - float16 r = convert_float16(x); - ulong16 y = convert_ulong16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -#endif -#ifdef cles_khr_int64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(ulong16 x) -{ - float16 r = convert_float16(x); - ulong16 y = convert_ulong16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(ulong x) -{ - double r = convert_double(x); - ulong y = convert_ulong(y); - ulong abs_x = abs(x); - ulong abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(ulong x) -{ - return convert_double(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(ulong x) -{ - double r = convert_double(x); - ulong y = convert_ulong(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(ulong x) -{ - double r = convert_double(x); - ulong y = convert_ulong(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(ulong2 x) -{ - double2 r = convert_double2(x); - ulong2 y = convert_ulong2(y); - ulong2 abs_x = abs(x); - ulong2 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(ulong2 x) -{ - return convert_double2(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(ulong2 x) -{ - double2 r = convert_double2(x); - ulong2 y = convert_ulong2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(ulong2 x) -{ - double2 r = convert_double2(x); - ulong2 y = convert_ulong2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(ulong3 x) -{ - double3 r = convert_double3(x); - ulong3 y = convert_ulong3(y); - ulong3 abs_x = abs(x); - ulong3 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(ulong3 x) -{ - return convert_double3(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(ulong3 x) -{ - double3 r = convert_double3(x); - ulong3 y = convert_ulong3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(ulong3 x) -{ - double3 r = convert_double3(x); - ulong3 y = convert_ulong3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(ulong4 x) -{ - double4 r = convert_double4(x); - ulong4 y = convert_ulong4(y); - ulong4 abs_x = abs(x); - ulong4 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(ulong4 x) -{ - return convert_double4(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(ulong4 x) -{ - double4 r = convert_double4(x); - ulong4 y = convert_ulong4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(ulong4 x) -{ - double4 r = convert_double4(x); - ulong4 y = convert_ulong4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(ulong8 x) -{ - double8 r = convert_double8(x); - ulong8 y = convert_ulong8(y); - ulong8 abs_x = abs(x); - ulong8 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(ulong8 x) -{ - return convert_double8(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(ulong8 x) -{ - double8 r = convert_double8(x); - ulong8 y = convert_ulong8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(ulong8 x) -{ - double8 r = convert_double8(x); - ulong8 y = convert_ulong8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(ulong16 x) -{ - double16 r = convert_double16(x); - ulong16 y = convert_ulong16(y); - ulong16 abs_x = abs(x); - ulong16 abs_y = abs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(ulong16 x) -{ - return convert_double16(x); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(ulong16 x) -{ - double16 r = convert_double16(x); - ulong16 y = convert_ulong16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#if defined(cl_khr_fp64) && defined(cles_khr_int64) -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(ulong16 x) -{ - double16 r = convert_double16(x); - ulong16 y = convert_ulong16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(float x) -{ - float r = convert_float(x); - float y = convert_float(y); - float abs_x = fabs(x); - float abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(float x) -{ - return convert_float(x); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(float x) -{ - float r = convert_float(x); - float y = convert_float(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(float x) -{ - float r = convert_float(x); - float y = convert_float(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(float2 x) -{ - float2 r = convert_float2(x); - float2 y = convert_float2(y); - float2 abs_x = fabs(x); - float2 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(float2 x) -{ - return convert_float2(x); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(float2 x) -{ - float2 r = convert_float2(x); - float2 y = convert_float2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(float2 x) -{ - float2 r = convert_float2(x); - float2 y = convert_float2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(float3 x) -{ - float3 r = convert_float3(x); - float3 y = convert_float3(y); - float3 abs_x = fabs(x); - float3 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(float3 x) -{ - return convert_float3(x); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(float3 x) -{ - float3 r = convert_float3(x); - float3 y = convert_float3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(float3 x) -{ - float3 r = convert_float3(x); - float3 y = convert_float3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(float4 x) -{ - float4 r = convert_float4(x); - float4 y = convert_float4(y); - float4 abs_x = fabs(x); - float4 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(float4 x) -{ - return convert_float4(x); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(float4 x) -{ - float4 r = convert_float4(x); - float4 y = convert_float4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(float4 x) -{ - float4 r = convert_float4(x); - float4 y = convert_float4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(float8 x) -{ - float8 r = convert_float8(x); - float8 y = convert_float8(y); - float8 abs_x = fabs(x); - float8 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(float8 x) -{ - return convert_float8(x); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(float8 x) -{ - float8 r = convert_float8(x); - float8 y = convert_float8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(float8 x) -{ - float8 r = convert_float8(x); - float8 y = convert_float8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(float16 x) -{ - float16 r = convert_float16(x); - float16 y = convert_float16(y); - float16 abs_x = fabs(x); - float16 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(float16 x) -{ - return convert_float16(x); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(float16 x) -{ - float16 r = convert_float16(x); - float16 y = convert_float16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(float16 x) -{ - float16 r = convert_float16(x); - float16 y = convert_float16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(float x) -{ - double r = convert_double(x); - float y = convert_float(y); - float abs_x = fabs(x); - float abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(float x) -{ - return convert_double(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(float x) -{ - double r = convert_double(x); - float y = convert_float(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(float x) -{ - double r = convert_double(x); - float y = convert_float(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(float2 x) -{ - double2 r = convert_double2(x); - float2 y = convert_float2(y); - float2 abs_x = fabs(x); - float2 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(float2 x) -{ - return convert_double2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(float2 x) -{ - double2 r = convert_double2(x); - float2 y = convert_float2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(float2 x) -{ - double2 r = convert_double2(x); - float2 y = convert_float2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(float3 x) -{ - double3 r = convert_double3(x); - float3 y = convert_float3(y); - float3 abs_x = fabs(x); - float3 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(float3 x) -{ - return convert_double3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(float3 x) -{ - double3 r = convert_double3(x); - float3 y = convert_float3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(float3 x) -{ - double3 r = convert_double3(x); - float3 y = convert_float3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(float4 x) -{ - double4 r = convert_double4(x); - float4 y = convert_float4(y); - float4 abs_x = fabs(x); - float4 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(float4 x) -{ - return convert_double4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(float4 x) -{ - double4 r = convert_double4(x); - float4 y = convert_float4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(float4 x) -{ - double4 r = convert_double4(x); - float4 y = convert_float4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(float8 x) -{ - double8 r = convert_double8(x); - float8 y = convert_float8(y); - float8 abs_x = fabs(x); - float8 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(float8 x) -{ - return convert_double8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(float8 x) -{ - double8 r = convert_double8(x); - float8 y = convert_float8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(float8 x) -{ - double8 r = convert_double8(x); - float8 y = convert_float8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(float16 x) -{ - double16 r = convert_double16(x); - float16 y = convert_float16(y); - float16 abs_x = fabs(x); - float16 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(float16 x) -{ - return convert_double16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(float16 x) -{ - double16 r = convert_double16(x); - float16 y = convert_float16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(float16 x) -{ - double16 r = convert_double16(x); - float16 y = convert_float16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtz(double x) -{ - float r = convert_float(x); - double y = convert_double(y); - double abs_x = fabs(x); - double abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rte(double x) -{ - return convert_float(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtp(double x) -{ - float r = convert_float(x); - double y = convert_double(y); - return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float convert_float_rtn(double x) -{ - float r = convert_float(x); - double y = convert_double(y); - return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtz(double2 x) -{ - float2 r = convert_float2(x); - double2 y = convert_double2(y); - double2 abs_x = fabs(x); - double2 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rte(double2 x) -{ - return convert_float2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtp(double2 x) -{ - float2 r = convert_float2(x); - double2 y = convert_double2(y); - return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float2 convert_float2_rtn(double2 x) -{ - float2 r = convert_float2(x); - double2 y = convert_double2(y); - return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtz(double3 x) -{ - float3 r = convert_float3(x); - double3 y = convert_double3(y); - double3 abs_x = fabs(x); - double3 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rte(double3 x) -{ - return convert_float3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtp(double3 x) -{ - float3 r = convert_float3(x); - double3 y = convert_double3(y); - return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float3 convert_float3_rtn(double3 x) -{ - float3 r = convert_float3(x); - double3 y = convert_double3(y); - return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtz(double4 x) -{ - float4 r = convert_float4(x); - double4 y = convert_double4(y); - double4 abs_x = fabs(x); - double4 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rte(double4 x) -{ - return convert_float4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtp(double4 x) -{ - float4 r = convert_float4(x); - double4 y = convert_double4(y); - return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float4 convert_float4_rtn(double4 x) -{ - float4 r = convert_float4(x); - double4 y = convert_double4(y); - return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtz(double8 x) -{ - float8 r = convert_float8(x); - double8 y = convert_double8(y); - double8 abs_x = fabs(x); - double8 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rte(double8 x) -{ - return convert_float8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtp(double8 x) -{ - float8 r = convert_float8(x); - double8 y = convert_double8(y); - return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float8 convert_float8_rtn(double8 x) -{ - float8 r = convert_float8(x); - double8 y = convert_double8(y); - return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtz(double16 x) -{ - float16 r = convert_float16(x); - double16 y = convert_double16(y); - double16 abs_x = fabs(x); - double16 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rte(double16 x) -{ - return convert_float16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtp(double16 x) -{ - float16 r = convert_float16(x); - double16 y = convert_double16(y); - return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -float16 convert_float16_rtn(double16 x) -{ - float16 r = convert_float16(x); - double16 y = convert_double16(y); - return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtz(double x) -{ - double r = convert_double(x); - double y = convert_double(y); - double abs_x = fabs(x); - double abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rte(double x) -{ - return convert_double(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtp(double x) -{ - double r = convert_double(x); - double y = convert_double(y); - return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double convert_double_rtn(double x) -{ - double r = convert_double(x); - double y = convert_double(y); - return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtz(double2 x) -{ - double2 r = convert_double2(x); - double2 y = convert_double2(y); - double2 abs_x = fabs(x); - double2 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rte(double2 x) -{ - return convert_double2(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtp(double2 x) -{ - double2 r = convert_double2(x); - double2 y = convert_double2(y); - return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double2 convert_double2_rtn(double2 x) -{ - double2 r = convert_double2(x); - double2 y = convert_double2(y); - return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtz(double3 x) -{ - double3 r = convert_double3(x); - double3 y = convert_double3(y); - double3 abs_x = fabs(x); - double3 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rte(double3 x) -{ - return convert_double3(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtp(double3 x) -{ - double3 r = convert_double3(x); - double3 y = convert_double3(y); - return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double3 convert_double3_rtn(double3 x) -{ - double3 r = convert_double3(x); - double3 y = convert_double3(y); - return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtz(double4 x) -{ - double4 r = convert_double4(x); - double4 y = convert_double4(y); - double4 abs_x = fabs(x); - double4 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rte(double4 x) -{ - return convert_double4(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtp(double4 x) -{ - double4 r = convert_double4(x); - double4 y = convert_double4(y); - return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double4 convert_double4_rtn(double4 x) -{ - double4 r = convert_double4(x); - double4 y = convert_double4(y); - return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtz(double8 x) -{ - double8 r = convert_double8(x); - double8 y = convert_double8(y); - double8 abs_x = fabs(x); - double8 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rte(double8 x) -{ - return convert_double8(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtp(double8 x) -{ - double8 r = convert_double8(x); - double8 y = convert_double8(y); - return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double8 convert_double8_rtn(double8 x) -{ - double8 r = convert_double8(x); - double8 y = convert_double8(y); - return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtz(double16 x) -{ - double16 r = convert_double16(x); - double16 y = convert_double16(y); - double16 abs_x = fabs(x); - double16 abs_y = fabs(y); - return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rte(double16 x) -{ - return convert_double16(x); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtp(double16 x) -{ - double16 r = convert_double16(x); - double16 y = convert_double16(y); - return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); -} -#endif -#ifdef cl_khr_fp64 -_CLC_DEF _CLC_OVERLOAD -double16 convert_double16_rtn(double16 x) -{ - double16 r = convert_double16(x); - double16 y = convert_double16(y); - return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); -} -#endif diff --git a/libclc/generic/lib/gen_convert.py b/libclc/generic/lib/gen_convert.py deleted file mode 100644 index f91a89a3c3215ca1a804f483677a66d47f75898e..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/gen_convert.py +++ /dev/null @@ -1,388 +0,0 @@ -#!/usr/bin/env python3 - -# OpenCL built-in library: type conversion functions -# -# Copyright (c) 2013 Victor Oliveira <victormatheus@gmail.com> -# Copyright (c) 2013 Jesse Towner <jessetowner@lavabit.com> -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -# This script generates the file convert_type.cl, which contains all of the -# OpenCL functions in the form: -# -# convert_<destTypen><_sat><_roundingMode>(<sourceTypen>) - -types = ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong', 'float', 'double'] -int_types = ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong'] -unsigned_types = ['uchar', 'ushort', 'uint', 'ulong'] -float_types = ['float', 'double'] -int64_types = ['long', 'ulong'] -float64_types = ['double'] -vector_sizes = ['', '2', '3', '4', '8', '16'] -half_sizes = [('2',''), ('4','2'), ('8','4'), ('16','8')] - -saturation = ['','_sat'] -rounding_modes = ['_rtz','_rte','_rtp','_rtn'] -float_prefix = {'float':'FLT_', 'double':'DBL_'} -float_suffix = {'float':'f', 'double':''} - -bool_type = {'char' : 'char', - 'uchar' : 'char', - 'short' : 'short', - 'ushort': 'short', - 'int' : 'int', - 'uint' : 'int', - 'long' : 'long', - 'ulong' : 'long', - 'float' : 'int', - 'double' : 'long'} - -unsigned_type = {'char' : 'uchar', - 'uchar' : 'uchar', - 'short' : 'ushort', - 'ushort': 'ushort', - 'int' : 'uint', - 'uint' : 'uint', - 'long' : 'ulong', - 'ulong' : 'ulong'} - -sizeof_type = {'char' : 1, 'uchar' : 1, - 'short' : 2, 'ushort' : 2, - 'int' : 4, 'uint' : 4, - 'long' : 8, 'ulong' : 8, - 'float' : 4, 'double' : 8} - -limit_max = {'char' : 'CHAR_MAX', - 'uchar' : 'UCHAR_MAX', - 'short' : 'SHRT_MAX', - 'ushort': 'USHRT_MAX', - 'int' : 'INT_MAX', - 'uint' : 'UINT_MAX', - 'long' : 'LONG_MAX', - 'ulong' : 'ULONG_MAX'} - -limit_min = {'char' : 'CHAR_MIN', - 'uchar' : '0', - 'short' : 'SHRT_MIN', - 'ushort': '0', - 'int' : 'INT_MIN', - 'uint' : '0', - 'long' : 'LONG_MIN', - 'ulong' : '0'} - -def conditional_guard(src, dst): - int64_count = 0 - float64_count = 0 - if src in int64_types: - int64_count = int64_count +1 - elif src in float64_types: - float64_count = float64_count + 1 - if dst in int64_types: - int64_count = int64_count +1 - elif dst in float64_types: - float64_count = float64_count + 1 - if float64_count > 0 and int64_count > 0: - print("#if defined(cl_khr_fp64) && defined(cles_khr_int64)") - return True - elif float64_count > 0: - print("#ifdef cl_khr_fp64") - return True - elif int64_count > 0: - print("#ifdef cles_khr_int64") - return True - return False - - -print("""/* !!!! AUTOGENERATED FILE generated by convert_type.py !!!!! - - DON'T CHANGE THIS FILE. MAKE YOUR CHANGES TO convert_type.py AND RUN: - $ ./generate-conversion-type-cl.sh - - OpenCL type conversion functions - - Copyright (c) 2013 Victor Oliveira <victormatheus@gmail.com> - Copyright (c) 2013 Jesse Towner <jessetowner@lavabit.com> - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -""") - -# -# Default Conversions -# -# All conversions are in accordance with the OpenCL specification, -# which cites the C99 conversion rules. -# -# Casting from floating point to integer results in conversions -# with truncation, so it should be suitable for the default convert -# functions. -# -# Conversions from integer to floating-point, and floating-point to -# floating-point through casting is done with the default rounding -# mode. While C99 allows dynamically changing the rounding mode -# during runtime, it is not a supported feature in OpenCL according -# to Section 7.1 - Rounding Modes in the OpenCL 1.2 specification. -# -# Therefore, we can assume for optimization purposes that the -# rounding mode is fixed to round-to-nearest-even. Platform target -# authors should ensure that the rounding-control registers remain -# in this state, and that this invariant holds. -# -# Also note, even though the OpenCL specification isn't entirely -# clear on this matter, we implement all rounding mode combinations -# even for integer-to-integer conversions. When such a conversion -# is used, the rounding mode is ignored. -# - -def generate_default_conversion(src, dst, mode): - close_conditional = conditional_guard(src, dst) - - # scalar conversions - print("""_CLC_DEF _CLC_OVERLOAD -{DST} convert_{DST}{M}({SRC} x) -{{ - return ({DST})x; -}} -""".format(SRC=src, DST=dst, M=mode)) - - # vector conversions, done through decomposition to components - for size, half_size in half_sizes: - print("""_CLC_DEF _CLC_OVERLOAD -{DST}{N} convert_{DST}{N}{M}({SRC}{N} x) -{{ - return ({DST}{N})(convert_{DST}{H}(x.lo), convert_{DST}{H}(x.hi)); -}} -""".format(SRC=src, DST=dst, N=size, H=half_size, M=mode)) - - # 3-component vector conversions - print("""_CLC_DEF _CLC_OVERLOAD -{DST}3 convert_{DST}3{M}({SRC}3 x) -{{ - return ({DST}3)(convert_{DST}2(x.s01), convert_{DST}(x.s2)); -}}""".format(SRC=src, DST=dst, M=mode)) - - if close_conditional: - print("#endif") - - -for src in types: - for dst in types: - generate_default_conversion(src, dst, '') - -for src in int_types: - for dst in int_types: - for mode in rounding_modes: - generate_default_conversion(src, dst, mode) - -# -# Saturated Conversions To Integers -# -# These functions are dependent on the unsaturated conversion functions -# generated above, and use clamp, max, min, and select to eliminate -# branching and vectorize the conversions. -# -# Again, as above, we allow all rounding modes for integer-to-integer -# conversions with saturation. -# - -def generate_saturated_conversion(src, dst, size): - # Header - close_conditional = conditional_guard(src, dst) - print("""_CLC_DEF _CLC_OVERLOAD -{DST}{N} convert_{DST}{N}_sat({SRC}{N} x) -{{""".format(DST=dst, SRC=src, N=size)) - - # FIXME: This is a work around for lack of select function with - # signed third argument when the first two arguments are unsigned types. - # We cast to the signed type for sign-extension, then do a bitcast to - # the unsigned type. - if dst in unsigned_types: - bool_prefix = "as_{DST}{N}(convert_{BOOL}{N}".format(DST=dst, BOOL=bool_type[dst], N=size); - bool_suffix = ")" - else: - bool_prefix = "convert_{BOOL}{N}".format(BOOL=bool_type[dst], N=size); - bool_suffix = "" - - # Body - if src == dst: - - # Conversion between same types - print(" return x;") - - elif src in float_types: - - # Conversion from float to int - print(""" {DST}{N} y = convert_{DST}{N}(x); - y = select(y, ({DST}{N}){DST_MIN}, {BP}(x < ({SRC}{N}){DST_MIN}){BS}); - y = select(y, ({DST}{N}){DST_MAX}, {BP}(x > ({SRC}{N}){DST_MAX}){BS}); - return y;""".format(SRC=src, DST=dst, N=size, - DST_MIN=limit_min[dst], DST_MAX=limit_max[dst], - BP=bool_prefix, BS=bool_suffix)) - - else: - - # Integer to integer convesion with sizeof(src) == sizeof(dst) - if sizeof_type[src] == sizeof_type[dst]: - if src in unsigned_types: - print(" x = min(x, ({SRC}){DST_MAX});".format(SRC=src, DST_MAX=limit_max[dst])) - else: - print(" x = max(x, ({SRC})0);".format(SRC=src)) - - # Integer to integer conversion where sizeof(src) > sizeof(dst) - elif sizeof_type[src] > sizeof_type[dst]: - if src in unsigned_types: - print(" x = min(x, ({SRC}){DST_MAX});".format(SRC=src, DST_MAX=limit_max[dst])) - else: - print(" x = clamp(x, ({SRC}){DST_MIN}, ({SRC}){DST_MAX});" - .format(SRC=src, DST_MIN=limit_min[dst], DST_MAX=limit_max[dst])) - - # Integer to integer conversion where sizeof(src) < sizeof(dst) - elif src not in unsigned_types and dst in unsigned_types: - print(" x = max(x, ({SRC})0);".format(SRC=src)) - - print(" return convert_{DST}{N}(x);".format(DST=dst, N=size)) - - # Footer - print("}") - if close_conditional: - print("#endif") - - -for src in types: - for dst in int_types: - for size in vector_sizes: - generate_saturated_conversion(src, dst, size) - - -def generate_saturated_conversion_with_rounding(src, dst, size, mode): - # Header - close_conditional = conditional_guard(src, dst) - - # Body - print("""_CLC_DEF _CLC_OVERLOAD -{DST}{N} convert_{DST}{N}_sat{M}({SRC}{N} x) -{{ - return convert_{DST}{N}_sat(x); -}} -""".format(DST=dst, SRC=src, N=size, M=mode)) - - # Footer - if close_conditional: - print("#endif") - - -for src in int_types: - for dst in int_types: - for size in vector_sizes: - for mode in rounding_modes: - generate_saturated_conversion_with_rounding(src, dst, size, mode) - -# -# Conversions To/From Floating-Point With Rounding -# -# Note that we assume as above that casts from floating-point to -# integer are done with truncation, and that the default rounding -# mode is fixed to round-to-nearest-even, as per C99 and OpenCL -# rounding rules. -# -# These functions rely on the use of abs, ceil, fabs, floor, -# nextafter, sign, rint and the above generated conversion functions. -# -# Only conversions to integers can have saturation. -# - -def generate_float_conversion(src, dst, size, mode, sat): - # Header - close_conditional = conditional_guard(src, dst) - print("""_CLC_DEF _CLC_OVERLOAD -{DST}{N} convert_{DST}{N}{S}{M}({SRC}{N} x) -{{""".format(SRC=src, DST=dst, N=size, M=mode, S=sat)) - - # Perform conversion - if dst in int_types: - if mode == '_rte': - print(" x = rint(x);"); - elif mode == '_rtp': - print(" x = ceil(x);"); - elif mode == '_rtn': - print(" x = floor(x);"); - print(" return convert_{DST}{N}{S}(x);".format(DST=dst, N=size, S=sat)) - elif mode == '_rte': - print(" return convert_{DST}{N}(x);".format(DST=dst, N=size)) - else: - print(" {DST}{N} r = convert_{DST}{N}(x);".format(DST=dst, N=size)) - print(" {SRC}{N} y = convert_{SRC}{N}(y);".format(SRC=src, N=size)) - if mode == '_rtz': - if src in int_types: - print(" {USRC}{N} abs_x = abs(x);".format(USRC=unsigned_type[src], N=size)) - print(" {USRC}{N} abs_y = abs(y);".format(USRC=unsigned_type[src], N=size)) - else: - print(" {SRC}{N} abs_x = fabs(x);".format(SRC=src, N=size)) - print(" {SRC}{N} abs_y = fabs(y);".format(SRC=src, N=size)) - print(" return select(r, nextafter(r, sign(r) * ({DST}{N})-INFINITY), convert_{BOOL}{N}(abs_y > abs_x));" - .format(DST=dst, N=size, BOOL=bool_type[dst])) - if mode == '_rtp': - print(" return select(r, nextafter(r, ({DST}{N})INFINITY), convert_{BOOL}{N}(y < x));" - .format(DST=dst, N=size, BOOL=bool_type[dst])) - if mode == '_rtn': - print(" return select(r, nextafter(r, ({DST}{N})-INFINITY), convert_{BOOL}{N}(y > x));" - .format(DST=dst, N=size, BOOL=bool_type[dst])) - - # Footer - print("}") - if close_conditional: - print("#endif") - - -for src in float_types: - for dst in int_types: - for size in vector_sizes: - for mode in rounding_modes: - for sat in saturation: - generate_float_conversion(src, dst, size, mode, sat) - - -for src in types: - for dst in float_types: - for size in vector_sizes: - for mode in rounding_modes: - generate_float_conversion(src, dst, size, mode, '') diff --git a/libclc/generic/lib/geometric/cross.cl b/libclc/generic/lib/geometric/cross.cl deleted file mode 100644 index 3b4ca6cafae9a8fa4959da9be4ebe2a78d67c4fd..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/geometric/cross.cl +++ /dev/null @@ -1,25 +0,0 @@ -#include <clc/clc.h> - -_CLC_OVERLOAD _CLC_DEF float3 cross(float3 p0, float3 p1) { - return (float3)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, - p0.x*p1.y - p0.y*p1.x); -} - -_CLC_OVERLOAD _CLC_DEF float4 cross(float4 p0, float4 p1) { - return (float4)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, - p0.x*p1.y - p0.y*p1.x, 0.f); -} - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -_CLC_OVERLOAD _CLC_DEF double3 cross(double3 p0, double3 p1) { - return (double3)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, - p0.x*p1.y - p0.y*p1.x); -} - -_CLC_OVERLOAD _CLC_DEF double4 cross(double4 p0, double4 p1) { - return (double4)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, - p0.x*p1.y - p0.y*p1.x, 0.f); -} -#endif diff --git a/libclc/generic/lib/geometric/dot.cl b/libclc/generic/lib/geometric/dot.cl deleted file mode 100644 index 0d6fe6c9a4e8a1d29b8852eedaa11eef855d6b7f..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/geometric/dot.cl +++ /dev/null @@ -1,39 +0,0 @@ -#include <clc/clc.h> - -_CLC_OVERLOAD _CLC_DEF float dot(float p0, float p1) { - return p0*p1; -} - -_CLC_OVERLOAD _CLC_DEF float dot(float2 p0, float2 p1) { - return p0.x*p1.x + p0.y*p1.y; -} - -_CLC_OVERLOAD _CLC_DEF float dot(float3 p0, float3 p1) { - return p0.x*p1.x + p0.y*p1.y + p0.z*p1.z; -} - -_CLC_OVERLOAD _CLC_DEF float dot(float4 p0, float4 p1) { - return p0.x*p1.x + p0.y*p1.y + p0.z*p1.z + p0.w*p1.w; -} - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -_CLC_OVERLOAD _CLC_DEF double dot(double p0, double p1) { - return p0*p1; -} - -_CLC_OVERLOAD _CLC_DEF double dot(double2 p0, double2 p1) { - return p0.x*p1.x + p0.y*p1.y; -} - -_CLC_OVERLOAD _CLC_DEF double dot(double3 p0, double3 p1) { - return p0.x*p1.x + p0.y*p1.y + p0.z*p1.z; -} - -_CLC_OVERLOAD _CLC_DEF double dot(double4 p0, double4 p1) { - return p0.x*p1.x + p0.y*p1.y + p0.z*p1.z + p0.w*p1.w; -} - -#endif diff --git a/libclc/generic/lib/geometric/length.cl b/libclc/generic/lib/geometric/length.cl deleted file mode 100644 index ef087c75f9f1c8f73d555b543ca70980d3950090..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/geometric/length.cl +++ /dev/null @@ -1,8 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <length.inc> -#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/lib/geometric/length.inc b/libclc/generic/lib/geometric/length.inc deleted file mode 100644 index 5faaaffbd6a8b5a33f83def3ce03e54f0b7ae03a..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/geometric/length.inc +++ /dev/null @@ -1,3 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_FLOAT length(__CLC_FLOATN p) { - return native_sqrt(dot(p, p)); -} diff --git a/libclc/generic/lib/geometric/normalize.cl b/libclc/generic/lib/geometric/normalize.cl deleted file mode 100644 index b06b2fe3a4c49cd84d4ed97f1cded0bc7a2868bc..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/geometric/normalize.cl +++ /dev/null @@ -1,8 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <normalize.inc> -#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/lib/geometric/normalize.inc b/libclc/generic/lib/geometric/normalize.inc deleted file mode 100644 index 423ff79fc4e24ea0e5f05c78ad74a6c2fc53a10d..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/geometric/normalize.inc +++ /dev/null @@ -1,3 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_FLOATN normalize(__CLC_FLOATN p) { - return p/length(p); -} diff --git a/libclc/generic/lib/integer/abs.cl b/libclc/generic/lib/integer/abs.cl deleted file mode 100644 index faff8d05fefc7969bfc1e9ca98fad1df5453e44d..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/abs.cl +++ /dev/null @@ -1,4 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <abs.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/abs.inc b/libclc/generic/lib/integer/abs.inc deleted file mode 100644 index cfe7bfecd294fc6b16c0af1f30d989ce816d7664..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/abs.inc +++ /dev/null @@ -1,3 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE abs(__CLC_GENTYPE x) { - return __builtin_astype((__CLC_GENTYPE)(x > (__CLC_GENTYPE)(0) ? x : -x), __CLC_U_GENTYPE); -} diff --git a/libclc/generic/lib/integer/abs_diff.cl b/libclc/generic/lib/integer/abs_diff.cl deleted file mode 100644 index 3d751057819e9093acdb52b31db23f82a8ae98ad..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/abs_diff.cl +++ /dev/null @@ -1,4 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <abs_diff.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/abs_diff.inc b/libclc/generic/lib/integer/abs_diff.inc deleted file mode 100644 index f39c3ff4d3e8ab65347258675669520b9ab76e42..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/abs_diff.inc +++ /dev/null @@ -1,3 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE abs_diff(__CLC_GENTYPE x, __CLC_GENTYPE y) { - return __builtin_astype((__CLC_GENTYPE)(x > y ? x-y : y-x), __CLC_U_GENTYPE); -} diff --git a/libclc/generic/lib/integer/add_sat.cl b/libclc/generic/lib/integer/add_sat.cl deleted file mode 100644 index d4df66db3ede91c1a9050d1ef7bff30c5b602c2d..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/add_sat.cl +++ /dev/null @@ -1,53 +0,0 @@ -#include <clc/clc.h> -#include "../clcmacro.h" - -// From add_sat.ll -_CLC_DECL char __clc_add_sat_s8(char, char); -_CLC_DECL uchar __clc_add_sat_u8(uchar, uchar); -_CLC_DECL short __clc_add_sat_s16(short, short); -_CLC_DECL ushort __clc_add_sat_u16(ushort, ushort); -_CLC_DECL int __clc_add_sat_s32(int, int); -_CLC_DECL uint __clc_add_sat_u32(uint, uint); -_CLC_DECL long __clc_add_sat_s64(long, long); -_CLC_DECL ulong __clc_add_sat_u64(ulong, ulong); - -_CLC_OVERLOAD _CLC_DEF char add_sat(char x, char y) { - return __clc_add_sat_s8(x, y); -} - -_CLC_OVERLOAD _CLC_DEF uchar add_sat(uchar x, uchar y) { - return __clc_add_sat_u8(x, y); -} - -_CLC_OVERLOAD _CLC_DEF short add_sat(short x, short y) { - return __clc_add_sat_s16(x, y); -} - -_CLC_OVERLOAD _CLC_DEF ushort add_sat(ushort x, ushort y) { - return __clc_add_sat_u16(x, y); -} - -_CLC_OVERLOAD _CLC_DEF int add_sat(int x, int y) { - return __clc_add_sat_s32(x, y); -} - -_CLC_OVERLOAD _CLC_DEF uint add_sat(uint x, uint y) { - return __clc_add_sat_u32(x, y); -} - -_CLC_OVERLOAD _CLC_DEF long add_sat(long x, long y) { - return __clc_add_sat_s64(x, y); -} - -_CLC_OVERLOAD _CLC_DEF ulong add_sat(ulong x, ulong y) { - return __clc_add_sat_u64(x, y); -} - -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, add_sat, char, char) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, add_sat, uchar, uchar) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, add_sat, short, short) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ushort, add_sat, ushort, ushort) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, int, add_sat, int, int) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uint, add_sat, uint, uint) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, long, add_sat, long, long) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ulong, add_sat, ulong, ulong) diff --git a/libclc/generic/lib/integer/add_sat_if.ll b/libclc/generic/lib/integer/add_sat_if.ll deleted file mode 100644 index bcbe4c0dd348fa94afaea0e000c88348dbf06b73..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/add_sat_if.ll +++ /dev/null @@ -1,55 +0,0 @@ -declare i8 @__clc_add_sat_impl_s8(i8 %x, i8 %y) - -define i8 @__clc_add_sat_s8(i8 %x, i8 %y) nounwind readnone alwaysinline { - %call = call i8 @__clc_add_sat_impl_s8(i8 %x, i8 %y) - ret i8 %call -} - -declare i8 @__clc_add_sat_impl_u8(i8 %x, i8 %y) - -define i8 @__clc_add_sat_u8(i8 %x, i8 %y) nounwind readnone alwaysinline { - %call = call i8 @__clc_add_sat_impl_u8(i8 %x, i8 %y) - ret i8 %call -} - -declare i16 @__clc_add_sat_impl_s16(i16 %x, i16 %y) - -define i16 @__clc_add_sat_s16(i16 %x, i16 %y) nounwind readnone alwaysinline { - %call = call i16 @__clc_add_sat_impl_s16(i16 %x, i16 %y) - ret i16 %call -} - -declare i16 @__clc_add_sat_impl_u16(i16 %x, i16 %y) - -define i16 @__clc_add_sat_u16(i16 %x, i16 %y) nounwind readnone alwaysinline { - %call = call i16 @__clc_add_sat_impl_u16(i16 %x, i16 %y) - ret i16 %call -} - -declare i32 @__clc_add_sat_impl_s32(i32 %x, i32 %y) - -define i32 @__clc_add_sat_s32(i32 %x, i32 %y) nounwind readnone alwaysinline { - %call = call i32 @__clc_add_sat_impl_s32(i32 %x, i32 %y) - ret i32 %call -} - -declare i32 @__clc_add_sat_impl_u32(i32 %x, i32 %y) - -define i32 @__clc_add_sat_u32(i32 %x, i32 %y) nounwind readnone alwaysinline { - %call = call i32 @__clc_add_sat_impl_u32(i32 %x, i32 %y) - ret i32 %call -} - -declare i64 @__clc_add_sat_impl_s64(i64 %x, i64 %y) - -define i64 @__clc_add_sat_s64(i64 %x, i64 %y) nounwind readnone alwaysinline { - %call = call i64 @__clc_add_sat_impl_s64(i64 %x, i64 %y) - ret i64 %call -} - -declare i64 @__clc_add_sat_impl_u64(i64 %x, i64 %y) - -define i64 @__clc_add_sat_u64(i64 %x, i64 %y) nounwind readnone alwaysinline { - %call = call i64 @__clc_add_sat_impl_u64(i64 %x, i64 %y) - ret i64 %call -} diff --git a/libclc/generic/lib/integer/add_sat_impl.ll b/libclc/generic/lib/integer/add_sat_impl.ll deleted file mode 100644 index c150ecb56b8b54289e4c69195db8685135df1bf7..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/add_sat_impl.ll +++ /dev/null @@ -1,83 +0,0 @@ -declare {i8, i1} @llvm.sadd.with.overflow.i8(i8, i8) -declare {i8, i1} @llvm.uadd.with.overflow.i8(i8, i8) - -define i8 @__clc_add_sat_impl_s8(i8 %x, i8 %y) nounwind readnone alwaysinline { - %call = call {i8, i1} @llvm.sadd.with.overflow.i8(i8 %x, i8 %y) - %res = extractvalue {i8, i1} %call, 0 - %over = extractvalue {i8, i1} %call, 1 - %x.msb = ashr i8 %x, 7 - %x.limit = xor i8 %x.msb, 127 - %sat = select i1 %over, i8 %x.limit, i8 %res - ret i8 %sat -} - -define i8 @__clc_add_sat_impl_u8(i8 %x, i8 %y) nounwind readnone alwaysinline { - %call = call {i8, i1} @llvm.uadd.with.overflow.i8(i8 %x, i8 %y) - %res = extractvalue {i8, i1} %call, 0 - %over = extractvalue {i8, i1} %call, 1 - %sat = select i1 %over, i8 -1, i8 %res - ret i8 %sat -} - -declare {i16, i1} @llvm.sadd.with.overflow.i16(i16, i16) -declare {i16, i1} @llvm.uadd.with.overflow.i16(i16, i16) - -define i16 @__clc_add_sat_impl_s16(i16 %x, i16 %y) nounwind readnone alwaysinline { - %call = call {i16, i1} @llvm.sadd.with.overflow.i16(i16 %x, i16 %y) - %res = extractvalue {i16, i1} %call, 0 - %over = extractvalue {i16, i1} %call, 1 - %x.msb = ashr i16 %x, 15 - %x.limit = xor i16 %x.msb, 32767 - %sat = select i1 %over, i16 %x.limit, i16 %res - ret i16 %sat -} - -define i16 @__clc_add_sat_impl_u16(i16 %x, i16 %y) nounwind readnone alwaysinline { - %call = call {i16, i1} @llvm.uadd.with.overflow.i16(i16 %x, i16 %y) - %res = extractvalue {i16, i1} %call, 0 - %over = extractvalue {i16, i1} %call, 1 - %sat = select i1 %over, i16 -1, i16 %res - ret i16 %sat -} - -declare {i32, i1} @llvm.sadd.with.overflow.i32(i32, i32) -declare {i32, i1} @llvm.uadd.with.overflow.i32(i32, i32) - -define i32 @__clc_add_sat_impl_s32(i32 %x, i32 %y) nounwind readnone alwaysinline { - %call = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %x, i32 %y) - %res = extractvalue {i32, i1} %call, 0 - %over = extractvalue {i32, i1} %call, 1 - %x.msb = ashr i32 %x, 31 - %x.limit = xor i32 %x.msb, 2147483647 - %sat = select i1 %over, i32 %x.limit, i32 %res - ret i32 %sat -} - -define i32 @__clc_add_sat_impl_u32(i32 %x, i32 %y) nounwind readnone alwaysinline { - %call = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %x, i32 %y) - %res = extractvalue {i32, i1} %call, 0 - %over = extractvalue {i32, i1} %call, 1 - %sat = select i1 %over, i32 -1, i32 %res - ret i32 %sat -} - -declare {i64, i1} @llvm.sadd.with.overflow.i64(i64, i64) -declare {i64, i1} @llvm.uadd.with.overflow.i64(i64, i64) - -define i64 @__clc_add_sat_impl_s64(i64 %x, i64 %y) nounwind readnone alwaysinline { - %call = call {i64, i1} @llvm.sadd.with.overflow.i64(i64 %x, i64 %y) - %res = extractvalue {i64, i1} %call, 0 - %over = extractvalue {i64, i1} %call, 1 - %x.msb = ashr i64 %x, 63 - %x.limit = xor i64 %x.msb, 9223372036854775807 - %sat = select i1 %over, i64 %x.limit, i64 %res - ret i64 %sat -} - -define i64 @__clc_add_sat_impl_u64(i64 %x, i64 %y) nounwind readnone alwaysinline { - %call = call {i64, i1} @llvm.uadd.with.overflow.i64(i64 %x, i64 %y) - %res = extractvalue {i64, i1} %call, 0 - %over = extractvalue {i64, i1} %call, 1 - %sat = select i1 %over, i64 -1, i64 %res - ret i64 %sat -} diff --git a/libclc/generic/lib/integer/clz.cl b/libclc/generic/lib/integer/clz.cl deleted file mode 100644 index 17e3fe0147418bfb6b1860151771c07179a87bff..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/clz.cl +++ /dev/null @@ -1,53 +0,0 @@ -#include <clc/clc.h> -#include "../clcmacro.h" - -// From clz.ll -_CLC_DECL char __clc_clz_s8(char); -_CLC_DECL uchar __clc_clz_u8(uchar); -_CLC_DECL short __clc_clz_s16(short); -_CLC_DECL ushort __clc_clz_u16(ushort); -_CLC_DECL int __clc_clz_s32(int); -_CLC_DECL uint __clc_clz_u32(uint); -_CLC_DECL long __clc_clz_s64(long); -_CLC_DECL ulong __clc_clz_u64(ulong); - -_CLC_OVERLOAD _CLC_DEF char clz(char x) { - return __clc_clz_s8(x); -} - -_CLC_OVERLOAD _CLC_DEF uchar clz(uchar x) { - return __clc_clz_u8(x); -} - -_CLC_OVERLOAD _CLC_DEF short clz(short x) { - return __clc_clz_s16(x); -} - -_CLC_OVERLOAD _CLC_DEF ushort clz(ushort x) { - return __clc_clz_u16(x); -} - -_CLC_OVERLOAD _CLC_DEF int clz(int x) { - return __clc_clz_s32(x); -} - -_CLC_OVERLOAD _CLC_DEF uint clz(uint x) { - return __clc_clz_u32(x); -} - -_CLC_OVERLOAD _CLC_DEF long clz(long x) { - return __clc_clz_s64(x); -} - -_CLC_OVERLOAD _CLC_DEF ulong clz(ulong x) { - return __clc_clz_u64(x); -} - -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, clz, char) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, clz, uchar) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, clz, short) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ushort, clz, ushort) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, int, clz, int) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uint, clz, uint) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, long, clz, long) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ulong, clz, ulong) diff --git a/libclc/generic/lib/integer/clz_if.ll b/libclc/generic/lib/integer/clz_if.ll deleted file mode 100644 index 23dfc74a8a8226fcb3c7c67bb3a7319d532f21f5..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/clz_if.ll +++ /dev/null @@ -1,55 +0,0 @@ -declare i8 @__clc_clz_impl_s8(i8 %x) - -define i8 @__clc_clz_s8(i8 %x) nounwind readnone alwaysinline { - %call = call i8 @__clc_clz_impl_s8(i8 %x) - ret i8 %call -} - -declare i8 @__clc_clz_impl_u8(i8 %x) - -define i8 @__clc_clz_u8(i8 %x) nounwind readnone alwaysinline { - %call = call i8 @__clc_clz_impl_u8(i8 %x) - ret i8 %call -} - -declare i16 @__clc_clz_impl_s16(i16 %x) - -define i16 @__clc_clz_s16(i16 %x) nounwind readnone alwaysinline { - %call = call i16 @__clc_clz_impl_s16(i16 %x) - ret i16 %call -} - -declare i16 @__clc_clz_impl_u16(i16 %x) - -define i16 @__clc_clz_u16(i16 %x) nounwind readnone alwaysinline { - %call = call i16 @__clc_clz_impl_u16(i16 %x) - ret i16 %call -} - -declare i32 @__clc_clz_impl_s32(i32 %x) - -define i32 @__clc_clz_s32(i32 %x) nounwind readnone alwaysinline { - %call = call i32 @__clc_clz_impl_s32(i32 %x) - ret i32 %call -} - -declare i32 @__clc_clz_impl_u32(i32 %x) - -define i32 @__clc_clz_u32(i32 %x) nounwind readnone alwaysinline { - %call = call i32 @__clc_clz_impl_u32(i32 %x) - ret i32 %call -} - -declare i64 @__clc_clz_impl_s64(i64 %x) - -define i64 @__clc_clz_s64(i64 %x) nounwind readnone alwaysinline { - %call = call i64 @__clc_clz_impl_s64(i64 %x) - ret i64 %call -} - -declare i64 @__clc_clz_impl_u64(i64 %x) - -define i64 @__clc_clz_u64(i64 %x) nounwind readnone alwaysinline { - %call = call i64 @__clc_clz_impl_u64(i64 %x) - ret i64 %call -} diff --git a/libclc/generic/lib/integer/clz_impl.ll b/libclc/generic/lib/integer/clz_impl.ll deleted file mode 100644 index b5c3d98ae4188f535ac62abfdf06276e8d223db8..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/clz_impl.ll +++ /dev/null @@ -1,44 +0,0 @@ -declare i8 @llvm.ctlz.i8(i8, i1) -declare i16 @llvm.ctlz.i16(i16, i1) -declare i32 @llvm.ctlz.i32(i32, i1) -declare i64 @llvm.ctlz.i64(i64, i1) - -define i8 @__clc_clz_impl_s8(i8 %x) nounwind readnone alwaysinline { - %call = call i8 @llvm.ctlz.i8(i8 %x, i1 0) - ret i8 %call -} - -define i8 @__clc_clz_impl_u8(i8 %x) nounwind readnone alwaysinline { - %call = call i8 @llvm.ctlz.i8(i8 %x, i1 0) - ret i8 %call -} - -define i16 @__clc_clz_impl_s16(i16 %x) nounwind readnone alwaysinline { - %call = call i16 @llvm.ctlz.i16(i16 %x, i1 0) - ret i16 %call -} - -define i16 @__clc_clz_impl_u16(i16 %x) nounwind readnone alwaysinline { - %call = call i16 @llvm.ctlz.i16(i16 %x, i1 0) - ret i16 %call -} - -define i32 @__clc_clz_impl_s32(i32 %x) nounwind readnone alwaysinline { - %call = call i32 @llvm.ctlz.i32(i32 %x, i1 0) - ret i32 %call -} - -define i32 @__clc_clz_impl_u32(i32 %x) nounwind readnone alwaysinline { - %call = call i32 @llvm.ctlz.i32(i32 %x, i1 0) - ret i32 %call -} - -define i64 @__clc_clz_impl_s64(i64 %x) nounwind readnone alwaysinline { - %call = call i64 @llvm.ctlz.i64(i64 %x, i1 0) - ret i64 %call -} - -define i64 @__clc_clz_impl_u64(i64 %x) nounwind readnone alwaysinline { - %call = call i64 @llvm.ctlz.i64(i64 %x, i1 0) - ret i64 %call -} diff --git a/libclc/generic/lib/integer/hadd.cl b/libclc/generic/lib/integer/hadd.cl deleted file mode 100644 index 749026e5a8ad8183fff80fd81c01c4aa167e32b7..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/hadd.cl +++ /dev/null @@ -1,4 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <hadd.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/hadd.inc b/libclc/generic/lib/integer/hadd.inc deleted file mode 100644 index ea59d9bd7db5f83b3d8195b1280109d0f0578e0c..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/hadd.inc +++ /dev/null @@ -1,6 +0,0 @@ -//hadd = (x+y)>>1 -//This can be simplified to x>>1 + y>>1 + (1 if both x and y have the 1s bit set) -//This saves us having to do any checks for overflow in the addition sum -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE hadd(__CLC_GENTYPE x, __CLC_GENTYPE y) { - return (x>>(__CLC_GENTYPE)1)+(y>>(__CLC_GENTYPE)1)+(x&y&(__CLC_GENTYPE)1); -} diff --git a/libclc/generic/lib/integer/mad24.cl b/libclc/generic/lib/integer/mad24.cl deleted file mode 100644 index e29e99f28b56fcc961b09909e81649765cdce105..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/mad24.cl +++ /dev/null @@ -1,4 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <mad24.inc> -#include <clc/integer/integer-gentype.inc> diff --git a/libclc/generic/lib/integer/mad24.inc b/libclc/generic/lib/integer/mad24.inc deleted file mode 100644 index 902b0aafe4c8741554a0997ea36138ee45b183a5..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/mad24.inc +++ /dev/null @@ -1,3 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mad24(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE z){ - return mul24(x, y) + z; -} diff --git a/libclc/generic/lib/integer/mul24.cl b/libclc/generic/lib/integer/mul24.cl deleted file mode 100644 index 8aedca64b85905a1383608cb04c254e39c37045c..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/mul24.cl +++ /dev/null @@ -1,4 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <mul24.inc> -#include <clc/integer/integer-gentype.inc> diff --git a/libclc/generic/lib/integer/mul24.inc b/libclc/generic/lib/integer/mul24.inc deleted file mode 100644 index 95a2f1d6f31baba1cabf93dfe6bcd320799bee7a..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/mul24.inc +++ /dev/null @@ -1,11 +0,0 @@ - -// We need to use shifts here in order to mantain the sign bit for signed -// integers. The compiler should optimize this to (x & 0x00FFFFFF) for -// unsigned integers. -#define CONVERT_TO_24BIT(x) (((x) << 8) >> 8) - -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mul24(__CLC_GENTYPE x, __CLC_GENTYPE y){ - return CONVERT_TO_24BIT(x) * CONVERT_TO_24BIT(y); -} - -#undef CONVERT_TO_24BIT diff --git a/libclc/generic/lib/integer/mul_hi.cl b/libclc/generic/lib/integer/mul_hi.cl deleted file mode 100644 index 174d893afb14f9ad5d8ac902b5ddf8d25dc13009..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/mul_hi.cl +++ /dev/null @@ -1,109 +0,0 @@ -#include <clc/clc.h> - -//For all types EXCEPT long, which is implemented separately -#define __CLC_MUL_HI_IMPL(BGENTYPE, GENTYPE, GENSIZE) \ - _CLC_OVERLOAD _CLC_DEF GENTYPE mul_hi(GENTYPE x, GENTYPE y){ \ - return (GENTYPE)(((BGENTYPE)x * (BGENTYPE)y) >> GENSIZE); \ - } \ - -//FOIL-based long mul_hi -// -// Summary: Treat mul_hi(long x, long y) as: -// (a+b) * (c+d) where a and c are the high-order parts of x and y respectively -// and b and d are the low-order parts of x and y. -// Thinking back to algebra, we use FOIL to do the work. - -_CLC_OVERLOAD _CLC_DEF long mul_hi(long x, long y){ - long f, o, i; - ulong l; - - //Move the high/low halves of x/y into the lower 32-bits of variables so - //that we can multiply them without worrying about overflow. - long x_hi = x >> 32; - long x_lo = x & UINT_MAX; - long y_hi = y >> 32; - long y_lo = y & UINT_MAX; - - //Multiply all of the components according to FOIL method - f = x_hi * y_hi; - o = x_hi * y_lo; - i = x_lo * y_hi; - l = x_lo * y_lo; - - //Now add the components back together in the following steps: - //F: doesn't need to be modified - //O/I: Need to be added together. - //L: Shift right by 32-bits, then add into the sum of O and I - //Once O/I/L are summed up, then shift the sum by 32-bits and add to F. - // - //We use hadd to give us a bit of extra precision for the intermediate sums - //but as a result, we shift by 31 bits instead of 32 - return (long)(f + (hadd(o, (i + (long)((ulong)l>>32))) >> 31)); -} - -_CLC_OVERLOAD _CLC_DEF ulong mul_hi(ulong x, ulong y){ - ulong f, o, i; - ulong l; - - //Move the high/low halves of x/y into the lower 32-bits of variables so - //that we can multiply them without worrying about overflow. - ulong x_hi = x >> 32; - ulong x_lo = x & UINT_MAX; - ulong y_hi = y >> 32; - ulong y_lo = y & UINT_MAX; - - //Multiply all of the components according to FOIL method - f = x_hi * y_hi; - o = x_hi * y_lo; - i = x_lo * y_hi; - l = x_lo * y_lo; - - //Now add the components back together, taking care to respect the fact that: - //F: doesn't need to be modified - //O/I: Need to be added together. - //L: Shift right by 32-bits, then add into the sum of O and I - //Once O/I/L are summed up, then shift the sum by 32-bits and add to F. - // - //We use hadd to give us a bit of extra precision for the intermediate sums - //but as a result, we shift by 31 bits instead of 32 - return (f + (hadd(o, (i + (l>>32))) >> 31)); -} - -#define __CLC_MUL_HI_VEC(GENTYPE) \ - _CLC_OVERLOAD _CLC_DEF GENTYPE##2 mul_hi(GENTYPE##2 x, GENTYPE##2 y){ \ - return (GENTYPE##2){mul_hi(x.s0, y.s0), mul_hi(x.s1, y.s1)}; \ - } \ - _CLC_OVERLOAD _CLC_DEF GENTYPE##3 mul_hi(GENTYPE##3 x, GENTYPE##3 y){ \ - return (GENTYPE##3){mul_hi(x.s0, y.s0), mul_hi(x.s1, y.s1), mul_hi(x.s2, y.s2)}; \ - } \ - _CLC_OVERLOAD _CLC_DEF GENTYPE##4 mul_hi(GENTYPE##4 x, GENTYPE##4 y){ \ - return (GENTYPE##4){mul_hi(x.lo, y.lo), mul_hi(x.hi, y.hi)}; \ - } \ - _CLC_OVERLOAD _CLC_DEF GENTYPE##8 mul_hi(GENTYPE##8 x, GENTYPE##8 y){ \ - return (GENTYPE##8){mul_hi(x.lo, y.lo), mul_hi(x.hi, y.hi)}; \ - } \ - _CLC_OVERLOAD _CLC_DEF GENTYPE##16 mul_hi(GENTYPE##16 x, GENTYPE##16 y){ \ - return (GENTYPE##16){mul_hi(x.lo, y.lo), mul_hi(x.hi, y.hi)}; \ - } \ - -#define __CLC_MUL_HI_DEC_IMPL(BTYPE, TYPE, BITS) \ - __CLC_MUL_HI_IMPL(BTYPE, TYPE, BITS) \ - __CLC_MUL_HI_VEC(TYPE) - -#define __CLC_MUL_HI_TYPES() \ - __CLC_MUL_HI_DEC_IMPL(short, char, 8) \ - __CLC_MUL_HI_DEC_IMPL(ushort, uchar, 8) \ - __CLC_MUL_HI_DEC_IMPL(int, short, 16) \ - __CLC_MUL_HI_DEC_IMPL(uint, ushort, 16) \ - __CLC_MUL_HI_DEC_IMPL(long, int, 32) \ - __CLC_MUL_HI_DEC_IMPL(ulong, uint, 32) \ - __CLC_MUL_HI_VEC(long) \ - __CLC_MUL_HI_VEC(ulong) - -__CLC_MUL_HI_TYPES() - -#undef __CLC_MUL_HI_TYPES -#undef __CLC_MUL_HI_DEC_IMPL -#undef __CLC_MUL_HI_IMPL -#undef __CLC_MUL_HI_VEC -#undef __CLC_B32 diff --git a/libclc/generic/lib/integer/rhadd.cl b/libclc/generic/lib/integer/rhadd.cl deleted file mode 100644 index c985870f7c7a24423e5d2cffc53abb813ebf0cfc..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/rhadd.cl +++ /dev/null @@ -1,4 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <rhadd.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/rhadd.inc b/libclc/generic/lib/integer/rhadd.inc deleted file mode 100644 index 3d6076874808e63ad86149df01a1cb8ec825799b..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/rhadd.inc +++ /dev/null @@ -1,6 +0,0 @@ -//rhadd = (x+y+1)>>1 -//This can be simplified to x>>1 + y>>1 + (1 if either x or y have the 1s bit set) -//This saves us having to do any checks for overflow in the addition sums -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE rhadd(__CLC_GENTYPE x, __CLC_GENTYPE y) { - return (x>>(__CLC_GENTYPE)1)+(y>>(__CLC_GENTYPE)1)+((x&(__CLC_GENTYPE)1)|(y&(__CLC_GENTYPE)1)); -} diff --git a/libclc/generic/lib/integer/rotate.cl b/libclc/generic/lib/integer/rotate.cl deleted file mode 100644 index 27ce515c729331bc4edc794b64330896b10fb72a..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/rotate.cl +++ /dev/null @@ -1,4 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <rotate.inc> -#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/rotate.inc b/libclc/generic/lib/integer/rotate.inc deleted file mode 100644 index 33bb0a85241d20be989c3b9145dd21b60ff3b44c..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/rotate.inc +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Not necessarily optimal... but it produces correct results (at least for int) - * If we're lucky, LLVM will recognize the pattern and produce rotate - * instructions: - * http://llvm.1065342.n5.nabble.com/rotate-td47679.html - * - * Eventually, someone should feel free to implement an llvm-specific version - */ - -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE rotate(__CLC_GENTYPE x, __CLC_GENTYPE n){ - //Try to avoid extra work if someone's spinning the value through multiple - //full rotations - n = n % (__CLC_GENTYPE)__CLC_GENSIZE; - -#ifdef __CLC_SCALAR - if (n > 0){ - return (x << n) | (((__CLC_U_GENTYPE)x) >> (__CLC_GENSIZE - n)); - } else if (n == 0){ - return x; - } else { - return ( (((__CLC_U_GENTYPE)x) >> -n) | (x << (__CLC_GENSIZE + n)) ); - } -#else - //XXX: There's a lot of __builtin_astype calls to cast everything to - // unsigned ... This should be improved so that if __CLC_GENTYPE==__CLC_U_GENTYPE, no - // casts are required. - - __CLC_U_GENTYPE x_1 = __builtin_astype(x, __CLC_U_GENTYPE); - - //XXX: Is (__CLC_U_GENTYPE >> S__CLC_GENTYPE) | (__CLC_U_GENTYPE << S__CLC_GENTYPE) legal? - // If so, then combine the amt and shifts into a single set of statements - - __CLC_U_GENTYPE amt; - amt = (n < (__CLC_GENTYPE)0 ? __builtin_astype((__CLC_GENTYPE)0-n, __CLC_U_GENTYPE) : (__CLC_U_GENTYPE)0); - x_1 = (x_1 >> amt) | (x_1 << ((__CLC_U_GENTYPE)__CLC_GENSIZE - amt)); - - amt = (n < (__CLC_GENTYPE)0 ? (__CLC_U_GENTYPE)0 : __builtin_astype(n, __CLC_U_GENTYPE)); - x_1 = (x_1 << amt) | (x_1 >> ((__CLC_U_GENTYPE)__CLC_GENSIZE - amt)); - - return __builtin_astype(x_1, __CLC_GENTYPE); -#endif -} diff --git a/libclc/generic/lib/integer/sub_sat.cl b/libclc/generic/lib/integer/sub_sat.cl deleted file mode 100644 index 6b42cc86a74cd519dcb57313313674715e1b057f..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/sub_sat.cl +++ /dev/null @@ -1,53 +0,0 @@ -#include <clc/clc.h> -#include "../clcmacro.h" - -// From sub_sat.ll -_CLC_DECL char __clc_sub_sat_s8(char, char); -_CLC_DECL uchar __clc_sub_sat_u8(uchar, uchar); -_CLC_DECL short __clc_sub_sat_s16(short, short); -_CLC_DECL ushort __clc_sub_sat_u16(ushort, ushort); -_CLC_DECL int __clc_sub_sat_s32(int, int); -_CLC_DECL uint __clc_sub_sat_u32(uint, uint); -_CLC_DECL long __clc_sub_sat_s64(long, long); -_CLC_DECL ulong __clc_sub_sat_u64(ulong, ulong); - -_CLC_OVERLOAD _CLC_DEF char sub_sat(char x, char y) { - return __clc_sub_sat_s8(x, y); -} - -_CLC_OVERLOAD _CLC_DEF uchar sub_sat(uchar x, uchar y) { - return __clc_sub_sat_u8(x, y); -} - -_CLC_OVERLOAD _CLC_DEF short sub_sat(short x, short y) { - return __clc_sub_sat_s16(x, y); -} - -_CLC_OVERLOAD _CLC_DEF ushort sub_sat(ushort x, ushort y) { - return __clc_sub_sat_u16(x, y); -} - -_CLC_OVERLOAD _CLC_DEF int sub_sat(int x, int y) { - return __clc_sub_sat_s32(x, y); -} - -_CLC_OVERLOAD _CLC_DEF uint sub_sat(uint x, uint y) { - return __clc_sub_sat_u32(x, y); -} - -_CLC_OVERLOAD _CLC_DEF long sub_sat(long x, long y) { - return __clc_sub_sat_s64(x, y); -} - -_CLC_OVERLOAD _CLC_DEF ulong sub_sat(ulong x, ulong y) { - return __clc_sub_sat_u64(x, y); -} - -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, sub_sat, char, char) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, sub_sat, uchar, uchar) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, sub_sat, short, short) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ushort, sub_sat, ushort, ushort) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, int, sub_sat, int, int) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uint, sub_sat, uint, uint) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, long, sub_sat, long, long) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ulong, sub_sat, ulong, ulong) diff --git a/libclc/generic/lib/integer/sub_sat_if.ll b/libclc/generic/lib/integer/sub_sat_if.ll deleted file mode 100644 index 7252574b5b8e5638480de0e0ec89591441b48787..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/sub_sat_if.ll +++ /dev/null @@ -1,55 +0,0 @@ -declare i8 @__clc_sub_sat_impl_s8(i8 %x, i8 %y) - -define i8 @__clc_sub_sat_s8(i8 %x, i8 %y) nounwind readnone alwaysinline { - %call = call i8 @__clc_sub_sat_impl_s8(i8 %x, i8 %y) - ret i8 %call -} - -declare i8 @__clc_sub_sat_impl_u8(i8 %x, i8 %y) - -define i8 @__clc_sub_sat_u8(i8 %x, i8 %y) nounwind readnone alwaysinline { - %call = call i8 @__clc_sub_sat_impl_u8(i8 %x, i8 %y) - ret i8 %call -} - -declare i16 @__clc_sub_sat_impl_s16(i16 %x, i16 %y) - -define i16 @__clc_sub_sat_s16(i16 %x, i16 %y) nounwind readnone alwaysinline { - %call = call i16 @__clc_sub_sat_impl_s16(i16 %x, i16 %y) - ret i16 %call -} - -declare i16 @__clc_sub_sat_impl_u16(i16 %x, i16 %y) - -define i16 @__clc_sub_sat_u16(i16 %x, i16 %y) nounwind readnone alwaysinline { - %call = call i16 @__clc_sub_sat_impl_u16(i16 %x, i16 %y) - ret i16 %call -} - -declare i32 @__clc_sub_sat_impl_s32(i32 %x, i32 %y) - -define i32 @__clc_sub_sat_s32(i32 %x, i32 %y) nounwind readnone alwaysinline { - %call = call i32 @__clc_sub_sat_impl_s32(i32 %x, i32 %y) - ret i32 %call -} - -declare i32 @__clc_sub_sat_impl_u32(i32 %x, i32 %y) - -define i32 @__clc_sub_sat_u32(i32 %x, i32 %y) nounwind readnone alwaysinline { - %call = call i32 @__clc_sub_sat_impl_u32(i32 %x, i32 %y) - ret i32 %call -} - -declare i64 @__clc_sub_sat_impl_s64(i64 %x, i64 %y) - -define i64 @__clc_sub_sat_s64(i64 %x, i64 %y) nounwind readnone alwaysinline { - %call = call i64 @__clc_sub_sat_impl_s64(i64 %x, i64 %y) - ret i64 %call -} - -declare i64 @__clc_sub_sat_impl_u64(i64 %x, i64 %y) - -define i64 @__clc_sub_sat_u64(i64 %x, i64 %y) nounwind readnone alwaysinline { - %call = call i64 @__clc_sub_sat_impl_u64(i64 %x, i64 %y) - ret i64 %call -} diff --git a/libclc/generic/lib/integer/sub_sat_impl.ll b/libclc/generic/lib/integer/sub_sat_impl.ll deleted file mode 100644 index e82b632f43b41736c1fab2fa4593db311726467a..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/sub_sat_impl.ll +++ /dev/null @@ -1,83 +0,0 @@ -declare {i8, i1} @llvm.ssub.with.overflow.i8(i8, i8) -declare {i8, i1} @llvm.usub.with.overflow.i8(i8, i8) - -define i8 @__clc_sub_sat_impl_s8(i8 %x, i8 %y) nounwind readnone alwaysinline { - %call = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 %x, i8 %y) - %res = extractvalue {i8, i1} %call, 0 - %over = extractvalue {i8, i1} %call, 1 - %x.msb = ashr i8 %x, 7 - %x.limit = xor i8 %x.msb, 127 - %sat = select i1 %over, i8 %x.limit, i8 %res - ret i8 %sat -} - -define i8 @__clc_sub_sat_impl_u8(i8 %x, i8 %y) nounwind readnone alwaysinline { - %call = call {i8, i1} @llvm.usub.with.overflow.i8(i8 %x, i8 %y) - %res = extractvalue {i8, i1} %call, 0 - %over = extractvalue {i8, i1} %call, 1 - %sat = select i1 %over, i8 0, i8 %res - ret i8 %sat -} - -declare {i16, i1} @llvm.ssub.with.overflow.i16(i16, i16) -declare {i16, i1} @llvm.usub.with.overflow.i16(i16, i16) - -define i16 @__clc_sub_sat_impl_s16(i16 %x, i16 %y) nounwind readnone alwaysinline { - %call = call {i16, i1} @llvm.ssub.with.overflow.i16(i16 %x, i16 %y) - %res = extractvalue {i16, i1} %call, 0 - %over = extractvalue {i16, i1} %call, 1 - %x.msb = ashr i16 %x, 15 - %x.limit = xor i16 %x.msb, 32767 - %sat = select i1 %over, i16 %x.limit, i16 %res - ret i16 %sat -} - -define i16 @__clc_sub_sat_impl_u16(i16 %x, i16 %y) nounwind readnone alwaysinline { - %call = call {i16, i1} @llvm.usub.with.overflow.i16(i16 %x, i16 %y) - %res = extractvalue {i16, i1} %call, 0 - %over = extractvalue {i16, i1} %call, 1 - %sat = select i1 %over, i16 0, i16 %res - ret i16 %sat -} - -declare {i32, i1} @llvm.ssub.with.overflow.i32(i32, i32) -declare {i32, i1} @llvm.usub.with.overflow.i32(i32, i32) - -define i32 @__clc_sub_sat_impl_s32(i32 %x, i32 %y) nounwind readnone alwaysinline { - %call = call {i32, i1} @llvm.ssub.with.overflow.i32(i32 %x, i32 %y) - %res = extractvalue {i32, i1} %call, 0 - %over = extractvalue {i32, i1} %call, 1 - %x.msb = ashr i32 %x, 31 - %x.limit = xor i32 %x.msb, 2147483647 - %sat = select i1 %over, i32 %x.limit, i32 %res - ret i32 %sat -} - -define i32 @__clc_sub_sat_impl_u32(i32 %x, i32 %y) nounwind readnone alwaysinline { - %call = call {i32, i1} @llvm.usub.with.overflow.i32(i32 %x, i32 %y) - %res = extractvalue {i32, i1} %call, 0 - %over = extractvalue {i32, i1} %call, 1 - %sat = select i1 %over, i32 0, i32 %res - ret i32 %sat -} - -declare {i64, i1} @llvm.ssub.with.overflow.i64(i64, i64) -declare {i64, i1} @llvm.usub.with.overflow.i64(i64, i64) - -define i64 @__clc_sub_sat_impl_s64(i64 %x, i64 %y) nounwind readnone alwaysinline { - %call = call {i64, i1} @llvm.ssub.with.overflow.i64(i64 %x, i64 %y) - %res = extractvalue {i64, i1} %call, 0 - %over = extractvalue {i64, i1} %call, 1 - %x.msb = ashr i64 %x, 63 - %x.limit = xor i64 %x.msb, 9223372036854775807 - %sat = select i1 %over, i64 %x.limit, i64 %res - ret i64 %sat -} - -define i64 @__clc_sub_sat_impl_u64(i64 %x, i64 %y) nounwind readnone alwaysinline { - %call = call {i64, i1} @llvm.usub.with.overflow.i64(i64 %x, i64 %y) - %res = extractvalue {i64, i1} %call, 0 - %over = extractvalue {i64, i1} %call, 1 - %sat = select i1 %over, i64 0, i64 %res - ret i64 %sat -} diff --git a/libclc/generic/lib/integer/upsample.cl b/libclc/generic/lib/integer/upsample.cl deleted file mode 100644 index da77315f8f9344a38bf0adcbdeec00fd4dbf6f14..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/integer/upsample.cl +++ /dev/null @@ -1,34 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_UPSAMPLE_IMPL(BGENTYPE, GENTYPE, UGENTYPE, GENSIZE) \ - _CLC_OVERLOAD _CLC_DEF BGENTYPE upsample(GENTYPE hi, UGENTYPE lo){ \ - return ((BGENTYPE)hi << GENSIZE) | lo; \ - } \ - _CLC_OVERLOAD _CLC_DEF BGENTYPE##2 upsample(GENTYPE##2 hi, UGENTYPE##2 lo){ \ - return (BGENTYPE##2){upsample(hi.s0, lo.s0), upsample(hi.s1, lo.s1)}; \ - } \ - _CLC_OVERLOAD _CLC_DEF BGENTYPE##3 upsample(GENTYPE##3 hi, UGENTYPE##3 lo){ \ - return (BGENTYPE##3){upsample(hi.s0, lo.s0), upsample(hi.s1, lo.s1), upsample(hi.s2, lo.s2)}; \ - } \ - _CLC_OVERLOAD _CLC_DEF BGENTYPE##4 upsample(GENTYPE##4 hi, UGENTYPE##4 lo){ \ - return (BGENTYPE##4){upsample(hi.lo, lo.lo), upsample(hi.hi, lo.hi)}; \ - } \ - _CLC_OVERLOAD _CLC_DEF BGENTYPE##8 upsample(GENTYPE##8 hi, UGENTYPE##8 lo){ \ - return (BGENTYPE##8){upsample(hi.lo, lo.lo), upsample(hi.hi, lo.hi)}; \ - } \ - _CLC_OVERLOAD _CLC_DEF BGENTYPE##16 upsample(GENTYPE##16 hi, UGENTYPE##16 lo){ \ - return (BGENTYPE##16){upsample(hi.lo, lo.lo), upsample(hi.hi, lo.hi)}; \ - } \ - -#define __CLC_UPSAMPLE_TYPES() \ - __CLC_UPSAMPLE_IMPL(short, char, uchar, 8) \ - __CLC_UPSAMPLE_IMPL(ushort, uchar, uchar, 8) \ - __CLC_UPSAMPLE_IMPL(int, short, ushort, 16) \ - __CLC_UPSAMPLE_IMPL(uint, ushort, ushort, 16) \ - __CLC_UPSAMPLE_IMPL(long, int, uint, 32) \ - __CLC_UPSAMPLE_IMPL(ulong, uint, uint, 32) \ - -__CLC_UPSAMPLE_TYPES() - -#undef __CLC_UPSAMPLE_TYPES -#undef __CLC_UPSAMPLE_IMPL diff --git a/libclc/generic/lib/math/atan.cl b/libclc/generic/lib/math/atan.cl deleted file mode 100644 index fa3633cef7480fb8fcb5d3c9f890da179bbf7fa4..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/atan.cl +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include "math.h" -#include "../clcmacro.h" - -#include <clc/clc.h> - -_CLC_OVERLOAD _CLC_DEF float atan(float x) -{ - const float piby2 = 1.5707963267948966f; // 0x3ff921fb54442d18 - - uint ux = as_uint(x); - uint aux = ux & EXSIGNBIT_SP32; - uint sx = ux ^ aux; - - float spiby2 = as_float(sx | as_uint(piby2)); - - float v = as_float(aux); - - // Return for NaN - float ret = x; - - // 2^26 <= |x| <= Inf => atan(x) is close to piby2 - ret = aux <= PINFBITPATT_SP32 ? spiby2 : ret; - - // Reduce arguments 2^-19 <= |x| < 2^26 - - // 39/16 <= x < 2^26 - x = -MATH_RECIP(v); - float c = 1.57079632679489655800f; // atan(infinity) - - // 19/16 <= x < 39/16 - int l = aux < 0x401c0000; - float xx = MATH_DIVIDE(v - 1.5f, mad(v, 1.5f, 1.0f)); - x = l ? xx : x; - c = l ? 9.82793723247329054082e-01f : c; // atan(1.5) - - // 11/16 <= x < 19/16 - l = aux < 0x3f980000U; - xx = MATH_DIVIDE(v - 1.0f, 1.0f + v); - x = l ? xx : x; - c = l ? 7.85398163397448278999e-01f : c; // atan(1) - - // 7/16 <= x < 11/16 - l = aux < 0x3f300000; - xx = MATH_DIVIDE(mad(v, 2.0f, -1.0f), 2.0f + v); - x = l ? xx : x; - c = l ? 4.63647609000806093515e-01f : c; // atan(0.5) - - // 2^-19 <= x < 7/16 - l = aux < 0x3ee00000; - x = l ? v : x; - c = l ? 0.0f : c; - - // Core approximation: Remez(2,2) on [-7/16,7/16] - - float s = x * x; - float a = mad(s, - mad(s, 0.470677934286149214138357545549e-2f, 0.192324546402108583211697690500f), - 0.296528598819239217902158651186f); - - float b = mad(s, - mad(s, 0.299309699959659728404442796915f, 0.111072499995399550138837673349e1f), - 0.889585796862432286486651434570f); - - float q = x * s * MATH_DIVIDE(a, b); - - float z = c - (q - x); - float zs = as_float(sx | as_uint(z)); - - ret = aux < 0x4c800000 ? zs : ret; - - // |x| < 2^-19 - ret = aux < 0x36000000 ? as_float(ux) : ret; - return ret; -} - -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, atan, float); - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - - -_CLC_OVERLOAD _CLC_DEF double atan(double x) -{ - const double piby2 = 1.5707963267948966e+00; // 0x3ff921fb54442d18 - - double v = fabs(x); - - // 2^56 > v > 39/16 - double a = -1.0; - double b = v; - // (chi + clo) = arctan(infinity) - double chi = 1.57079632679489655800e+00; - double clo = 6.12323399573676480327e-17; - - double ta = v - 1.5; - double tb = 1.0 + 1.5 * v; - int l = v <= 0x1.38p+1; // 39/16 > v > 19/16 - a = l ? ta : a; - b = l ? tb : b; - // (chi + clo) = arctan(1.5) - chi = l ? 9.82793723247329054082e-01 : chi; - clo = l ? 1.39033110312309953701e-17 : clo; - - ta = v - 1.0; - tb = 1.0 + v; - l = v <= 0x1.3p+0; // 19/16 > v > 11/16 - a = l ? ta : a; - b = l ? tb : b; - // (chi + clo) = arctan(1.) - chi = l ? 7.85398163397448278999e-01 : chi; - clo = l ? 3.06161699786838240164e-17 : clo; - - ta = 2.0 * v - 1.0; - tb = 2.0 + v; - l = v <= 0x1.6p-1; // 11/16 > v > 7/16 - a = l ? ta : a; - b = l ? tb : b; - // (chi + clo) = arctan(0.5) - chi = l ? 4.63647609000806093515e-01 : chi; - clo = l ? 2.26987774529616809294e-17 : clo; - - l = v <= 0x1.cp-2; // v < 7/16 - a = l ? v : a; - b = l ? 1.0 : b;; - chi = l ? 0.0 : chi; - clo = l ? 0.0 : clo; - - // Core approximation: Remez(4,4) on [-7/16,7/16] - double r = a / b; - double s = r * r; - double qn = fma(s, - fma(s, - fma(s, - fma(s, 0.142316903342317766e-3, - 0.304455919504853031e-1), - 0.220638780716667420e0), - 0.447677206805497472e0), - 0.268297920532545909e0); - - double qd = fma(s, - fma(s, - fma(s, - fma(s, 0.389525873944742195e-1, - 0.424602594203847109e0), - 0.141254259931958921e1), - 0.182596787737507063e1), - 0.804893761597637733e0); - - double q = r * s * qn / qd; - r = chi - ((q - clo) - r); - - double z = isnan(x) ? x : piby2; - z = v <= 0x1.0p+56 ? r : z; - z = v < 0x1.0p-26 ? v : z; - return x == v ? z : -z; -} - -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, atan, double); - -#endif // cl_khr_fp64 diff --git a/libclc/generic/lib/math/atan2.cl b/libclc/generic/lib/math/atan2.cl deleted file mode 100644 index 9e5fb587d42235cb3fc756dd0524c978fbe2f9f6..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/atan2.cl +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include "math.h" -#include "../clcmacro.h" - -#include <clc/clc.h> - -_CLC_OVERLOAD _CLC_DEF float atan2(float y, float x) -{ - const float pi = 0x1.921fb6p+1f; - const float piby2 = 0x1.921fb6p+0f; - const float piby4 = 0x1.921fb6p-1f; - const float threepiby4 = 0x1.2d97c8p+1f; - - float ax = fabs(x); - float ay = fabs(y); - float v = min(ax, ay); - float u = max(ax, ay); - - // Scale since u could be large, as in "regular" divide - float s = u > 0x1.0p+96f ? 0x1.0p-32f : 1.0f; - float vbyu = s * MATH_DIVIDE(v, s*u); - - float vbyu2 = vbyu * vbyu; - -#define USE_2_2_APPROXIMATION -#if defined USE_2_2_APPROXIMATION - float p = mad(vbyu2, mad(vbyu2, -0x1.7e1f78p-9f, -0x1.7d1b98p-3f), -0x1.5554d0p-2f) * vbyu2 * vbyu; - float q = mad(vbyu2, mad(vbyu2, 0x1.1a714cp-2f, 0x1.287c56p+0f), 1.0f); -#else - float p = mad(vbyu2, mad(vbyu2, -0x1.55cd22p-5f, -0x1.26cf76p-2f), -0x1.55554ep-2f) * vbyu2 * vbyu; - float q = mad(vbyu2, mad(vbyu2, mad(vbyu2, 0x1.9f1304p-5f, 0x1.2656fap-1f), 0x1.76b4b8p+0f), 1.0f); -#endif - - // Octant 0 result - float a = mad(p, MATH_RECIP(q), vbyu); - - // Fix up 3 other octants - float at = piby2 - a; - a = ay > ax ? at : a; - at = pi - a; - a = x < 0.0F ? at : a; - - // y == 0 => 0 for x >= 0, pi for x < 0 - at = as_int(x) < 0 ? pi : 0.0f; - a = y == 0.0f ? at : a; - - // if (!FINITE_ONLY()) { - // x and y are +- Inf - at = x > 0.0f ? piby4 : threepiby4; - a = ax == INFINITY & ay == INFINITY ? at : a; - - // x or y is NaN - a = isnan(x) | isnan(y) ? as_float(QNANBITPATT_SP32) : a; - // } - - // Fixup sign and return - return copysign(a, y); -} - -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, atan2, float, float); diff --git a/libclc/generic/lib/math/binary_impl.inc b/libclc/generic/lib/math/binary_impl.inc deleted file mode 100644 index c9bf972426723d724a4b3c32d8082b8110c42c78..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/binary_impl.inc +++ /dev/null @@ -1,22 +0,0 @@ - -#ifndef __CLC_SCALAR - -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x, __CLC_GENTYPE y) { - return FUNCTION_IMPL(x, y); -} - -#endif - -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x, float y) { - __CLC_GENTYPE vec_y = (__CLC_GENTYPE) (y); - return FUNCTION_IMPL(x, vec_y); -} - -#ifdef cl_khr_fp64 - -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x, double y) { - __CLC_GENTYPE vec_y = (__CLC_GENTYPE) (y); - return FUNCTION_IMPL(x, vec_y); -} - -#endif diff --git a/libclc/generic/lib/math/clc_nextafter.cl b/libclc/generic/lib/math/clc_nextafter.cl deleted file mode 100644 index e53837d179fb443154fe8e3cb7a3803ad892a5e6..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/clc_nextafter.cl +++ /dev/null @@ -1,43 +0,0 @@ -#include <clc/clc.h> -#include "../clcmacro.h" - -// This file provides OpenCL C implementations of nextafter for targets that -// don't support the clang builtin. - -#define FLT_NAN 0.0f/0.0f - -#define NEXTAFTER(FLOAT_TYPE, UINT_TYPE, NAN, ZERO, NEXTAFTER_ZERO) \ -_CLC_OVERLOAD _CLC_DEF FLOAT_TYPE __clc_nextafter(FLOAT_TYPE x, FLOAT_TYPE y) { \ - union { \ - FLOAT_TYPE f; \ - UINT_TYPE i; \ - } next; \ - if (isnan(x) || isnan(y)) { \ - return NAN; \ - } \ - if (x == y) { \ - return y; \ - } \ - next.f = x; \ - if (x < y) { \ - next.i++; \ - } else { \ - if (next.f == ZERO) { \ - next.i = NEXTAFTER_ZERO; \ - } else { \ - next.i--; \ - } \ - } \ - return next.f; \ -} - -NEXTAFTER(float, uint, FLT_NAN, 0.0f, 0x80000001) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, __clc_nextafter, float, float) - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#define DBL_NAN 0.0/0.0 - -NEXTAFTER(double, ulong, DBL_NAN, 0.0, 0x8000000000000001) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, __clc_nextafter, double, double) -#endif diff --git a/libclc/generic/lib/math/cos.cl b/libclc/generic/lib/math/cos.cl deleted file mode 100644 index bbd96b42bc1249f97f5a8fb7237e43309d3ef9d5..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/cos.cl +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include <clc/clc.h> - -#include "math.h" -#include "sincos_helpers.h" -#include "../clcmacro.h" - -_CLC_OVERLOAD _CLC_DEF float cos(float x) -{ - int ix = as_int(x); - int ax = ix & 0x7fffffff; - float dx = as_float(ax); - - float r0, r1; - int regn = argReductionS(&r0, &r1, dx); - - float ss = -sinf_piby4(r0, r1); - float cc = cosf_piby4(r0, r1); - - float c = (regn & 1) != 0 ? ss : cc; - c = as_float(as_int(c) ^ ((regn > 1) << 31)); - - c = ax >= PINFBITPATT_SP32 ? as_float(QNANBITPATT_SP32) : c; - - return c; -} - -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, cos, float); - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -#define __CLC_FUNCTION __clc_cos_intrinsic -#define __CLC_INTRINSIC "llvm.cos" -#include <clc/math/unary_intrin.inc> -#undef __CLC_FUNCTION -#undef __CLC_INTRINSIC - -_CLC_OVERLOAD _CLC_DEF double cos(double x) { - return __clc_cos_intrinsic(x); -} - -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, cos, double); - -#endif diff --git a/libclc/generic/lib/math/exp.cl b/libclc/generic/lib/math/exp.cl deleted file mode 100644 index dbf4a930b01d76e94f036415d84e3c05e1904f19..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/exp.cl +++ /dev/null @@ -1,8 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <exp.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/exp.inc b/libclc/generic/lib/math/exp.inc deleted file mode 100644 index 525fb59c99674b45ecf78ae04e86223f3b1b2db7..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/exp.inc +++ /dev/null @@ -1,10 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE exp(__CLC_GENTYPE val) { - // exp(x) = exp2(x * log2(e)) -#if __CLC_FPSIZE == 32 - return exp2(val * M_LOG2E_F); -#elif __CLC_FPSIZE == 64 - return exp2(val * M_LOG2E); -#else -#error unknown _CLC_FPSIZE -#endif -} diff --git a/libclc/generic/lib/math/exp10.cl b/libclc/generic/lib/math/exp10.cl deleted file mode 100644 index c8039cb8dedcc9813c0e9ae1a69cd975dedbfeaf..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/exp10.cl +++ /dev/null @@ -1,8 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <exp10.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/exp10.inc b/libclc/generic/lib/math/exp10.inc deleted file mode 100644 index a592c19487999a43eca2c0932781203a839a0f45..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/exp10.inc +++ /dev/null @@ -1,10 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE exp10(__CLC_GENTYPE val) { - // exp10(x) = exp2(x * log2(10)) -#if __CLC_FPSIZE == 32 - return exp2(val * log2(10.0f)); -#elif __CLC_FPSIZE == 64 - return exp2(val * log2(10.0)); -#else -#error unknown _CLC_FPSIZE -#endif -} diff --git a/libclc/generic/lib/math/fmax.cl b/libclc/generic/lib/math/fmax.cl deleted file mode 100644 index 58583d6767aab89845bf76d882c7782a8fd0da9c..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/fmax.cl +++ /dev/null @@ -1,11 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define FUNCTION __clc_fmax -#define FUNCTION_IMPL(x, y) ((x) < (y) ? (y) : (x)) - -#define __CLC_BODY <binary_impl.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/fmin.cl b/libclc/generic/lib/math/fmin.cl deleted file mode 100644 index a61ad4757289b311e504a3b8e37c96685c3347ae..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/fmin.cl +++ /dev/null @@ -1,11 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define FUNCTION __clc_fmin -#define FUNCTION_IMPL(x, y) ((y) < (x) ? (y) : (x)) - -#define __CLC_BODY <binary_impl.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/hypot.cl b/libclc/generic/lib/math/hypot.cl deleted file mode 100644 index eca042c9153583831903ea207e642fecf631a224..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/hypot.cl +++ /dev/null @@ -1,8 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <hypot.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/hypot.inc b/libclc/generic/lib/math/hypot.inc deleted file mode 100644 index 036cee7e1f065bc90ad8543a891bfb8184279a66..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/hypot.inc +++ /dev/null @@ -1,3 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE hypot(__CLC_GENTYPE x, __CLC_GENTYPE y) { - return sqrt(x*x + y*y); -} diff --git a/libclc/generic/lib/math/mad.cl b/libclc/generic/lib/math/mad.cl deleted file mode 100644 index 6c7b90d150d5285793f5769c85f27bbcac29c53d..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/mad.cl +++ /dev/null @@ -1,8 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <mad.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/mad.inc b/libclc/generic/lib/math/mad.inc deleted file mode 100644 index d32c7839d1b970f73d9a053ad2734077dd6d2ae7..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/mad.inc +++ /dev/null @@ -1,3 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mad(__CLC_GENTYPE a, __CLC_GENTYPE b, __CLC_GENTYPE c) { - return a * b + c; -} diff --git a/libclc/generic/lib/math/math.h b/libclc/generic/lib/math/math.h deleted file mode 100644 index 53ed38a78a566cc49f2a118251bf848b2d40d5cf..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/math.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#define SNAN 0x001 -#define QNAN 0x002 -#define NINF 0x004 -#define NNOR 0x008 -#define NSUB 0x010 -#define NZER 0x020 -#define PZER 0x040 -#define PSUB 0x080 -#define PNOR 0x100 -#define PINF 0x200 - -#define HAVE_HW_FMA32() (1) -#define HAVE_BITALIGN() (0) -#define HAVE_FAST_FMA32() (0) - -#define MATH_DIVIDE(X, Y) ((X) / (Y)) -#define MATH_RECIP(X) (1.0f / (X)) -#define MATH_SQRT(X) sqrt(X) - -#define SIGNBIT_SP32 0x80000000 -#define EXSIGNBIT_SP32 0x7fffffff -#define EXPBITS_SP32 0x7f800000 -#define MANTBITS_SP32 0x007fffff -#define ONEEXPBITS_SP32 0x3f800000 -#define TWOEXPBITS_SP32 0x40000000 -#define HALFEXPBITS_SP32 0x3f000000 -#define IMPBIT_SP32 0x00800000 -#define QNANBITPATT_SP32 0x7fc00000 -#define INDEFBITPATT_SP32 0xffc00000 -#define PINFBITPATT_SP32 0x7f800000 -#define NINFBITPATT_SP32 0xff800000 -#define EXPBIAS_SP32 127 -#define EXPSHIFTBITS_SP32 23 -#define BIASEDEMIN_SP32 1 -#define EMIN_SP32 -126 -#define BIASEDEMAX_SP32 254 -#define EMAX_SP32 127 -#define LAMBDA_SP32 1.0e30 -#define MANTLENGTH_SP32 24 -#define BASEDIGITS_SP32 7 - -#define ALIGNED(x) __attribute__((aligned(x))) diff --git a/libclc/generic/lib/math/mix.cl b/libclc/generic/lib/math/mix.cl deleted file mode 100644 index 294f332e67f2d1c0526dd41f5e677f5f3cb2e429..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/mix.cl +++ /dev/null @@ -1,8 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <mix.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/mix.inc b/libclc/generic/lib/math/mix.inc deleted file mode 100644 index 1e8b936149bbfcb73bb160ca5f1a8b499e756a04..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/mix.inc +++ /dev/null @@ -1,9 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mix(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE a) { - return mad( y - x, a, x ); -} - -#ifndef __CLC_SCALAR -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mix(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_SCALAR_GENTYPE a) { - return mix(x, y, (__CLC_GENTYPE)a); -} -#endif diff --git a/libclc/generic/lib/math/nextafter.cl b/libclc/generic/lib/math/nextafter.cl deleted file mode 100644 index cbe54cd4e2662a7457446c506828aab949952070..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/nextafter.cl +++ /dev/null @@ -1,12 +0,0 @@ -#include <clc/clc.h> -#include "../clcmacro.h" - -_CLC_DEFINE_BINARY_BUILTIN(float, nextafter, __builtin_nextafterf, float, float) - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -_CLC_DEFINE_BINARY_BUILTIN(double, nextafter, __builtin_nextafter, double, double) - -#endif diff --git a/libclc/generic/lib/math/pown.cl b/libclc/generic/lib/math/pown.cl deleted file mode 100644 index f3b27d4ccab7d6b5c6f6feeb9db1e44750c81c16..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/pown.cl +++ /dev/null @@ -1,10 +0,0 @@ -#include <clc/clc.h> -#include "../clcmacro.h" - -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, pown, float, int) - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, pown, double, int) -#endif diff --git a/libclc/generic/lib/math/sin.cl b/libclc/generic/lib/math/sin.cl deleted file mode 100644 index ffc4dd1aa037a1c5a55374484aeff176fd0826b5..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/sin.cl +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include <clc/clc.h> - -#include "math.h" -#include "sincos_helpers.h" -#include "../clcmacro.h" - -_CLC_OVERLOAD _CLC_DEF float sin(float x) -{ - int ix = as_int(x); - int ax = ix & 0x7fffffff; - float dx = as_float(ax); - - float r0, r1; - int regn = argReductionS(&r0, &r1, dx); - - float ss = sinf_piby4(r0, r1); - float cc = cosf_piby4(r0, r1); - - float s = (regn & 1) != 0 ? cc : ss; - s = as_float(as_int(s) ^ ((regn > 1) << 31) ^ (ix ^ ax)); - - s = ax >= PINFBITPATT_SP32 ? as_float(QNANBITPATT_SP32) : s; - - //Subnormals - s = x == 0.0f ? x : s; - - return s; -} - -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, sin, float); - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -#define __CLC_FUNCTION __clc_sin_intrinsic -#define __CLC_INTRINSIC "llvm.sin" -#include <clc/math/unary_intrin.inc> -#undef __CLC_FUNCTION -#undef __CLC_INTRINSIC - -_CLC_OVERLOAD _CLC_DEF double sin(double x) { - return __clc_sin_intrinsic(x); -} - -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, sin, double); - -#endif diff --git a/libclc/generic/lib/math/sincos.cl b/libclc/generic/lib/math/sincos.cl deleted file mode 100644 index eace5adcf16f0dbf19ed42a1989f98901a50a751..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/sincos.cl +++ /dev/null @@ -1,8 +0,0 @@ -#include <clc/clc.h> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <sincos.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/sincos.inc b/libclc/generic/lib/math/sincos.inc deleted file mode 100644 index e97f0f9641c1cfba6f49cc18e51e9940e5c6a0a1..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/sincos.inc +++ /dev/null @@ -1,11 +0,0 @@ -#define __CLC_DECLARE_SINCOS(ADDRSPACE, TYPE) \ - _CLC_OVERLOAD _CLC_DEF TYPE sincos (TYPE x, ADDRSPACE TYPE * cosval) { \ - *cosval = cos(x); \ - return sin(x); \ - } - -__CLC_DECLARE_SINCOS(global, __CLC_GENTYPE) -__CLC_DECLARE_SINCOS(local, __CLC_GENTYPE) -__CLC_DECLARE_SINCOS(private, __CLC_GENTYPE) - -#undef __CLC_DECLARE_SINCOS diff --git a/libclc/generic/lib/math/sincos_helpers.cl b/libclc/generic/lib/math/sincos_helpers.cl deleted file mode 100644 index 1a5f10c8e651c9a44c7037d906e6986a817518bc..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/sincos_helpers.cl +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include <clc/clc.h> - -#include "math.h" -#include "sincos_helpers.h" - -uint bitalign(uint hi, uint lo, uint shift) -{ - return (hi << (32 - shift)) | (lo >> shift); -} - -float sinf_piby4(float x, float y) -{ - // Taylor series for sin(x) is x - x^3/3! + x^5/5! - x^7/7! ... - // = x * (1 - x^2/3! + x^4/5! - x^6/7! ... - // = x * f(w) - // where w = x*x and f(w) = (1 - w/3! + w^2/5! - w^3/7! ... - // We use a minimax approximation of (f(w) - 1) / w - // because this produces an expansion in even powers of x. - - const float c1 = -0.1666666666e0f; - const float c2 = 0.8333331876e-2f; - const float c3 = -0.198400874e-3f; - const float c4 = 0.272500015e-5f; - const float c5 = -2.5050759689e-08f; // 0xb2d72f34 - const float c6 = 1.5896910177e-10f; // 0x2f2ec9d3 - - float z = x * x; - float v = z * x; - float r = mad(z, mad(z, mad(z, mad(z, c6, c5), c4), c3), c2); - float ret = x - mad(v, -c1, mad(z, mad(y, 0.5f, -v*r), -y)); - - return ret; -} - -float cosf_piby4(float x, float y) -{ - // Taylor series for cos(x) is 1 - x^2/2! + x^4/4! - x^6/6! ... - // = f(w) - // where w = x*x and f(w) = (1 - w/2! + w^2/4! - w^3/6! ... - // We use a minimax approximation of (f(w) - 1 + w/2) / (w*w) - // because this produces an expansion in even powers of x. - - const float c1 = 0.416666666e-1f; - const float c2 = -0.138888876e-2f; - const float c3 = 0.248006008e-4f; - const float c4 = -0.2730101334e-6f; - const float c5 = 2.0875723372e-09f; // 0x310f74f6 - const float c6 = -1.1359647598e-11f; // 0xad47d74e - - float z = x * x; - float r = z * mad(z, mad(z, mad(z, mad(z, mad(z, c6, c5), c4), c3), c2), c1); - - // if |x| < 0.3 - float qx = 0.0f; - - int ix = as_int(x) & EXSIGNBIT_SP32; - - // 0.78125 > |x| >= 0.3 - float xby4 = as_float(ix - 0x01000000); - qx = (ix >= 0x3e99999a) & (ix <= 0x3f480000) ? xby4 : qx; - - // x > 0.78125 - qx = ix > 0x3f480000 ? 0.28125f : qx; - - float hz = mad(z, 0.5f, -qx); - float a = 1.0f - qx; - float ret = a - (hz - mad(z, r, -x*y)); - return ret; -} - -void fullMulS(float *hi, float *lo, float a, float b, float bh, float bt) -{ - if (HAVE_HW_FMA32()) { - float ph = a * b; - *hi = ph; - *lo = fma(a, b, -ph); - } else { - float ah = as_float(as_uint(a) & 0xfffff000U); - float at = a - ah; - float ph = a * b; - float pt = mad(at, bt, mad(at, bh, mad(ah, bt, mad(ah, bh, -ph)))); - *hi = ph; - *lo = pt; - } -} - -float removePi2S(float *hi, float *lo, float x) -{ - // 72 bits of pi/2 - const float fpiby2_1 = (float) 0xC90FDA / 0x1.0p+23f; - const float fpiby2_1_h = (float) 0xC90 / 0x1.0p+11f; - const float fpiby2_1_t = (float) 0xFDA / 0x1.0p+23f; - - const float fpiby2_2 = (float) 0xA22168 / 0x1.0p+47f; - const float fpiby2_2_h = (float) 0xA22 / 0x1.0p+35f; - const float fpiby2_2_t = (float) 0x168 / 0x1.0p+47f; - - const float fpiby2_3 = (float) 0xC234C4 / 0x1.0p+71f; - const float fpiby2_3_h = (float) 0xC23 / 0x1.0p+59f; - const float fpiby2_3_t = (float) 0x4C4 / 0x1.0p+71f; - - const float twobypi = 0x1.45f306p-1f; - - float fnpi2 = trunc(mad(x, twobypi, 0.5f)); - - // subtract n * pi/2 from x - float rhead, rtail; - fullMulS(&rhead, &rtail, fnpi2, fpiby2_1, fpiby2_1_h, fpiby2_1_t); - float v = x - rhead; - float rem = v + (((x - v) - rhead) - rtail); - - float rhead2, rtail2; - fullMulS(&rhead2, &rtail2, fnpi2, fpiby2_2, fpiby2_2_h, fpiby2_2_t); - v = rem - rhead2; - rem = v + (((rem - v) - rhead2) - rtail2); - - float rhead3, rtail3; - fullMulS(&rhead3, &rtail3, fnpi2, fpiby2_3, fpiby2_3_h, fpiby2_3_t); - v = rem - rhead3; - - *hi = v + ((rem - v) - rhead3); - *lo = -rtail3; - return fnpi2; -} - -int argReductionSmallS(float *r, float *rr, float x) -{ - float fnpi2 = removePi2S(r, rr, x); - return (int)fnpi2 & 0x3; -} - -#define FULL_MUL(A, B, HI, LO) \ - LO = A * B; \ - HI = mul_hi(A, B) - -#define FULL_MAD(A, B, C, HI, LO) \ - LO = ((A) * (B) + (C)); \ - HI = mul_hi(A, B); \ - HI += LO < C - -int argReductionLargeS(float *r, float *rr, float x) -{ - int xe = (int)(as_uint(x) >> 23) - 127; - uint xm = 0x00800000U | (as_uint(x) & 0x7fffffU); - - // 224 bits of 2/PI: . A2F9836E 4E441529 FC2757D1 F534DDC0 DB629599 3C439041 FE5163AB - const uint b6 = 0xA2F9836EU; - const uint b5 = 0x4E441529U; - const uint b4 = 0xFC2757D1U; - const uint b3 = 0xF534DDC0U; - const uint b2 = 0xDB629599U; - const uint b1 = 0x3C439041U; - const uint b0 = 0xFE5163ABU; - - uint p0, p1, p2, p3, p4, p5, p6, p7, c0, c1; - - FULL_MUL(xm, b0, c0, p0); - FULL_MAD(xm, b1, c0, c1, p1); - FULL_MAD(xm, b2, c1, c0, p2); - FULL_MAD(xm, b3, c0, c1, p3); - FULL_MAD(xm, b4, c1, c0, p4); - FULL_MAD(xm, b5, c0, c1, p5); - FULL_MAD(xm, b6, c1, p7, p6); - - uint fbits = 224 + 23 - xe; - - // shift amount to get 2 lsb of integer part at top 2 bits - // min: 25 (xe=18) max: 134 (xe=127) - uint shift = 256U - 2 - fbits; - - // Shift by up to 134/32 = 4 words - int c = shift > 31; - p7 = c ? p6 : p7; - p6 = c ? p5 : p6; - p5 = c ? p4 : p5; - p4 = c ? p3 : p4; - p3 = c ? p2 : p3; - p2 = c ? p1 : p2; - p1 = c ? p0 : p1; - shift -= (-c) & 32; - - c = shift > 31; - p7 = c ? p6 : p7; - p6 = c ? p5 : p6; - p5 = c ? p4 : p5; - p4 = c ? p3 : p4; - p3 = c ? p2 : p3; - p2 = c ? p1 : p2; - shift -= (-c) & 32; - - c = shift > 31; - p7 = c ? p6 : p7; - p6 = c ? p5 : p6; - p5 = c ? p4 : p5; - p4 = c ? p3 : p4; - p3 = c ? p2 : p3; - shift -= (-c) & 32; - - c = shift > 31; - p7 = c ? p6 : p7; - p6 = c ? p5 : p6; - p5 = c ? p4 : p5; - p4 = c ? p3 : p4; - shift -= (-c) & 32; - - // bitalign cannot handle a shift of 32 - c = shift > 0; - shift = 32 - shift; - uint t7 = bitalign(p7, p6, shift); - uint t6 = bitalign(p6, p5, shift); - uint t5 = bitalign(p5, p4, shift); - p7 = c ? t7 : p7; - p6 = c ? t6 : p6; - p5 = c ? t5 : p5; - - // Get 2 lsb of int part and msb of fraction - int i = p7 >> 29; - - // Scoot up 2 more bits so only fraction remains - p7 = bitalign(p7, p6, 30); - p6 = bitalign(p6, p5, 30); - p5 = bitalign(p5, p4, 30); - - // Subtract 1 if msb of fraction is 1, i.e. fraction >= 0.5 - uint flip = i & 1 ? 0xffffffffU : 0U; - uint sign = i & 1 ? 0x80000000U : 0U; - p7 = p7 ^ flip; - p6 = p6 ^ flip; - p5 = p5 ^ flip; - - // Find exponent and shift away leading zeroes and hidden bit - xe = clz(p7) + 1; - shift = 32 - xe; - p7 = bitalign(p7, p6, shift); - p6 = bitalign(p6, p5, shift); - - // Most significant part of fraction - float q1 = as_float(sign | ((127 - xe) << 23) | (p7 >> 9)); - - // Shift out bits we captured on q1 - p7 = bitalign(p7, p6, 32-23); - - // Get 24 more bits of fraction in another float, there are not long strings of zeroes here - int xxe = clz(p7) + 1; - p7 = bitalign(p7, p6, 32-xxe); - float q0 = as_float(sign | ((127 - (xe + 23 + xxe)) << 23) | (p7 >> 9)); - - // At this point, the fraction q1 + q0 is correct to at least 48 bits - // Now we need to multiply the fraction by pi/2 - // This loses us about 4 bits - // pi/2 = C90 FDA A22 168 C23 4C4 - - const float pio2h = (float)0xc90fda / 0x1.0p+23f; - const float pio2hh = (float)0xc90 / 0x1.0p+11f; - const float pio2ht = (float)0xfda / 0x1.0p+23f; - const float pio2t = (float)0xa22168 / 0x1.0p+47f; - - float rh, rt; - - if (HAVE_HW_FMA32()) { - rh = q1 * pio2h; - rt = fma(q0, pio2h, fma(q1, pio2t, fma(q1, pio2h, -rh))); - } else { - float q1h = as_float(as_uint(q1) & 0xfffff000); - float q1t = q1 - q1h; - rh = q1 * pio2h; - rt = mad(q1t, pio2ht, mad(q1t, pio2hh, mad(q1h, pio2ht, mad(q1h, pio2hh, -rh)))); - rt = mad(q0, pio2h, mad(q1, pio2t, rt)); - } - - float t = rh + rt; - rt = rt - (t - rh); - - *r = t; - *rr = rt; - return ((i >> 1) + (i & 1)) & 0x3; -} - -int argReductionS(float *r, float *rr, float x) -{ - if (x < 0x1.0p+23f) - return argReductionSmallS(r, rr, x); - else - return argReductionLargeS(r, rr, x); -} - diff --git a/libclc/generic/lib/math/sincos_helpers.h b/libclc/generic/lib/math/sincos_helpers.h deleted file mode 100644 index f89c19f6874cec7da15dfecedfc3ebd60909007c..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/math/sincos_helpers.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -float sinf_piby4(float x, float y); -float cosf_piby4(float x, float y); -int argReductionS(float *r, float *rr, float x); diff --git a/libclc/generic/lib/relational/all.cl b/libclc/generic/lib/relational/all.cl deleted file mode 100644 index 607d7a9c68c488ed226d6ac97803d644db6c5776..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/all.cl +++ /dev/null @@ -1,29 +0,0 @@ -#include <clc/clc.h> - -#define _CLC_ALL(v) (((v) >> ((sizeof(v) * 8) - 1)) & 0x1) -#define _CLC_ALL2(v) (_CLC_ALL((v).s0) & _CLC_ALL((v).s1)) -#define _CLC_ALL3(v) (_CLC_ALL2((v)) & _CLC_ALL((v).s2)) -#define _CLC_ALL4(v) (_CLC_ALL3((v)) & _CLC_ALL((v).s3)) -#define _CLC_ALL8(v) (_CLC_ALL4((v)) & _CLC_ALL((v).s4) & _CLC_ALL((v).s5) \ - & _CLC_ALL((v).s6) & _CLC_ALL((v).s7)) -#define _CLC_ALL16(v) (_CLC_ALL8((v)) & _CLC_ALL((v).s8) & _CLC_ALL((v).s9) \ - & _CLC_ALL((v).sA) & _CLC_ALL((v).sB) \ - & _CLC_ALL((v).sC) & _CLC_ALL((v).sD) \ - & _CLC_ALL((v).sE) & _CLC_ALL((v).sf)) - - -#define ALL_ID(TYPE) \ - _CLC_OVERLOAD _CLC_DEF int all(TYPE v) - -#define ALL_VECTORIZE(TYPE) \ - ALL_ID(TYPE) { return _CLC_ALL(v); } \ - ALL_ID(TYPE##2) { return _CLC_ALL2(v); } \ - ALL_ID(TYPE##3) { return _CLC_ALL3(v); } \ - ALL_ID(TYPE##4) { return _CLC_ALL4(v); } \ - ALL_ID(TYPE##8) { return _CLC_ALL8(v); } \ - ALL_ID(TYPE##16) { return _CLC_ALL16(v); } - -ALL_VECTORIZE(char) -ALL_VECTORIZE(short) -ALL_VECTORIZE(int) -ALL_VECTORIZE(long) diff --git a/libclc/generic/lib/relational/any.cl b/libclc/generic/lib/relational/any.cl deleted file mode 100644 index 4d372102021b96ecfd8a920a88f599e4106f8ded..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/any.cl +++ /dev/null @@ -1,30 +0,0 @@ -#include <clc/clc.h> - -#define _CLC_ANY(v) (((v) >> ((sizeof(v) * 8) - 1)) & 0x1) -#define _CLC_ANY2(v) (_CLC_ANY((v).s0) | _CLC_ANY((v).s1)) -#define _CLC_ANY3(v) (_CLC_ANY2((v)) | _CLC_ANY((v).s2)) -#define _CLC_ANY4(v) (_CLC_ANY3((v)) | _CLC_ANY((v).s3)) -#define _CLC_ANY8(v) (_CLC_ANY4((v)) | _CLC_ANY((v).s4) | _CLC_ANY((v).s5) \ - | _CLC_ANY((v).s6) | _CLC_ANY((v).s7)) -#define _CLC_ANY16(v) (_CLC_ANY8((v)) | _CLC_ANY((v).s8) | _CLC_ANY((v).s9) \ - | _CLC_ANY((v).sA) | _CLC_ANY((v).sB) \ - | _CLC_ANY((v).sC) | _CLC_ANY((v).sD) \ - | _CLC_ANY((v).sE) | _CLC_ANY((v).sf)) - - -#define ANY_ID(TYPE) \ - _CLC_OVERLOAD _CLC_DEF int any(TYPE v) - -#define ANY_VECTORIZE(TYPE) \ - ANY_ID(TYPE) { return _CLC_ANY(v); } \ - ANY_ID(TYPE##2) { return _CLC_ANY2(v); } \ - ANY_ID(TYPE##3) { return _CLC_ANY3(v); } \ - ANY_ID(TYPE##4) { return _CLC_ANY4(v); } \ - ANY_ID(TYPE##8) { return _CLC_ANY8(v); } \ - ANY_ID(TYPE##16) { return _CLC_ANY16(v); } - -ANY_VECTORIZE(char) -ANY_VECTORIZE(short) -ANY_VECTORIZE(int) -ANY_VECTORIZE(long) - diff --git a/libclc/generic/lib/relational/isequal.cl b/libclc/generic/lib/relational/isequal.cl deleted file mode 100644 index 9d79ba6b3dbee55d2c3cbbe4e41434ded40fa163..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/isequal.cl +++ /dev/null @@ -1,30 +0,0 @@ -#include <clc/clc.h> - -#define _CLC_DEFINE_ISEQUAL(RET_TYPE, FUNCTION, ARG1_TYPE, ARG2_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \ - return (x == y); \ -} \ - -_CLC_DEFINE_ISEQUAL(int, isequal, float, float) -_CLC_DEFINE_ISEQUAL(int2, isequal, float2, float2) -_CLC_DEFINE_ISEQUAL(int3, isequal, float3, float3) -_CLC_DEFINE_ISEQUAL(int4, isequal, float4, float4) -_CLC_DEFINE_ISEQUAL(int8, isequal, float8, float8) -_CLC_DEFINE_ISEQUAL(int16, isequal, float16, float16) - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -// The scalar version of isequal(double) returns an int, but the vector versions -// return long. -_CLC_DEFINE_ISEQUAL(int, isequal, double, double) -_CLC_DEFINE_ISEQUAL(long2, isequal, double2, double2) -_CLC_DEFINE_ISEQUAL(long3, isequal, double3, double3) -_CLC_DEFINE_ISEQUAL(long4, isequal, double4, double4) -_CLC_DEFINE_ISEQUAL(long8, isequal, double8, double8) -_CLC_DEFINE_ISEQUAL(long16, isequal, double16, double16) - -#endif - -#undef _CLC_DEFINE_ISEQUAL \ No newline at end of file diff --git a/libclc/generic/lib/relational/isgreater.cl b/libclc/generic/lib/relational/isgreater.cl deleted file mode 100644 index 79456e56d517f9e020e34fcadedc1d9294edf2a4..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/isgreater.cl +++ /dev/null @@ -1,22 +0,0 @@ -#include <clc/clc.h> -#include "relational.h" - -//Note: It would be nice to use __builtin_isgreater with vector inputs, but it seems to only take scalar values as -// input, which will produce incorrect output for vector input types. - -_CLC_DEFINE_RELATIONAL_BINARY(int, isgreater, __builtin_isgreater, float, float) - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -// The scalar version of isgreater(double, double) returns an int, but the vector versions -// return long. - -_CLC_DEF _CLC_OVERLOAD int isgreater(double x, double y){ - return __builtin_isgreater(x, y); -} - -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, isgreater, double, double) - -#endif diff --git a/libclc/generic/lib/relational/isgreaterequal.cl b/libclc/generic/lib/relational/isgreaterequal.cl deleted file mode 100644 index 2d5ebe5770c7ce52a8b897fc8a3abe22affcd450..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/isgreaterequal.cl +++ /dev/null @@ -1,22 +0,0 @@ -#include <clc/clc.h> -#include "relational.h" - -//Note: It would be nice to use __builtin_isgreaterequal with vector inputs, but it seems to only take scalar values as -// input, which will produce incorrect output for vector input types. - -_CLC_DEFINE_RELATIONAL_BINARY(int, isgreaterequal, __builtin_isgreaterequal, float, float) - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -// The scalar version of isgreaterequal(double, double) returns an int, but the vector versions -// return long. - -_CLC_DEF _CLC_OVERLOAD int isgreaterequal(double x, double y){ - return __builtin_isgreaterequal(x, y); -} - -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, isgreaterequal, double, double) - -#endif diff --git a/libclc/generic/lib/relational/isless.cl b/libclc/generic/lib/relational/isless.cl deleted file mode 100644 index 56a3e1329b48feb059df72525070d5c1f11d1cb8..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/isless.cl +++ /dev/null @@ -1,22 +0,0 @@ -#include <clc/clc.h> -#include "relational.h" - -//Note: It would be nice to use __builtin_isless with vector inputs, but it seems to only take scalar values as -// input, which will produce incorrect output for vector input types. - -_CLC_DEFINE_RELATIONAL_BINARY(int, isless, __builtin_isless, float, float) - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -// The scalar version of isless(double, double) returns an int, but the vector versions -// return long. - -_CLC_DEF _CLC_OVERLOAD int isless(double x, double y){ - return __builtin_isless(x, y); -} - -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, isless, double, double) - -#endif diff --git a/libclc/generic/lib/relational/islessequal.cl b/libclc/generic/lib/relational/islessequal.cl deleted file mode 100644 index 259c307da4532ad7aa179e71b8ce590b01a9d388..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/islessequal.cl +++ /dev/null @@ -1,22 +0,0 @@ -#include <clc/clc.h> -#include "relational.h" - -//Note: It would be nice to use __builtin_islessequal with vector inputs, but it seems to only take scalar values as -// input, which will produce incorrect output for vector input types. - -_CLC_DEFINE_RELATIONAL_BINARY(int, islessequal, __builtin_islessequal, float, float) - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -// The scalar version of islessequal(double, double) returns an int, but the vector versions -// return long. - -_CLC_DEF _CLC_OVERLOAD int islessequal(double x, double y){ - return __builtin_islessequal(x, y); -} - -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, islessequal, double, double) - -#endif diff --git a/libclc/generic/lib/relational/isnan.cl b/libclc/generic/lib/relational/isnan.cl deleted file mode 100644 index f82dc5d59da5272232de5f410c2d6a05c5b927aa..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/isnan.cl +++ /dev/null @@ -1,18 +0,0 @@ -#include <clc/clc.h> -#include "relational.h" - -_CLC_DEFINE_RELATIONAL_UNARY(int, isnan, __builtin_isnan, float) - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -// The scalar version of isnan(double) returns an int, but the vector versions -// return long. -_CLC_DEF _CLC_OVERLOAD int isnan(double x) { - return __builtin_isnan(x); -} - -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(long, isnan, double) - -#endif diff --git a/libclc/generic/lib/relational/isnotequal.cl b/libclc/generic/lib/relational/isnotequal.cl deleted file mode 100644 index 787fd8d53c20611690669e8df2371be8aa4f34b8..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/isnotequal.cl +++ /dev/null @@ -1,23 +0,0 @@ -#include <clc/clc.h> -#include "relational.h" - -#define _CLC_DEFINE_ISNOTEQUAL(RET_TYPE, FUNCTION, ARG1_TYPE, ARG2_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \ - return (x != y); \ -} \ - -_CLC_DEFINE_ISNOTEQUAL(int, isnotequal, float, float) -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(int, isnotequal, float, float) - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -// The scalar version of isnotequal(double, double) returns an int, but the vector versions -// return long. - -_CLC_DEFINE_ISNOTEQUAL(int, isnotequal, double, double) -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, isnotequal, double, double) - -#endif - -#undef _CLC_DEFINE_ISNOTEQUAL diff --git a/libclc/generic/lib/relational/relational.h b/libclc/generic/lib/relational/relational.h deleted file mode 100644 index e492750dacb3291c6d0125847e51955b68d656ca..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/relational.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Contains relational macros that have to return 1 for scalar and -1 for vector - * when the result is true. - */ - -#define _CLC_DEFINE_RELATIONAL_UNARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_NAME, ARG_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x){ \ - return BUILTIN_NAME(x); \ -} - -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC2(RET_TYPE, FUNCTION, ARG_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ - return (RET_TYPE)( (RET_TYPE){FUNCTION(x.lo), FUNCTION(x.hi)} != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC3(RET_TYPE, FUNCTION, ARG_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ - return (RET_TYPE)( (RET_TYPE){FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2)} != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC4(RET_TYPE, FUNCTION, ARG_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ - return (RET_TYPE)( \ - (RET_TYPE){ \ - FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3) \ - } != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC8(RET_TYPE, FUNCTION, ARG_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ - return (RET_TYPE)( \ - (RET_TYPE){ \ - FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3), \ - FUNCTION(x.s4), FUNCTION(x.s5), FUNCTION(x.s6), FUNCTION(x.s7) \ - } != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC16(RET_TYPE, FUNCTION, ARG_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ - return (RET_TYPE)( \ - (RET_TYPE){ \ - FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3), \ - FUNCTION(x.s4), FUNCTION(x.s5), FUNCTION(x.s6), FUNCTION(x.s7), \ - FUNCTION(x.s8), FUNCTION(x.s9), FUNCTION(x.sa), FUNCTION(x.sb), \ - FUNCTION(x.sc), FUNCTION(x.sd), FUNCTION(x.se), FUNCTION(x.sf) \ - } != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(RET_TYPE, FUNCTION, ARG_TYPE) \ -_CLC_DEFINE_RELATIONAL_UNARY_VEC2(RET_TYPE##2, FUNCTION, ARG_TYPE##2) \ -_CLC_DEFINE_RELATIONAL_UNARY_VEC3(RET_TYPE##3, FUNCTION, ARG_TYPE##3) \ -_CLC_DEFINE_RELATIONAL_UNARY_VEC4(RET_TYPE##4, FUNCTION, ARG_TYPE##4) \ -_CLC_DEFINE_RELATIONAL_UNARY_VEC8(RET_TYPE##8, FUNCTION, ARG_TYPE##8) \ -_CLC_DEFINE_RELATIONAL_UNARY_VEC16(RET_TYPE##16, FUNCTION, ARG_TYPE##16) - -#define _CLC_DEFINE_RELATIONAL_UNARY(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, ARG_TYPE) \ -_CLC_DEFINE_RELATIONAL_UNARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, ARG_TYPE) \ -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(RET_TYPE, FUNCTION, ARG_TYPE) \ - -#define _CLC_DEFINE_RELATIONAL_BINARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_NAME, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y){ \ - return BUILTIN_NAME(x, y); \ -} - -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ - return (RET_TYPE)( (RET_TYPE){FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)} != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC2(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ - return (RET_TYPE)( (RET_TYPE){FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)} != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC3(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ - return (RET_TYPE)( (RET_TYPE){FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2)} != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC4(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ - return (RET_TYPE)( \ - (RET_TYPE){ \ - FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3) \ - } != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC8(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ - return (RET_TYPE)( \ - (RET_TYPE){ \ - FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3), \ - FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), FUNCTION(x.s6, y.s6), FUNCTION(x.s7, y.s7) \ - } != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC16(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ - return (RET_TYPE)( \ - (RET_TYPE){ \ - FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3), \ - FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), FUNCTION(x.s6, y.s6), FUNCTION(x.s7, y.s7), \ - FUNCTION(x.s8, y.s8), FUNCTION(x.s9, y.s9), FUNCTION(x.sa, y.sa), FUNCTION(x.sb, y.sb), \ - FUNCTION(x.sc, y.sc), FUNCTION(x.sd, y.sd), FUNCTION(x.se, y.se), FUNCTION(x.sf, y.sf) \ - } != (RET_TYPE)0); \ -} - -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEFINE_RELATIONAL_BINARY_VEC2(RET_TYPE##2, FUNCTION, ARG0_TYPE##2, ARG1_TYPE##2) \ -_CLC_DEFINE_RELATIONAL_BINARY_VEC3(RET_TYPE##3, FUNCTION, ARG0_TYPE##3, ARG1_TYPE##3) \ -_CLC_DEFINE_RELATIONAL_BINARY_VEC4(RET_TYPE##4, FUNCTION, ARG0_TYPE##4, ARG1_TYPE##4) \ -_CLC_DEFINE_RELATIONAL_BINARY_VEC8(RET_TYPE##8, FUNCTION, ARG0_TYPE##8, ARG1_TYPE##8) \ -_CLC_DEFINE_RELATIONAL_BINARY_VEC16(RET_TYPE##16, FUNCTION, ARG0_TYPE##16, ARG1_TYPE##16) - -#define _CLC_DEFINE_RELATIONAL_BINARY(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEFINE_RELATIONAL_BINARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, ARG0_TYPE, ARG1_TYPE) \ -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) diff --git a/libclc/generic/lib/relational/signbit.cl b/libclc/generic/lib/relational/signbit.cl deleted file mode 100644 index ab37d2f1288c01052aa6cbd8909ebfb8b5fe49e5..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/relational/signbit.cl +++ /dev/null @@ -1,19 +0,0 @@ -#include <clc/clc.h> -#include "relational.h" - -_CLC_DEFINE_RELATIONAL_UNARY(int, signbit, __builtin_signbitf, float) - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -// The scalar version of signbit(double) returns an int, but the vector versions -// return long. - -_CLC_DEF _CLC_OVERLOAD int signbit(double x){ - return __builtin_signbit(x); -} - -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(long, signbit, double) - -#endif diff --git a/libclc/generic/lib/shared/clamp.cl b/libclc/generic/lib/shared/clamp.cl deleted file mode 100644 index c79a358e00e073da562d0d94a421bcc572d4f54d..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/clamp.cl +++ /dev/null @@ -1,11 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <clamp.inc> -#include <clc/integer/gentype.inc> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <clamp.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/shared/clamp.inc b/libclc/generic/lib/shared/clamp.inc deleted file mode 100644 index c918f9c499e70f6a948ed0e8e0331ecd5c54afb3..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/clamp.inc +++ /dev/null @@ -1,9 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE clamp(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE z) { - return (x > z ? z : (x < y ? y : x)); -} - -#ifndef __CLC_SCALAR -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE clamp(__CLC_GENTYPE x, __CLC_SCALAR_GENTYPE y, __CLC_SCALAR_GENTYPE z) { - return (x > (__CLC_GENTYPE)z ? (__CLC_GENTYPE)z : (x < (__CLC_GENTYPE)y ? (__CLC_GENTYPE)y : x)); -} -#endif diff --git a/libclc/generic/lib/shared/max.cl b/libclc/generic/lib/shared/max.cl deleted file mode 100644 index 1c4457c82144bf4e06f71a614cfe71f5e180385b..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/max.cl +++ /dev/null @@ -1,11 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <max.inc> -#include <clc/integer/gentype.inc> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <max.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/shared/max.inc b/libclc/generic/lib/shared/max.inc deleted file mode 100644 index 75a24c077d1ab563428fd67d805164acdf6570c9..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/max.inc +++ /dev/null @@ -1,9 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE max(__CLC_GENTYPE a, __CLC_GENTYPE b) { - return (a > b ? a : b); -} - -#ifndef __CLC_SCALAR -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE max(__CLC_GENTYPE a, __CLC_SCALAR_GENTYPE b) { - return (a > (__CLC_GENTYPE)b ? a : (__CLC_GENTYPE)b); -} -#endif diff --git a/libclc/generic/lib/shared/min.cl b/libclc/generic/lib/shared/min.cl deleted file mode 100644 index 433087a1069d0747a371ce3c3aded92ac3823334..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/min.cl +++ /dev/null @@ -1,11 +0,0 @@ -#include <clc/clc.h> - -#define __CLC_BODY <min.inc> -#include <clc/integer/gentype.inc> - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -#endif - -#define __CLC_BODY <min.inc> -#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/shared/min.inc b/libclc/generic/lib/shared/min.inc deleted file mode 100644 index fe42864df25766fc345a51b9fbaf6a982570dfea..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/min.inc +++ /dev/null @@ -1,9 +0,0 @@ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE min(__CLC_GENTYPE a, __CLC_GENTYPE b) { - return (a < b ? a : b); -} - -#ifndef __CLC_SCALAR -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE min(__CLC_GENTYPE a, __CLC_SCALAR_GENTYPE b) { - return (a < (__CLC_GENTYPE)b ? a : (__CLC_GENTYPE)b); -} -#endif diff --git a/libclc/generic/lib/shared/vload.cl b/libclc/generic/lib/shared/vload.cl deleted file mode 100644 index 6793072cc6ef007dd7fa65f6f9f9516cd860be9e..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/vload.cl +++ /dev/null @@ -1,46 +0,0 @@ -#include <clc/clc.h> - -#define VLOAD_VECTORIZE(PRIM_TYPE, ADDR_SPACE) \ - _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##2 vload2(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ - return (PRIM_TYPE##2)(x[2*offset] , x[2*offset+1]); \ - } \ -\ - _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##3 vload3(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ - return (PRIM_TYPE##3)(x[3*offset] , x[3*offset+1], x[3*offset+2]); \ - } \ -\ - _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##4 vload4(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ - return (PRIM_TYPE##4)(x[4*offset], x[4*offset+1], x[4*offset+2], x[4*offset+3]); \ - } \ -\ - _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##8 vload8(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ - return (PRIM_TYPE##8)(vload4(0, &x[8*offset]), vload4(1, &x[8*offset])); \ - } \ -\ - _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##16 vload16(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ - return (PRIM_TYPE##16)(vload8(0, &x[16*offset]), vload8(1, &x[16*offset])); \ - } \ - -#define VLOAD_ADDR_SPACES(__CLC_SCALAR_GENTYPE) \ - VLOAD_VECTORIZE(__CLC_SCALAR_GENTYPE, __private) \ - VLOAD_VECTORIZE(__CLC_SCALAR_GENTYPE, __local) \ - VLOAD_VECTORIZE(__CLC_SCALAR_GENTYPE, __constant) \ - VLOAD_VECTORIZE(__CLC_SCALAR_GENTYPE, __global) \ - -#define VLOAD_TYPES() \ - VLOAD_ADDR_SPACES(char) \ - VLOAD_ADDR_SPACES(uchar) \ - VLOAD_ADDR_SPACES(short) \ - VLOAD_ADDR_SPACES(ushort) \ - VLOAD_ADDR_SPACES(int) \ - VLOAD_ADDR_SPACES(uint) \ - VLOAD_ADDR_SPACES(long) \ - VLOAD_ADDR_SPACES(ulong) \ - VLOAD_ADDR_SPACES(float) \ - -VLOAD_TYPES() - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - VLOAD_ADDR_SPACES(double) -#endif diff --git a/libclc/generic/lib/shared/vload_impl.ll b/libclc/generic/lib/shared/vload_impl.ll deleted file mode 100644 index 33ba996b25c348edcd972a23bbdb7e4958a3139c..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/vload_impl.ll +++ /dev/null @@ -1,130 +0,0 @@ -; This provides optimized implementations of vload2/3/4/8/16 for 32-bit int/uint -; The address spaces get mapped to data types in target-specific usages - -define <2 x i32> @__clc_vload2_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <2 x i32> addrspace(1)* - %2 = load <2 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret <2 x i32> %2 -} - -define <3 x i32> @__clc_vload3_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <3 x i32> addrspace(1)* - %2 = load <3 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret <3 x i32> %2 -} - -define <4 x i32> @__clc_vload4_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <4 x i32> addrspace(1)* - %2 = load <4 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret <4 x i32> %2 -} - -define <8 x i32> @__clc_vload8_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <8 x i32> addrspace(1)* - %2 = load <8 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret <8 x i32> %2 -} - -define <16 x i32> @__clc_vload16_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <16 x i32> addrspace(1)* - %2 = load <16 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret <16 x i32> %2 -} - -define <2 x i32> @__clc_vload2_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(2)* %addr to <2 x i32> addrspace(2)* - %2 = load <2 x i32> addrspace(2)* %1, align 4, !tbaa !3 - ret <2 x i32> %2 -} - -define <3 x i32> @__clc_vload3_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(2)* %addr to <3 x i32> addrspace(2)* - %2 = load <3 x i32> addrspace(2)* %1, align 4, !tbaa !3 - ret <3 x i32> %2 -} - -define <4 x i32> @__clc_vload4_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(2)* %addr to <4 x i32> addrspace(2)* - %2 = load <4 x i32> addrspace(2)* %1, align 4, !tbaa !3 - ret <4 x i32> %2 -} - -define <8 x i32> @__clc_vload8_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(2)* %addr to <8 x i32> addrspace(2)* - %2 = load <8 x i32> addrspace(2)* %1, align 4, !tbaa !3 - ret <8 x i32> %2 -} - -define <16 x i32> @__clc_vload16_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(2)* %addr to <16 x i32> addrspace(2)* - %2 = load <16 x i32> addrspace(2)* %1, align 4, !tbaa !3 - ret <16 x i32> %2 -} - -define <2 x i32> @__clc_vload2_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(3)* %addr to <2 x i32> addrspace(3)* - %2 = load <2 x i32> addrspace(3)* %1, align 4, !tbaa !3 - ret <2 x i32> %2 -} - -define <3 x i32> @__clc_vload3_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(3)* %addr to <3 x i32> addrspace(3)* - %2 = load <3 x i32> addrspace(3)* %1, align 4, !tbaa !3 - ret <3 x i32> %2 -} - -define <4 x i32> @__clc_vload4_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(3)* %addr to <4 x i32> addrspace(3)* - %2 = load <4 x i32> addrspace(3)* %1, align 4, !tbaa !3 - ret <4 x i32> %2 -} - -define <8 x i32> @__clc_vload8_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(3)* %addr to <8 x i32> addrspace(3)* - %2 = load <8 x i32> addrspace(3)* %1, align 4, !tbaa !3 - ret <8 x i32> %2 -} - -define <16 x i32> @__clc_vload16_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(3)* %addr to <16 x i32> addrspace(3)* - %2 = load <16 x i32> addrspace(3)* %1, align 4, !tbaa !3 - ret <16 x i32> %2 -} - -define <2 x i32> @__clc_vload2_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(4)* %addr to <2 x i32> addrspace(4)* - %2 = load <2 x i32> addrspace(4)* %1, align 4, !tbaa !3 - ret <2 x i32> %2 -} - -define <3 x i32> @__clc_vload3_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(4)* %addr to <3 x i32> addrspace(4)* - %2 = load <3 x i32> addrspace(4)* %1, align 4, !tbaa !3 - ret <3 x i32> %2 -} - -define <4 x i32> @__clc_vload4_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(4)* %addr to <4 x i32> addrspace(4)* - %2 = load <4 x i32> addrspace(4)* %1, align 4, !tbaa !3 - ret <4 x i32> %2 -} - -define <8 x i32> @__clc_vload8_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(4)* %addr to <8 x i32> addrspace(4)* - %2 = load <8 x i32> addrspace(4)* %1, align 4, !tbaa !3 - ret <8 x i32> %2 -} - -define <16 x i32> @__clc_vload16_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { - %1 = bitcast i32 addrspace(4)* %addr to <16 x i32> addrspace(4)* - %2 = load <16 x i32> addrspace(4)* %1, align 4, !tbaa !3 - ret <16 x i32> %2 -} - -!1 = metadata !{metadata !"char", metadata !5} -!2 = metadata !{metadata !"short", metadata !5} -!3 = metadata !{metadata !"int", metadata !5} -!4 = metadata !{metadata !"long", metadata !5} -!5 = metadata !{metadata !"omnipotent char", metadata !6} -!6 = metadata !{metadata !"Simple C/C++ TBAA"} - diff --git a/libclc/generic/lib/shared/vstore.cl b/libclc/generic/lib/shared/vstore.cl deleted file mode 100644 index f6d360e0d1d7ec35efb25c453114266a47b17c77..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/vstore.cl +++ /dev/null @@ -1,53 +0,0 @@ -#include <clc/clc.h> - -#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable - -#define VSTORE_VECTORIZE(PRIM_TYPE, ADDR_SPACE) \ - _CLC_OVERLOAD _CLC_DEF void vstore2(PRIM_TYPE##2 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ - mem[2*offset] = vec.s0; \ - mem[2*offset+1] = vec.s1; \ - } \ -\ - _CLC_OVERLOAD _CLC_DEF void vstore3(PRIM_TYPE##3 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ - mem[3*offset] = vec.s0; \ - mem[3*offset+1] = vec.s1; \ - mem[3*offset+2] = vec.s2; \ - } \ -\ - _CLC_OVERLOAD _CLC_DEF void vstore4(PRIM_TYPE##4 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ - vstore2(vec.lo, 0, &mem[offset*4]); \ - vstore2(vec.hi, 1, &mem[offset*4]); \ - } \ -\ - _CLC_OVERLOAD _CLC_DEF void vstore8(PRIM_TYPE##8 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ - vstore4(vec.lo, 0, &mem[offset*8]); \ - vstore4(vec.hi, 1, &mem[offset*8]); \ - } \ -\ - _CLC_OVERLOAD _CLC_DEF void vstore16(PRIM_TYPE##16 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ - vstore8(vec.lo, 0, &mem[offset*16]); \ - vstore8(vec.hi, 1, &mem[offset*16]); \ - } \ - -#define VSTORE_ADDR_SPACES(__CLC_SCALAR___CLC_GENTYPE) \ - VSTORE_VECTORIZE(__CLC_SCALAR___CLC_GENTYPE, __private) \ - VSTORE_VECTORIZE(__CLC_SCALAR___CLC_GENTYPE, __local) \ - VSTORE_VECTORIZE(__CLC_SCALAR___CLC_GENTYPE, __global) \ - -#define VSTORE_TYPES() \ - VSTORE_ADDR_SPACES(char) \ - VSTORE_ADDR_SPACES(uchar) \ - VSTORE_ADDR_SPACES(short) \ - VSTORE_ADDR_SPACES(ushort) \ - VSTORE_ADDR_SPACES(int) \ - VSTORE_ADDR_SPACES(uint) \ - VSTORE_ADDR_SPACES(long) \ - VSTORE_ADDR_SPACES(ulong) \ - VSTORE_ADDR_SPACES(float) \ - -VSTORE_TYPES() - -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - VSTORE_ADDR_SPACES(double) -#endif diff --git a/libclc/generic/lib/shared/vstore_impl.ll b/libclc/generic/lib/shared/vstore_impl.ll deleted file mode 100644 index 9e2a37b29702c3e414b442b4fb4c561d94c7128c..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/shared/vstore_impl.ll +++ /dev/null @@ -1,40 +0,0 @@ -; This provides optimized implementations of vstore2/3/4/8/16 for 32-bit int/uint -; The address spaces get mapped to data types in target-specific usages - -define void @__clc_vstore2_i32__addr1(<2 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <2 x i32> addrspace(1)* - store <2 x i32> %vec, <2 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret void -} - -define void @__clc_vstore3_i32__addr1(<3 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <3 x i32> addrspace(1)* - store <3 x i32> %vec, <3 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret void -} - -define void @__clc_vstore4_i32__addr1(<4 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <4 x i32> addrspace(1)* - store <4 x i32> %vec, <4 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret void -} - -define void @__clc_vstore8_i32__addr1(<8 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <8 x i32> addrspace(1)* - store <8 x i32> %vec, <8 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret void -} - -define void @__clc_vstore16_i32__addr1(<16 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { - %1 = bitcast i32 addrspace(1)* %addr to <16 x i32> addrspace(1)* - store <16 x i32> %vec, <16 x i32> addrspace(1)* %1, align 4, !tbaa !3 - ret void -} - -!1 = metadata !{metadata !"char", metadata !5} -!2 = metadata !{metadata !"short", metadata !5} -!3 = metadata !{metadata !"int", metadata !5} -!4 = metadata !{metadata !"long", metadata !5} -!5 = metadata !{metadata !"omnipotent char", metadata !6} -!6 = metadata !{metadata !"Simple C/C++ TBAA"} - diff --git a/libclc/generic/lib/workitem/get_global_id.cl b/libclc/generic/lib/workitem/get_global_id.cl deleted file mode 100644 index fdd83d2953d45b31c5db2a6bfa650673fa6e0877..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/workitem/get_global_id.cl +++ /dev/null @@ -1,5 +0,0 @@ -#include <clc/clc.h> - -_CLC_DEF size_t get_global_id(uint dim) { - return get_group_id(dim)*get_local_size(dim) + get_local_id(dim); -} diff --git a/libclc/generic/lib/workitem/get_global_size.cl b/libclc/generic/lib/workitem/get_global_size.cl deleted file mode 100644 index 5ae649e10d5108e5b8e27561eb292caad62f8843..0000000000000000000000000000000000000000 --- a/libclc/generic/lib/workitem/get_global_size.cl +++ /dev/null @@ -1,5 +0,0 @@ -#include <clc/clc.h> - -_CLC_DEF size_t get_global_size(uint dim) { - return get_num_groups(dim)*get_local_size(dim); -}