From 41a2eb5245583403f4a26ca24ec7ba736d2cca5e Mon Sep 17 00:00:00 2001 From: Rohit Sutradhar <40035473+r0hit2005@users.noreply.github.com> Date: Wed, 15 Sep 2021 22:20:49 +0530 Subject: [PATCH] Merge pull request #20361 from r0hit2005:master Tutorial for parallel_for_ and Universal Intrinsic (GSoC '21) * New parallel_for tutorial * Universal Intrinsics Draft Tutorial * Added draft of universal intrinsic tutorial * * Added final markdown for parallel_for_new * Added first half of universal intrinsic tutorial * Fixed warnings in documentation and sample code for parallel_for_new tutorial * Restored original parallel_for_ tutorial and table_of_content_core * Minor changes * Added demonstration of 1-D vectorized convolution * * Added 2-D convolution implementation and tutorial * Minor changes in vectorized implementation of 1-D and 2-D convolution * Minor changes to univ_intrin tutorial. Added new tutorials to the table of contents * Minor changes * Removed variable sized array initializations * Fixed conversion warnings * Added doxygen references, minor fixes * Added jpg image for parallel_for_ doc --- .../file_input_output_with_xml_yml.markdown | 2 +- ...ow_to_use_OpenCV_parallel_for_new.markdown | 166 +++++++++ .../images/convolution-example-matrix.gif | Bin 0 -> 150600 bytes .../images/resimg.jpg | Bin 0 -> 65566 bytes .../core/table_of_content_core.markdown | 3 +- .../core/univ_intrin/univ_intrin.markdown | 334 ++++++++++++++++++ .../how_to_use_OpenCV_parallel_for_new.cpp | 332 +++++++++++++++++ .../core/univ_intrin/univ_intrin.cpp | 230 ++++++++++++ 8 files changed, 1065 insertions(+), 2 deletions(-) create mode 100644 doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/how_to_use_OpenCV_parallel_for_new.markdown create mode 100644 doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/images/convolution-example-matrix.gif create mode 100644 doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/images/resimg.jpg create mode 100644 doc/tutorials/core/univ_intrin/univ_intrin.markdown create mode 100644 samples/cpp/tutorial_code/core/how_to_use_OpenCV_parallel_for_/how_to_use_OpenCV_parallel_for_new.cpp create mode 100644 samples/cpp/tutorial_code/core/univ_intrin/univ_intrin.cpp diff --git a/doc/tutorials/core/file_input_output_with_xml_yml/file_input_output_with_xml_yml.markdown b/doc/tutorials/core/file_input_output_with_xml_yml/file_input_output_with_xml_yml.markdown index da060cf27d..46838dd99b 100644 --- a/doc/tutorials/core/file_input_output_with_xml_yml/file_input_output_with_xml_yml.markdown +++ b/doc/tutorials/core/file_input_output_with_xml_yml/file_input_output_with_xml_yml.markdown @@ -4,7 +4,7 @@ File Input and Output using XML and YAML files {#tutorial_file_input_output_with @tableofcontents @prev_tutorial{tutorial_discrete_fourier_transform} -@next_tutorial{tutorial_how_to_use_OpenCV_parallel_for_} +@next_tutorial{tutorial_how_to_use_OpenCV_parallel_for_new} | | | | -: | :- | diff --git a/doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/how_to_use_OpenCV_parallel_for_new.markdown b/doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/how_to_use_OpenCV_parallel_for_new.markdown new file mode 100644 index 0000000000..57334e2b9b --- /dev/null +++ b/doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/how_to_use_OpenCV_parallel_for_new.markdown @@ -0,0 +1,166 @@ +How to use the OpenCV parallel_for_ to parallelize your code {#tutorial_how_to_use_OpenCV_parallel_for_new} +================================================================== + +@tableofcontents + +@prev_tutorial{tutorial_file_input_output_with_xml_yml} +@next_tutorial{tutorial_univ_intrin} + +| | | +| -: | :- | +| Compatibility | OpenCV >= 3.0 | + +Goal +---- + +The goal of this tutorial is to demonstrate the use of the OpenCV `parallel_for_` framework to easily parallelize your code. To illustrate the concept, we will write a program to perform convolution operation over an image. +The full tutorial code is [here](https://github.com/opencv/opencv/tree/master/samples/cpp/tutorial_code/how_to_use_OpenCV_parallel_for_/how_to_use_OpenCV_parallel_for_new.cpp). + +Precondition +---- + +### Parallel Frameworks +The first precondition is to have OpenCV built with a parallel framework. +In OpenCV 4.5, the following parallel frameworks are available in that order: + +* Intel Threading Building Blocks (3rdparty library, should be explicitly enabled) +* OpenMP (integrated to compiler, should be explicitly enabled) +* APPLE GCD (system wide, used automatically (APPLE only)) +* Windows RT concurrency (system wide, used automatically (Windows RT only)) +* Windows concurrency (part of runtime, used automatically (Windows only - MSVC++ >= 10)) +* Pthreads + +As you can see, several parallel frameworks can be used in the OpenCV library. Some parallel libraries are third party libraries and have to be explicitly enabled in CMake before building, while others are automatically available with the platform (e.g. APPLE GCD). + +### Race Conditions +Race conditions occur when more than one thread try to write *or* read and write to a particular memory location simultaneously. +Based on that, we can broadly classify algorithms into two categories:- +1. Algorithms in which only a single thread writes data to a particular memory location. + * In *convolution*, for example, even though multiple threads may read from a pixel at a particular time, only a single thread *writes* to a particular pixel. + +2. Algorithms in which multiple threads may write to a single memory location. + * Finding contours, features, etc. Such algorithms may require each thread to add data to a global variable simultaneously. For example, when detecting features, each thread will add features of their respective parts of the image to a common vector, thus creating a race condition. + +Convolution +----------- + +We will use the example of performing a convolution to demonstrate the use of `parallel_for_` to parallelize the computation. This is an example of an algorithm which does not lead to a race condition. + +Theory +------ +Convolution is a simple mathematical operation widely used in image processing. Here, we slide a smaller matrix, called the *kernel*, over an image and a sum of the product of pixel values and corresponding values in the kernel gives us the value of the particular pixel in the output (called the anchor point of the kernel). Based on the values in the kernel, we get different results. +In the example below, we use a 3x3 kernel (anchored at its center) and convolve over a 5x5 matrix to produce a 3x3 matrix. The size of the output can be altered by padding the input with suitable values. +![Convolution Animation](images/convolution-example-matrix.gif) + +For more information about different kernels and what they do, look [here](https://en.wikipedia.org/wiki/Kernel_(image_processing)) + +For the purpose of this tutorial, we will implement the simplest form of the function which takes a grayscale image (1 channel) and an odd length square kernel and produces an output image. +The operation will not be performed in-place. +@note We can store a few of the relevant pixels temporarily to make sure we use the original values during the convolution and then do it in-place. However, the purpose of this tutorial is to introduce parallel_for_ function and an inplace implementation may be too complicated. + +Pseudocode +----------- + + InputImage src, OutputImage dst, kernel(size n) + makeborder(src, n/2) + for each pixel (i, j) strictly inside borders, do: + { + value := 0 + for k := -n/2 to n/2, do: + for l := -n/2 to n/2, do: + value += kernel[n/2 + k][n/2 + l]*src[i + k][j + l] + + dst[i][j] := value + } + +For an *n-sized kernel*, we will add a border of size *n/2* to handle edge cases. +We then run two loops to move along the kernel and add the products to sum + +Implementation +-------------- + +### Sequential implementation + +@snippet how_to_use_OpenCV_parallel_for_new.cpp convolution-sequential + +We first make an output matrix(dst) with the same size as src and add borders to the src image(to handle edge cases). +@snippet how_to_use_OpenCV_parallel_for_new.cpp convolution-make-borders + +We then sequentially iterate over the pixels in the src image and compute the value over the kernel and the neighbouring pixel values. +We then fill value to the corresponding pixel in the dst image. +@snippet how_to_use_OpenCV_parallel_for_new.cpp convolution-kernel-loop + +### Parallel implementation + +When looking at the sequential implementation, we can notice that each pixel depends on multiple neighbouring pixels but only one pixel is edited at a time. Thus, to optimize the computation, we can split the image into stripes and parallely perform convolution on each, by exploiting the multi-core architecture of modern processor. The OpenCV @ref cv::parallel_for_ framework automatically decides how to split the computation efficiently and does most of the work for us. + +@note Although values of a pixel in a particular stripe may depend on pixel values outside the stripe, these are only read only operations and hence will not cause undefined behaviour. + + +We first declare a custom class that inherits from @ref cv::ParallelLoopBody and override the `virtual void operator ()(const cv::Range& range) const`. +@snippet how_to_use_OpenCV_parallel_for_new.cpp convolution-parallel + +The range in the `operator ()` represents the subset of values that will be treated by an individual thread. Based on the requirement, there may be different ways of splitting the range which in turn changes the computation. + +For example, we can either +1. Split the entire traversal of the image and obtain the [row, col] coordinate in the following way (as shown in the above code): + + @snippet how_to_use_OpenCV_parallel_for_new.cpp overload-full + + We would then call the parallel_for_ function in the following way: + @snippet how_to_use_OpenCV_parallel_for_new.cpp convolution-parallel-function +
+ +2. Split the rows and compute for each row: + + @snippet how_to_use_OpenCV_parallel_for_new.cpp overload-row-split + + In this case, we call the parallel_for_ function with a different range: + @snippet how_to_use_OpenCV_parallel_for_new.cpp convolution-parallel-function-row + +@note In our case, both implementations perform similarly. Some cases may allow better memory access patterns or other performance benefits. + +To set the number of threads, you can use: @ref cv::setNumThreads. You can also specify the number of splitting using the nstripes parameter in @ref cv::parallel_for_. For instance, if your processor has 4 threads, setting `cv::setNumThreads(2)` or setting `nstripes=2` should be the same as by default it will use all the processor threads available but will split the workload only on two threads. + +@note C++ 11 standard allows to simplify the parallel implementation by get rid of the `parallelConvolution` class and replacing it with lambda expression: + +@snippet how_to_use_OpenCV_parallel_for_new.cpp convolution-parallel-cxx11 + +Results +----------- + +The resulting time taken for execution of the two implementations on a +* *512x512 input* with a *5x5 kernel*: + + This program shows how to use the OpenCV parallel_for_ function and + compares the performance of the sequential and parallel implementations for a + convolution operation + Usage: + ./a.out [image_path -- default lena.jpg] + + Sequential Implementation: 0.0953564s + Parallel Implementation: 0.0246762s + Parallel Implementation(Row Split): 0.0248722s + +
+ +* *512x512 input with a 3x3 kernel* + + This program shows how to use the OpenCV parallel_for_ function and + compares the performance of the sequential and parallel implementations for a + convolution operation + Usage: + ./a.out [image_path -- default lena.jpg] + + Sequential Implementation: 0.0301325s + Parallel Implementation: 0.0117053s + Parallel Implementation(Row Split): 0.0117894s + +The performance of the parallel implementation depends on the type of CPU you have. For instance, on 4 cores - 8 threads CPU, runtime may be 6x to 7x faster than a sequential implementation. There are many factors to explain why we do not achieve a speed-up of 8x: + * the overhead to create and manage the threads, + * background processes running in parallel, + * the difference between 4 hardware cores with 2 logical threads for each core and 8 hardware cores. + +In the tutorial, we used a horizontal gradient filter(as shown in the animation above), which produces an image highlighting the vertical edges. + +![result image](images/resimg.jpg) \ No newline at end of file diff --git a/doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/images/convolution-example-matrix.gif b/doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/images/convolution-example-matrix.gif new file mode 100644 index 0000000000000000000000000000000000000000..070208eb3da505fe6d69aabefdded607633b5153 GIT binary patch literal 150600 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�kLhmq;l_lVQTe|l!cnr@9ed> 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%0D}9h(5MigrkNH5o?l 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 literal 0 HcmV?d00001 diff --git a/doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/images/resimg.jpg b/doc/tutorials/core/how_to_use_OpenCV_parallel_for_new/images/resimg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96885c3c51f4fdc55728acadfd99eb3a32654344 GIT binary patch literal 65566 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

WLJ-eb_7`wu{Jk4&m zCgo-tl{dfu*eL76{gR>&u5-w#yh9Cf(rCCZM0u~M8f_IMiCJ9J71Qth!6r5Nq5bAMbyf+C8cl~pJNtPBB z+7DV&?+JsDLK24+86$xOko(VK%z@URF1Kii^VDvuguWXg|+?;HPQQ`H>& z-D)fU?%aq1>!e3ddWuXwU)zo#Q@@{^=(cMyt?%%HX|Re~*M^O7kCP=rYZ)!`sB&Rr z9FJP|D=u>$_sCiEcQE}LzEh356elTrRGH+?$aZ|NcahH?W+im2-+R2A79)x!FJZI; zEJL_KLdTLz7V9QsHH-|;(L5I&&o>P}`+|CK=#fBhKxa1i>GiV2SkmR9AVrtDqPk2{(%qa;jgc^ z@3c~t8F|cuWRSv<6PJ*;q+xsUfNANR|r=x_7xHrr58#r$dG z8L$*usK_2(U~byz#}k^Z^eG9o-_pw1-_O6h@m7|qL&vZ1NoD!x5zLq!G-G7%G&T^+ z!lH{3pM<}l*z}9WRi9}D#|BieUL3GjylkxDO!|q=2%1UGx5hWmTW1u;jLCBZ;rSQqu*k^TQwW9Jn5EX{#O6a=v4ZFZKtkg_t&h0CCf$WZNaROqaFJ* z0LhHuwCko81*KIX6BH7iaZzI-0GLn5x}Ujx27FK)p_eL8HqrN}S*5DeMr;6K> z(NSEbsogk-c~3xgB*l5vpctXAZzkCDb(4^+C~N06XgBtf>Pyb}Whn*d8DKu|kHZ}f zX8T|UsWo7B=npe@qY&&MYs3=4uto;TBSU-V|2Ssw=Li>MCR=$&5{$_c_3DxEVN;J# zwG}*Yi@4Uc!+^EVHyjiW{|&c}*ZAozzp_Il0vkFnj^Jt-bnB6dNWfF@i_UUOgS~}agCU4rZl?3j-G>?*uO9B;(55r~U z4xE)JxD}O!jA&#}_d#W{ob~ceGUT<$5(BPV2~i4JGb$2S5gp{}ihjFjr{K0a#;M*n znXw;#yBF(rYVq7Bu7&9H-abJ_8)$r^~FciKMhy z*E)WFI8p;X2nb|KOH12#rk9l`XF8jgQ_GslD9d!g zNgr6I!rn#V!JWomzXn~;&!Sh)fQ2cH z^JlO z#ZIxFIglX%a%(4d=?*QLtq_-6Fwy()8CI8>LNO}Qp>#)H7AuKdx~q`mZgL_4=5@X4 zA$YEuq|dCt2bjzq`(DDENpuz8G0t$Qw=h~W#=8b^jnCZ<8l}uXX=Y{;7e&kJ4~DE1 zr;V7{yD6V}AAGn}G~Oye#}_AT^&3FgC(=2kWNHf+{h`dw*thr#0hKC@f8aO155>Qr z-zE8)?2H7YQDC4NluydNiKu;5x=zx~-k?0-o{}C)7?2*0HLr<tHkbQ{V8LiLX|MbSzAS zW#XbgGO<2;Oat?x>5?VBKjM=I^r=hRo$E%H@Xt}P zI$`;$437_Ih&18YEu11C4r5fV6l!u0->?4M8^PgW*n`f2N4!QNkUX~C*Mhd|8CXpa z`3!|H&PqF*^ItUJjM;JD4qHdHv;&8i`bTzeCOsI({nG+3s~~Fl(pc6n<}dTJwcqpk zqZ!%=*IOA$EVNM{%D?pkBZh*y9rmcJ!%=xO#gwW?jPZ#s85`IYnppF?#GV+B?54i( z<-M&N(&U`UB5mKqRx4hziZ2A8N#t6q3h@b3g}I!aK~Kvu{5dVBImSi>)g|uJue5O& z_w2_aLJQBv$+7tU8zRmzmg?(oc2l~b$hU7G)_bV0E~TRm-+1*!y&>Ekz_fmMVA6i< z6oz-LJ4h9;Dq5%hrk0PUmT{qVUx`SuNI%5h6;xd_ea9E4D7NR`X9oMVeP16^OtV0T z?O1VBpyqMPt(k?qjJ!3@mZEjcD_~iKq0T&5-X@Lg+Ltj2e=ITYAvAZ1XS%jxifRDA zf)z;gnGh5?mC0Ln=X2U`ai=<3#(Maz!`mR@qXb!EkGg=ZAvQ8d0EsuL@0#RqTFuBVO`q5br(~y9w z!o=>>vNI>;aW=|(;^g$`^ukG{2O;94Gm8g$=q85TXhLQUiL(UdR={BJl)#%cNFwJ~ zF}E%&{1U>~%jK|+&K|xBHk#B+tK42R@bjXr)!!D8c>D^xa$e;`iLayoOKreH2;DB6 zOa@eEbEi?N5(wcQU9I1oKn)YqVgzpEeL>SoM~3JHSs<5&AdJWnvIoj)qVm$iC!CKF zy|drb^ro#qc?wftYBGo8BP+&?4KRzR6qBkb6>Cl48=sK5MR5jZYSX^0jbpj?yFxus zK-0Am^#A>okIp76!SL%C=Y%#4LgV)3@m#L(y*ce$RT=WMK5o#gacjLHTn9q4kW~{r z3SJ+2(~{zoF26Dz8v!bEhVYm5g){TRI(hgan>D@4$qCH@bi`jDe=yvNPCQ7O-6qZA z?h24NU@0F_+cLe-b3ssrf5NkG`mb{2>NclAK5WtxhZr-=b=!`U#axkh>eldAk@OyE z1`GD~X&I)*Jdo|CM}>k86~0$Q9F-lN7?0WrE?R&UQec*X5nRf(Z(FoTOr)0B7PeE~ zRVmR|1)JkT-FL=&%+$2lxhQ6R=6)_c8X#dwx+9lvcdQvBQR!HTKqzV(Ap8*B{NpqS z+lkp3q^z{QQzBEf5nGtcEU}%oiPBGi{bc9i?l(upIX68;=pD;RC6`Gw)|Yo0bnC`P zuvwXTs|Y>Rh>q+o@Od8vm|S20i=&iI4|=zaQz?oM>=AQ+H+(TCM1_5&wD4hxZmG5` zWob1pRmqCS26uJbDyWzuiZg}(t-rKZR!#~7o&k4wV37uhFCsbW7Y06q+0w@b?~Cu& z{|8m?{8(4?ZhNPVZQD-69Vd;sW81bHHf(I$wrv|b)(#stW|O}8p7Wl2&s~4O`eDsE z*BtYCK4VOYTa~bjN)Pefjk4I=t{LNnqUJx!{~!j-k>$qDTTB+*$8esWawZe@dDryQ zUG;XenQ}m?t|bB20;D<+FsS=6yCR38qtbVyd^0V}ZC7GJL_DL+m{e>+nvM;KmZ&BJ zLQ7sJcjUcKc>{VKvxzU~r}7Zl_g~LwcBBvZ?_M!OPq+R6R0M6fKT02C(+KZ*i=7+} zp)P+I{Ez;B_Z=*qSW(U|YsGY_q#pK4HQTMxjWmjOi#6wjFHRYgVLPhuOJ6!6N6ZI3mW+mon33X>CODqsv}~W zq`0Ebly$f#PdYhoj(vaA?OUxUsdwA*n_7C|DsgA1k}pIz{DW{-OLZ4lWi?#8KkR!B zr!G(v8&mHAJu)X`J3Z)y$mx@E(3-%01RDQH@7dVJzv?WobDq=Iq^@5Wm3GX&n<14^ ztM?%TwgQUcFjmckcz3MSQ(QDaLWQbXZ4MAtUp=l4fpaTGiyAqX^1q#p9%H`)r0Ra! zV5z{FW9U3?6+|peN)^{s(2Wrj(QX-8LAH#kw0Yy`8R+b{6==cFbf;&W*Tc6xGAs3^ zk-jMNgh?-~ES*VtQaLJ~l4u6?L41O3o_|pLMA@XjM&t{M4G2ZbSHgOidpJ4?Qo)De zL)?xe3wL{}YRr<8OLRZ9bF}K&V)MqCbCrMTnp?J) z?fihAyJpmj@iNqM%SuYgI<;qQ_;eiuQp$JBH49erO>Q{l_ywKSfVURaaJwku4j z_Q@g9(mKHVuordpY8|44A9L_jI#aabY0sC_mV_r3KlV>-b?2}0OCsDJ86;Y_p*l0w z0M*#5RY$^ri$jbOiBYQ76GP|4=ABzsc9k=yU6uE2b}$^3r0Lk77x5+M3@P+`7Yv5PCmXcJUChApXZ zDf;~}=n~5gsriT5dB~msyW9vO-xI8ha|bxy0v%L?YqL1<1dFBwaxa~ogs6N$HHz%Hf) zTi+~xtdrvWRqDS{?$5to>XjIuh$>PKv=n}78Qfj1q7vb*>mDDr#v`uE z-Z-4N1F=L0lVO$QnAN)D38STMj2$XIpGEK~6m9+JZ&a?4-r~i5lEtlJqMfQx3Cfa8 zE$4bZSqCc2h4Fv|)d@lvw!D%Zm+Zgv<8lY1VxbH?rW<~ zy1eK8VcE7*1uHHGU6zvCv6#GCAL3hwS1OB5y;+y)Io+L5aqFb_?rDiM`jkjY7<)GI zADRO~71MB+N4d{LIuzH_7E5np1$|ThK`dap$Zikf{U!=}#J6y1=k%z9sgH?}BrNOv zBrq4JlU$tC{ycpz)ee0W^-T{avp8H6QKryKXE30&AXy2W#vp3#-FX4 z$8^=TC3~&Ignj!r`@P`*fIf$kK;38UMFbRp%7%^Pe#+)+ayC$aU0M09xY5`w>BnrJ zNZ(-VR*bvt+JG^nHpItTV@g~4kGdIS_94!q30DVxOrqm1N=rR7AJN<;DP`8<6SFuU z!?MMS2GAQpLgAXh?=%mZ-Y*(@qZ?mcIuC$I#RJ7PuEdxv5INZPM3S@`%7#(a$SJ?H zwgLu}5NGf{$TG#wEIqO(;2y}GO}cncf>&y#A*+(9Tn$$Lz%MPScX#?KcmE-vr!#lt zW?C1Ce zU`B0%7!yi)Gp5xq;#Nq^Gb;t$_jxY=PoKPTvE`L^Y0o7(flh53eSqV-Ei2(%zSNPx zEHB^j-l8mHN!s9QZw;GKKFz##?z1B(rn(^btw4U|t)kCJ?an7yd=+P+R#fWyDkk&o z@l$yiTL9xEFb>VM%TGdG_8g!!>udvawXBTS#elz%WRS1gZFNuoE$00MdAoAGN)KCc zk-jW`zGy-pTD^(Ba@2nC9|RA>Or9W8_Kk;w3kvk7494iKvUpzC2Td_?cSw|vMw=6f za1}RUtfRP=`rU(R`cs-)vrM0O<^+x0vR{CcwoKiG@2!R>q@P|A0z$h^*H7cFzB8Ge_bSQH)72x(u=xkjuvphwiqh> zI)c2DSPkdg`_p_SBW|5JJ(fFah`Rf@MaUJ%#C6eha;BqA>BC+B7|O+6ZyW6B_3GR; zYdnoDZ_k;x$cxn{B{|uSy$Ydi%f)fQF%e|tTxhyJ_l)t zUypd$gZ@=1?;ihwJj;joN*)lMyL2B4ihW~gtVYNA!p@}BGv?HXOwE)6b3wq6nO^aU zMhm$l%?7AAvrx5fRhel9?f(BeW$zHBUdb=C1>SZW(c+U>_(44$kFX}zwsH%Ixhv9qog+OoG{}noSt~O*o{ruqwv+>_ z5M22xH7_uH6?4N`n&5ETswr9Uo=;vV00p(@MmXKL?zCr{v*N{QxnJbzV#_vus=rdd z%>#iOZ2GXS_)7b~?JE56YBdMJHLHoqI#RJaF!!mmkqj|qBG?k`*}mte#Sbuk|R;T2-65^<^AM*k)9t3n>ytY^Ey<;{L z+dfCc#a|VzRT*byDnng19pIrBaL`QnE%;g889UzmzQ6th=7R{ngm;9pA3mqs0r<~k z&G`fGYnOZYvl9OUFOmKSUfRy1AH}PgR?nVnU01m$8~{XFr}lJPJo!O?$w|stu$rgi zT^iddos~^k{=hO5%vSBZLf|#Fy=Q(EML#4$4p-twH{~3!*d1By?zZ&XtZn`78y6Gu zTz25-tjYT3^7N?1@kv3|J#g{o$r0AfJ3GE8WHdU{D9^>g2@lVgLf5hJvyW+)HC3Q{ z2p%xA>~xhGeM>{pzLPRZon8ZhW8D>u4{Dj}{TRY(mg6sf-ejx~;h(!HK#;1$O|>3x z%TD95ui)hAM7vsi7~a;Exvb9)sC)+Xs6@%${FSTQsf;^~iQJfbU&hY(b|ckZcx8LL zT#cX*LOSW+i@Zhp0=@vR*E_dB&Jfg;DUX3Vs&DMZoluNAR)hZw@a*{Xuvz6?O?Nst zSN?<882rxyZPu0fdn~>H(#SbGw``m}*p0tc-MyM~nmuw8^L_w2DRbWy5Gy2r9>fg`wFNB{XdJT|)5>_I*T<&U{>1#SBB(O7CN=R!^ zj!4B(zKd{{mR?`33C8HXq1a_#mlN7(=?*G0&>SSx0K?fTIvFawTCvH8pLqVrH^zU0 znYh7yt>eP;|IfgU04m}e1#D!f}`gb4A z8m-zKY#9wft@>bd-`L6fmA?!}%!lJBragAq%#nPWcY=8|@Kn4yIOnzx4@@&s!g=q>S{VT1ZHW7hKZ+7^`&b=++8al_KVjkawkmaf9|ZQ9fyBySGagl?I7y zTkE(Lyz*|XD{z)XvmFU@O*`RF%y512C+F;gB5C4?M|R8({+!u!F+kX31<}bN54V{b z6yDmwlIr;5j@1AFr_IHG-fRKDTR>fV#y^i0+lNb;39Ge}qd>s!W0)Ev#aQWKFwSUD z@!Q3yC4LW%CV6S)7lZ-kKx8idXtiIDO|}l**ma1PUU}#-uJ}oJiXjW_-d1*92zgdg zp(xdd#zsBRS|EL zzastDAQizVK5n~ZcSJ97`ymLmEb6qOszjTQI+(y*us7?^tTtm~#UF*~Z)3FIVN2mC zNab%=$eER-o*kGj*>d4l`eZTs}wS#Ciol%FtGh~K>{4s1X&SZ=m&`pKf!WdI2`Ru9jmTat}DM6>y zT|wfdV2ITp(OL^WL(7g84%rp9URP7|sFdqHV#6b@qx7G&kS)Z%oI86GszOh1S$>b! z&>929q}|2kuELvSea|Ya!{7N5{DG06N)|JfaZjX_miyYQx(UGcs#^etxOTHNI&rk9znGAAeHlvC*HOGd^B+O^WwGq_qF zrAS|YtF$PLe}mqRvYxy3^!q$Jtp2Bo@X4?RMZeYS>iIXXUisQPfeFfMVey3B9w+>( z7!nN_4?Vh#{xj_}TYjF)<3-FdTI9^bY*Wb65-D?db#8~s9#BHH;kiU}R}QI5YF+Wg z$}kb{@3sqHyLb}HaI)({)inLmG)BwurY#=xm;HQ;Te&tOb(MXkfvYt=pc4~75b4kwEI`IfJ1 zF}&Dr{WDGz0>tENFrDm}0`?|ojVWRo*gqONH#x=ae4*)@*f#x~e_FGJezL2Bm&19Y zf>LT*Q;=Ofh=r=sxxB&NMo17Zo$=_%{xb<{O_4?`kH6emO5%n+~Wx7H{J3 zqz?XoxKN6#OUtci5;<$yfEW5@Dl7LSUMm5NcOve)6}){?P>*(Ktb~bd*o_tPjn2Pl zxK*mof)AOa3R!R^pO)F$x?%%)wo(Wklm#}CVORcdm8y5}xLsd`N0+*pBSQIJ3R=Ti zW~++SD`TLP1a#@Mf++qQvfYn<;VsJ5hbm03;_*^_#m<{hE>O2% zcfetU1V*c4z=vgP4c{e0{zX65)D@JzMKSKeJctIAr!Nb(85>n@|J0#L#EIm*X-b2H zjHouKrp8b?lTB7Vt7hKr`HKp)bO)bk#S=^v)IfL*baL%>j~8?5d~(3e_W$_Y|5Fmi zUqrOd8j@!&d4{Q+@fbw`9BZ(@&sytB3=w^{3>0xo)~j4)u3nY!EQTEBbOxP`c6}Ja zKc}$e?x=H~Sj`94%oE)aB*g+@UpfV9gQ;KhkI#}jHl-7ey7TuD4&pS2U!Za_bLm_p zjl9g0IsHb;Q`NqhvPdxOz?B*DfwOMHGK|40dCzH*6m&GOJN1-!V%BxSHD<2wQtYB9 zqtW(nY4eiI&Wun9&fSKxbJs6uK}LO8Qnn_^2Wkhr_H-9x`>y$O`WhDc(P^A30VD!W z+8@CZ;4yCFg@DhxVejw-;jJ#$$P2VKVSD#r@fMmo3X*B|B~}^E`?moQRwmnax?%zU zqm%E!1B2<6bMuSjBmi8&HqJNro?EbRwhikN9bU@3wU=g7?c^!HeIT~h+q{xSNOvmv z52A#f3?TSvB+uHA} zE=oeG&QckJB^6O;-mfJ7Rpe_YJm{vr8k5{S_T(IV_cEFK^%$hmRs8BPMQYzMWeJX- zlMt4aLC(m-5a)IG`H3R+Lg4mdABgp9t?Y#4V}3>9g&w zwfhf3s;N(BtxG3vG74EvcryXqiKtHX#}%LWrDiMGv%@VWBuesVC$!h^_jLM6Y@-TXal@{MBg+FAm~ z7DGcmNgcilB3Estog^3UDhOwXKAAQJ4;sMwCTj+jgDG2dn9Ti^St?4G%!K$9&2^kN zdK)=-x7%y(fQ5nW68^Bd*?O15UGU3HWimOd~kNV#( zR@na_Q(azM>*`;2u+6`gpW|Bd-6m*5jvs3aA3p}rp62yqDqkT!ZaZgT<%7uywxOj{`Z;i z{qr>s|B1n3M1%PH^$R2e13ypCiT+1c|t!P(Hn~ zG8P&)bD%+UxC;j5X{4(aB`K?M)_w|7_bScnHT zXZ1Uuueqag-}Ek@oZplDW{lB1|0aJ(-Anypv)jJcBCjeeAZ=zDRWC9&mwLx_=DeVt zK@bn}8#}D?kB%0=%HENl9fZC)iF)G45Fr!!{`Y{uWRE9FueM5c;BZz>=3R5K7J3m* z(jACTv|F(FzVHtM_-eg4S-Yz$6c*$562W=TG$jnhm=xOigz+lB%X7MGxg=t(Pk1C< z<4)RX#gv&8J4T71b2w0%)4~8w_#NO@#?mv+#LCSS1Oxh;t|+mVWu=2C_6BlL6OB3z zv+J01Ssr>wO!NRwh~&58SePcxG^{gyG~`th6*(53*FQg;oXJ_?noVN413hRKe>vAF zh&EnpR5p^`{gBc4^PndmnI_#ber4oBP_ap)a3mTXr?4w`d2eI$KEq3EpMOvqsmI%xXA`ksXU!RN}!xY=5txFR-AU4t4-%}Ujw&$gJMXI7NhH@1+%z63cFP>%>!#TDm*ylqGDxXg>6x2UP_W*>Qc^N_wTvLInIf=|KLsNo ztW-nR);NkWMjTOk9PTayD1fk9pIRFqKD``8vmH|4O%T?$=1q~j_75VkxLXjZ2?tP7 z%hz(Vh^%usW=BMxDgEdvEXi)aXe^|yF8ag}>TPS`QY8#I)Tg%Ek+QbKYGpn~5$7K} zNnlbvbrE@1yp#ryPo$iJo@Cbe@xm%AChtPKa0?VOEd(}+U$JDvBSo{oR^H6#Vj!s? zu)pu@TUy$WF|qM}s}T22Sw5HQzuAy1fSEYdiNEDRxs@*NhLYD|i|f0r;PYnui&lCx zg|*%j0Ta#t`tsMj^s&%+prGrZ18$U_Yr%=!Sh*lRCQQn zh??c`DLaFlZXnafQJ5wk^pys(N>hqEJX;z{$5$m;_|@%^P?qnaoOYFsOk z?fAM=+>qjMrG~3>g}`>vG+66JHNIU(yZrEGv$5>ga!yh>e2s$zW-b+Wo<3XLH3$N5 zGOT2^X9bspf^u^p zRb;gi&RUoytyf@h#3e6R1_e$SZFI7uP))F8J3l@O;t?#apn`(Ef^u-UToMqfKA{XJ1-CtxcFRVh_&qTrMn3>G36EYrt4#Nx;tp zVCGl7FOqET$_#sU(k-dD4?u86`KQ!OvNz+R}-K`xPgQ4SYD8DZWLpbi(ns(^MXWk^0{E zpvhb6X*r!jWv3{&7EBVG3YbUE7>d!<3Ma?z7@YF%fHcXP@qLYTvH@C$vQElQPm104 z$%|I@OngDO)pp|4I*SrCcQi=7l#!qwjoc6=`ah1A$2 z!leKKdx3J`wEWyBIX-y{oQ8pw?8?JMYM#KF{%Yb5C)$u3zWC!LO4zxe*wB4}Cs!Fi zchuXK?j60(nQ``@)xN_n=`+e;0i8weZxon_CkBHst)1_dY;v{R;f%luuP;A)s>8*gMwiU%gQtLYaUwPpu_T%~{|2MQoO|S?y;3fc^l9`B4!+TYRvoPp!X zk&!QkE^-#X#J&^@@~M~rGOu=09mQc1o)+Vph{%JZ8Gzg!y(p3Vb_ioRnV{KiLEYQU zv?&fh_+hE&kstzSC~m+=k>6o+bzbY-dCD-DDDD4Pwe)MvZZQR(P%h$DOhs2~qM4kU z_=Pa*$H^9UwcKC7eT^RSZ!Vt>2G$?B!P27iUaMOk_NXfoHq!L_Q+(0m8|8)+qBc+1 z^lKm$FuOqs@wX6?BUzEebYCNHc+N`-x+)W|XkX$j%=*{pxzudQ!`fd&QTwz5OtA&| zp>lwsOw|aG0~-PXi9rawPi#`4N*CGay!o17_D5o2rt~(;yCr9RXq8s#?s6Q3 zJx8rRD((AP0RE}W@X8@QM`#sw!=BzvYb;HuFa#13%3px%#^k|%LY7Ac#j*kLH-uSDN4OPDfbfQF? zAJ~JI3WrL&RJzt%YqI<*-IR8;ZT%0!N9Ehx;nKbMCK9`}iC)}aEjqXeKz|zqNyNcY zjbT$A>8@LA<}0x~csr)UjpCT2*Oath*#ETu@|16}g;x6nA!YzPWEUEbC>Nl$LImAy z;lQS|h>n+sSx1p?u4wW-Tj|ju+(Z$|xS-c9dMaTC-Ad zk?F6+WTHHgIs{}qiDWrvFR$p^*Zvd75UO1~5zcfpoM{6qUS8i7u3v1HzN9D_d%(vY z64rm(Ivs;Y-2_XiY1wrxneJ0R%wB@?mqJI>qgb{ES<-{uJ2dClnH;8A`;NA*-@YoL z8ycANnmK})pYkLZ_=NEwm7OqJ`9M7ED^f*)z$Gfq5b=ij&V}*8Kxp$YVcUb^gFZnu zC_Pi%iYd~@>;+c>$h4>Op^8-hlP_1Q3$j1VJuc5obZsC+2D-7s7lLR&V#~#gfPNKTp2S$q5O<=@uf?BQ{UR+-D8$ z>8bggHSIJXM-iP)`|bb^_?GgpT`HOmh9Z89hx9fAtkOf~N5UTd)YFuv+7oiQaXS-_ zje9h+$e6?qj$gR-Tvz~d&+S{z-lo87$Ll;a*zaw^a!jiP=TL1SUF6@+81jPIcNP3^ zxOjv|&eX6+(V5p;Z*8UlJ#pbV5giGlpOGyxIm0BnyfSm9)q5s86w86Gr}l6V;eSpj%aTt)7_WriFqo9u@f z^G$P4X<2WEK7$D43stb1i;XLOTdk##lX6}JRW43R7EZy?s*5$ln+@ zLvg!)NGvB^Ndjk(o_9F=>jG{iXm1m?c)TqO-7A9F4{-BEag5gh$CH#}^YAdZgCKUosV;5+05Z zX8ZvbFF<Qfo=U`SfE^clla8uC)Xxg%H5)=*yxUi%hqCP$3>^u~{3dpI%CR5=9C`NZ zS2uw}Z8G`QfDoB!OS=MS7TX4DfbC&w(tv}&Z+KOH=v#Xm5j3-Td_oV)@6{NuF;~gU zY+~>qkdjPZKF>6cgdLa~s|L~?0@du=0{ts0yomwT@~JW zh|eKsHk6!w$Ux0MLfa5`rXGz?t9tDrFV7M@qOFQfDxi0S@LDrdf7_946DL72QT{ss zpw|{}j+Z20 zm@W#qP2UA63tX7C{>A{^a#7be6U=R82kdSVuq(R3`Xar;~97j7fp!l*po;Q&ouCT&6Fwh8tQD1X-^ z>awliSc&S+oN|?GqHPz}2T1l@C}F+Rvaxbs=1hX2l3NDXH`p zcq5kuN)fUkvP4vE*W!Nux1bazJz4fsBJ?60#*mwTE0?dYzeyai*lNDv8kA?Uv+HBH zP?rfjOyjOpT~95_t2F90(*TMW;E}0pjK))1zHhDMiML#jUCfOsbx>Cktk^qD>yX!} z7mx-rfEC10!k)h3cND(e53j?D>Teor63(hO0M*s>q9$l+dxj z8}zOpT+E2bQS1*`X{{5w(9*d_YvT9RlK$dg*|qU7ZPl(caxe7+%!86?P17z|Qornc z%0he-bhfpsbmhWf?NH+Y3Z?p(SEcMnX?;cFSCmKPwL9Rw4z`v=GnLREp=JMJDRPUg z;tE8*rJ{j2(~!5Xd{+K^0}XV_iqAel*IKS;Iu}L)jS9kPjtMgDR7du`BZb%H@6mh5 zIyYiah-UTeqHG3F&m6QpOw^ei%~9=2om8dOyQ#cDZa{_J6GtH|2>2JLb*7BpNtT+j zB|Wq&5n3fWMs7n|v!^AD$;rcc(X5Ldc+iF@*Wp9Hwa1w%fQiL`6d@N#5Kfh-VP(6G z8BXA^4O+qLzw^YP;Z>v$)7#{Za}{( z>X7&Jkp0QzB^1hbClS^qgjq|yON2_+RQdfyR1VwB3`>+9;dE09t3WhN&|rDE5~M(- zVk^*CGHkHMaxbeN^Q7)qsFOhevf;ZNd>>9NF75h&et5}(gXYnXADuqo?1lO84Uc(Y zaM_s`w=H(sm#)8A)@&KpADWZ<<5jm5ggjK``T-9{Pq@*O9oRohM4Jn@)zWn4SFX6W{ zA*=Oe(1q~fSJS967yjXRy?<-_nz89@#l8U1k_$HXPZY>c-*D8A;0n%6%y|yiu>(}O zok?ZYf|olfpOnvtK($m3JXA0|kyGoGk(IV);k!Wlog>(iZ5~2JO~A&u zaEiG_F|#_xA1jp}$u;)Sm=#|PC-_5Z9k@8C3Ox8wdt2-V5#@7fc_V3JnwmkTB&Bz; zaI=;sn(urgu|*3MMPjiD1(2^J;u=f8Pgbr3W2m(A1X;T>bXBChA85Ew$^69}grMVj zZjr-pfsX_;P{-VCY-Pw16U?D0?8!^`cu_;34R|?E>Z?x;f{OoZ=v%NDyhx!5$q*hn zF5yEx$oj}GS@m{=p{OYVF@*(PL_{o-LKlq-lbO=Ot9wW3MVOrY1yB z{)t+Lf>}W38$sj3S^`^2d)y9X(?ap`A8;@6jy!%rRl+rmH0Jn93i~R}(cTk_aH(Xc ziY2P`T8vpMw0nvuX5n^lP}Qy@qZ3BspQL$6^Zdial1&@iHb3tBIJBCrGfP*p)9Vk^tt!W zdVP@zVWMQdsubo!nELXG4Ht%8qRO<*hF=e&Fw#nhh9fy*&D{hLh)o)oYxKI zT1i)(Ru{%~%@gCuasV^pM=~7G~f@FZS z$&&zTDibMJ%3^W2cBsCVA70y4fJ!=YWB|SoQX@Y|M~v!_;fLtHy}r;r_IAtE1gr;N ze3B!LbaU^Z4nll0UVXC2`NFjgf9SigZqQ^`rjYm2qPUK8T)N;J7w0MF8NOzh#$2T6 z(CuxeK&r)CK(HvqbkE8#zA z&HLI;#=oZOhc+H6&c0r$&O0}>pB(y=NX(5!t;I)G4G5?Er7$R*-;@3MSv{z+29J|u z^NmQDW)Z`rbXlNuEmC97OdX%gv39O3ukawbj;PI)`>Qb3QpnR@cN68H7f9BaeX30^ zcb$aU5qyjer!EvS-Npk78!jpK_io#s@^R^owPf2G*~X(Zh$5e}SQk9hk3nO=vWgGR zA}8J%Y)nXU4Xi0?nfShpv-pnQF>};yxweTD?h>qAP_B15NK9Wza3sp-q%%OFI1fN4 zsD?|ZprK&nPG!AZM z=5$sO7yZaT$vfn9eHcsndUM+FXIEja+HFR~so~o?7O|G4m40Bk_-tha%f(GfOhFKK zUD?njJqsafKseTN*|tBB2oUL(5K52A_!mx+Ju+j$FoUzv<^ld`-kX&ux;VwH(n|ZG ztXlWm1l2ap25JIRcBWfwQ~PeGvdy)OEO9h8ZdB6?aYV|7Ir7q0?#ml8b7RR`kj{j* zO;PO*Qwqmin`8mYuyC*3;C_UO@zNI-8?-yr7JvT?R7RQ4E#S>YMoW0}N zBQ%rFV5^HDTA>w3`*+6vL+sd?zJ-@uZTnehdmd8U5=adkwxvwZbpp--6$3Pbty{+C zZPS+5;YP2`1$i&Vhx@yHc6BDT-;gF^ezQ^!-whHeHF!0$y!Ygl1t8_h(E+CI>8x|# z+|7$R9Y36*$g2NAfMZe$8pn4%IHP}upO?WJE3IjxumBjJL>HOB9wjdX5&gM?RE1_) zco)_km*B(_#{Tlu>gpd9@+GJgP?TK^Ip_#aN8J2K6*)9o`e;EC%$)TlFbrJU9@u15 zU>@ziXoYDeW=Mfnn!#me@6m~iRN%2hjUqcI&Trp;nZOs!hOBMUY{n==Jo8}x-fLfC z9hKSeiM?%JuldSrmn7Me;27{VDD#=Rn@%!yTz{Oal(ii6GXiqd+fIfqH|kh=75YJQ zGLJNn8|#Cy21Luu_=w-?=!}Sb^cGQ1^QUJ#%Ya##2b0kvd6hXzkj`XT?1)1YE0($S z5SysX6uWJ3zB1J{B!7Q0V}ik3W}t*km{L?1%Z0id>H5?LzfCDRw%|062;R=Eb&baK zV!CdaX2JNAExRuI0)>@3{D$k%1$j4b1Jv+VxZx2Lh-dxji<%2`3EUd?3RXRROk~QL zv~7hpmnGtPLbqJlvh&HPFokNdc0ne(r3KhARv6NfV9!PUDfgB* z0~X(@g{lc*(?a;RW@Z_rDh|5rEAj$spO7Q6sU|p;@H^*+Ihe#Yj@N_s zO|^Vtb;5|lR%#}NWYXd&RPL?=_l=p_8ifrH!9Qk8DLClmls6^l9Q8)fwWGmvE@X=< z-Plglofw>Iy0A*Yz-3o2wjQMD8Sq!7=t z@>jYoQLgM<-?~a_Rg*--q?)wxm@BdA%&7KiWDd0QeQ0}5{}n?>09EvZ%jSH+t3Wa4 z(YTL<_1krJ6QIn}exq%?Bjl(vSlU@3Io?Cq?>3N;FaT#|+ zH{LiG=~iW&B{m^6+6lG{pr(s~=3*tzR2YH$=>=D14%`n{Q3elAL58k$GS_bnNgFU9 zFB~2mF_x!`S^`!a`$mhFjzw_ z4u4rg^#q>Ep$E#>3~zQvt|)!8AI#r6ZRH3WA025S-qoCEFk1VbkN@{_bxB2D*i1cl zx3(Rrc4-R^NSq1wJ-3Uy+isM)<`oobrIAL&pGa@h^^#Na{dy)tv#5Cj^W^jFIXj}g<<&6{2@Tv(M{ zi6ZD&g<412aju9r(`cMQX~SZ9)0CO9!&ZA@xQJ*G9Sad~>AfX0X?GAKCTS;bCdq)i zudEMc7hZ_ym+vFhIQK9a(BvHUG{d&a7TZKQywq4w}wEdK36G`bBC*&kggzxCK zHyJ8{1^X`=q1>Ei3JKzL-h#M`#&F0NwjaqxO|L2}a{SCQU9qxr{~(5;lK41fL*)FX zlmCFZ9?)_N4+CLQg}`o1`&=@67HFxC;x8n9h+xoNV2)g;Ps1)0wFuP>@Q3$1!k*o& z@~97%Tp?R(ksL>t{wq0;O11P(rMNvcosi+PosPlH3&s5o)KJM6PjbI7vy1kQ7o2L@ z9<3J6VE^$bA8h!Gz8j21)q2pO+mb6vMC}0P#o!{=iYmoJYiLl8sR&0Ii|XVw1Ldf7 zZG~@>IhXE7NPCj3z`+G4*A`Er-60=S($t^ka6we-kOuhU;URQY7CO)NHJAZHT7Nj=AjCv9wU8xS~;%1$OdFD(VDPiDA=e>F%L zsxF?c>sD{f0?(c=vgBi4V+SfzkO1wiFzo{yO9wTf2(o_K_^lxr{Rdz4v!o9gmkZ1B zBUOO9eLA(Wd}%(rNeV2tjp|o*QhqFSBd~-i3YZA^9vx?4!>8E{aFI#{cRK8g>nYiE z5T(Q;?*T34WBA)~1M|XK^O~q@;MS#ETs2D2?y(Uhzc459aM3sK+bv-)K4iw=da2fL zT1^3&NXSaSVr)h2dHLyA@YbUfnA$tHG^@V?f%IpI)rh4Ag-i7lk)gMc+IfWGFrat>DM zrX$nO@sQmvv-Z*cfX~ZRI2_{o6_8Y=%f?Ssf{mNWSX@v?F`3IO@F?XQCFrMPRTAxE zC-R_cPNE30g4BNe+UkyXyy5Z?+xO;Rdn475(n`dTVM(8#{#?zaQBss`UVcu@CwklC z`g6{F>^J(GP;wdkt-22cKbOkzPpA;%ADfL&wTaGw7izEJ4(t<}8#T|8G9?`edMxHwsfOdJ7|BN*f7wMNZU6Gc&{QO6Oblvs7126E zV+9=0oW?H}8h3KMr%D|w_R)BahwmT{^0tQU1q4xYxTk$Nan&*N`mJaYL}-AIB3R$!t$V{!QN zH$CLYcU!3q=9Y=<5SwkrHIGU>LvP{?;1El!W#C^+RXev3#9Fc^(v%0PtgYSg4Qljz zXnQ~_U9YKI++OsB{tLh9kHWJe<_KiV1o{We;p`1X=VE8x37?|^EA51UVUn4kQ6lLx z``*^ubt(qG0At-qu+_(S0;_An^(?`dKpGc0UkptCKL}ZBLant-v+I^4WL2iRbJ{odhDT`eLsg(cFsOK7=$@1JAc6HO?le{5P%3bX&3(V^O-ov2_j3q3 z+b8h&o}kO&wRqs1rgCKIVC5|zxw$6xI zc41b@p$T_LvAOjJD5ywzRv>C}%*vdqAYOuC$j1cvwHx){Cd>!VfQ0%K{&|#7f3B7JBu0OK z-;wnsX{Ir}-kuX(qD>iODxr3vXAPiL*g49mtTodwrNXlk!)}WzI>!Z@e{Rb8A4J|S zQJct;KP3Mk#6$i+0G&W$zsF7`Z8t-erVWJIQKpdxEzZ(gzQVp4M4u?sD%~6Pp`@~9 zZp;n$SMvGHRAUCUvtv{a&VT72LN_McIMCF^wz7!qE&9Yn{qkjLV_joWMXd&OCuCbD zGI88aJdJrmxRHor@R@<3Zz*{n>6#lsNflCCQnC9NoV}$QjX#?N&SYXx;JHZlV_(+L z!L&kRSt`p!#}fRCbo6;fb&RcryuHtKbex$Rry_OgBvvToa_=v0c^2>7oXk|jtPF-O zU&J;Zio66?nMh7vB2ASBa(=D-z(~!n&4oK`r#YAe{xV#me!|F z++-%CuU`F&dFBoc4dYb1q8F-uwj+lF^p^Xy|7NU>(i7rSLm+)b?nMbpHURSAgbRpOEw;3&f2sV%Mb98Na?wLqfa(CXKNn zDe=)QkHGRsY7mC$8W5XK1zuU5dJTzDD~d6jgko5QWYcp~LbagQhD7`FY9c#O-3{5Ade^W=Q>2Df50uf<%i@Rnp~#b>(9bGtu^ zZ{d(7U9?rQC0SwSinCw4McLIux)yZ>#;h3;DW25mTV*<559pe}*8)XMI8W9IgB!G4 z`7g+^B?jM+Yc`JoAYNRcyX08PB&p_7K*-VS{{RBH8i`K2A^!k^UG6)`M0j-3?na;C z3xL+5O3Ju>)r$ghhQjvuCPP>*6KbLD1-P+3#XHNv5N75SHRl3tc_$pW9vB(lg9bsr z$&8N(Jf5{z`LWJOT&{Js*>zUlf!DgNm%~?Ac$n~*eDQM#EHVD->HG<6!1L*3Pyre z$n>s&PSv)-TNK%n`B#||q#cD+v5bB8qf}CVf?mYUA?sFMP z4CNyX*)WuBkI=HVJ;OVTWZlI%6qbnX7Df#L2$qF7!V@_RqO>xr9=@h`^_BW{inJAw zoL*P^QH>QUcy)M%$xzuF6 zb+l-ZOdVoXDVE=WSaaqS{EYOjX358QMX?ZVwqQajd~6IlAMby zn2_#bG>G?sQ!-m3YkU!5D!m&awVRgmDKTg?ecZ37BG(MVIV~rST*$Vz!4E(pn5Lk+|5EsCsTji>24#yF&E^hW!YvBQ=XsUg&i0U?RD% z$rioH9Zs}E^pBQ$83hvMQbu-v0^33aNO&D9u_XEqF6v%{pEu;!>}qcyi*D5SW{W=o zj|rn9XhMM+>pCh+)H!x-1*nCmY>ozgt?0zGVKnD0#4pj%vSQ#;(xY6~y9U+d_~J-! zcrG02UZQ`XFf28jl&P1y9GX;)O*lW|=W00kusq;PzdY9@a5&r-Op@sPyy1tQc8;=*nFFPHGBUd_ipS^0#Yq-_544^iY zZ8Yev+#2Jgu{Y)klXCeG+Ax@%-b9F%ipCmmBLKV`*^NWoV^I@)&41EdZp3n8Ym#VW znKE3N#^Z)m`FKGn5ul~1LhjN<*nNooB&6mhCdc2S4&R$bPmbd>?-hN8 z5@{E`TX`c|pzolS3nSZDlWIx#{{TnoKikX*pO0GY@FnefQM4o%NoXriu(CH$ErW6w zUmgB=f;-_MZj(+5zxt4=o>hCmb#$&t`4-NJd2XQY7){!K%55~(P}=tRO4&{9CM6GG z{{V&Eqzk}{en*2Iz00-0c=Ah)hJz~VcnWH>(;J^i6*X2^WxH?hTJ@lz-@q$gKa<-R zIl-QzBAZk>V-3UsAP7yRwK_Q17grRg#GB-?=KlZ~z5ScFgv6G)v`mwqj zEMmkQw(M1ex(aPO(g*4Qu)at{j_@*ryY>Au*+R-sA1JfaAxTS3IYs)A-gs7{UD)6y z$C?U0w&+2dO4=z$tO+0Gq-6~5<%%W(KIygkNVmv@^ao;nGmpvkEReVpCI*8tk(t|lHsl@|B7-i^wQ)LYcK z<43^q#-Row5Ire7icRK7dBWdeE^8VJ(AAJ>`@N(+(OGaqO|#hgO2SX82kKzJgjaGs z>H`ak5gDW(EnEH(+!YcY91y!?kHqdV!0uf(ATG){P{NRjO=OnVQ2UMU-tv3_?KsGl z3q!KdK;V&7r*4Uvc*U5gMM8wF>_mMS^NuLCWAsXmQauC@YSU1Q~b5G1s3sHMmYplc{ za+s=dd(NoUvM++yc0$U#crwn{5v1#a0ty#sGD6a*owVqO+?6e$3!CJtG8aMr#@l`hLQF zCnz613=-7tvJ)?GC-PZL{{X?F;xt1-+;R9bc!AqycC}=rq=!l-XUJv0pX)|nR-F14 z{{XS{LgIH+9gi_k-aM!B$usvx2`Rr9u`5m^{6$ofL@xz#-;#J<&@+aRJAi)zaGfr> z2;#>dYGOiAlJBsz2MN64+_1&H{{U?|l4Qzg)A5E!Ig!N2R(N_yw7~th62_yJmR7A)_(}QT6PsV(VXmzqoK19x;?V@d^ zXd7(uOz=cWXJ6z}-`XxfN@Te#sZhGOm5I&W{AFg7Q(F7OkeM+hZO+@aAE^v#6sY)z z5UkCaML{arW`tyI?#FYLUWMO*YD^;^?Ybo-PvCZ*NP_5L`ZQU%ED_YAPXwMM%@w<2 zxZcz85n8_z*4{P@UBS$rhPjb6*O98(fsMtA57##yAFPtKnlHLtF%iL?#%?|Z7j%{T zVlW-hLMEzqK+@SKsy7sNU5ZPuk+Ks{$w8}APvFsV7M2z&<*f+hCbuZi{7bcS?BHL~C))2QRUjoTc`+NO*A(=)ekeWSF=^%(4rpBSb+?;4{ zggM%<`4Ci38;WRByL^UlG2KwpY;{_++-}54{nF?lkdleaFe^(z8#f^J*o4TA zQ34eq7>&utPmvDQ8rO3Rz{JKKuH;&D+{7cjNZb}NvTP8Wtwfi2*l3pqrM(h}5|<>k zIXH$X2H0ay)Xhj59mvz#`6YcsO8IbNDZxo=2|^-TJf|L_AppeZH!#^^GJB){071N-KURbr z{{R^J^weZT8*a*yMJ5E+_pp;%RM4VlJDuchJo=5ptJM?c&jN7@-aC$;-K%3bH&jKC zYe>6_cO{|nAqo^wBsDRv%wm!yp*U##;seO=&oT3GI->@K?uJqvU7E=&M32~duFR1( z>%Aup5G@ec#*D6`FfTfxEqX({k;9kR-HFOfQ6?`8R-}*7sFaLQYbIz2(n|FSl%fnt zV+GORL`v&XX`~+Tm?OX^PupSB;{@lRYp*AD{ZCQNw*sM0=9u96EkWr{8;Q!1eg*!G z-GzL&`e0)oYW$l$Q-;#UF)xW%vgufM{JuGOfn~IH395-b_;HCs>`A(!o3nC--wjAhG_8YZV6X?VT6P%1{hZ zC^19z?qs;E>;`To{{UetecjdmFzok>)E#aFyeg#EID8*p>0-EWrI^om^xN^s5Mgy^ zua&N|q*=C_jLM91uQ`$9*K+tWIrTuFd zB3_J6g8^~9V^kdKYi0PiBquAuJTI@(l>nP#_~!)Lt9doz?;B0K+W3y~v2IR{N_2j3 zAcL_$y!Op58>BW#HN_{aY;=haDf|X*2)wB6zGoIdlO}j8(o$Fn5qYbTZXL>4Y$YRte z7rXJvmX*{FR#8CrB`yYnU=6AJN+^vJ$FT$Yb+au<^tzxg{o@R&xmp?@Z5 zF0A;RX3df+c}tRXu@l|R>gs{>877St{S&aPU|YKGxDq@VWDD5Pa$n04K~zt?MAMBl z()iw4nQG!XJ}w1HC~Ejz15-p_jDe%AqWZ>yy3^x$Av+1IijNEdy}1?Y4qBx%gLuqK z{{U;?90Yumya1qVn$|O1=r!LH9utWE{C-0yZN#E#CdzB^jpF5Nx$}%ltu>3w#O=te zhZq`p=V3U9$=0yzZ?^G@Q`+&xLn{qv4NYk_=8%w%ja+wV?cM5A4qd=^uyogb;Oi2U zMYYw|HVr2|55D~ws49{lDa_5KL)h41q<|%F596%R7g}D!dhxB{1x-f1>l<_=hwl{u z-!S8-1K~+IJdV z;2P)rQ?@&`=U>5^53&0%=}3;Gua;c8TvYAewTY?d5y`^Z6J}mApieb(W23zJZ|N~; zdNJ0Y1CX~tG#I;@X0xikjEtu{M+!!*m_(Ux)2*5hK!{SgWp!SKbQ8xlDj=RyVJB8NHD8(94=~r=$C~^*wk@JYed$ zaxE-7{mfAIFU;5Jsi{}+L-eKqrl4)(4Mp8yz<&NQydq6}Ty}NKnp$-n0^xz8>rSg2 zTp|ud@>h)4{iACA{{UE1=DIM1<@U~Za^39=<;!k0t9AT2yMl|KZ}Ett9_{Dbi>d(K zakXH1;olA*cmtKZnl;*(gRZy&Yc{&rYgaW0n^^ul+ylzq-+O6@h;AL9AC+*ZzH2s{ z`@Lh#LvMGBtl5ds>6{J>?|Z?o4LMa#)qE}rW}b=%f_LWxiP;7`&mLwwB3%x+&cxHk zqrUf&@G2Yb6Am~6k^cbPa;32cY{04{KqWUr<3(HrzHl>xX}wA|;tCxm^_vUe5&^-8T8SX{fg8%x$N~C* z+0~wm+&!F5I|rP09~#NzF+9vFTOdC1<>w)_pTlq{07n5Iro6mfjxb)S9a=ZM*uenW z>+75e6c(lH1AIbl;c-v*OssC;Wz^JHoSA;Lg}~F-_Q?*71m~63B?p1Mb`AO7N0`&S zR%DHK!(M(dh?t7fm1ntE1H0?eqt6HEj*y=@D5@}*jrqjQib5|$K)CZ0&N>G)Q%e_( zFrKl9Y0k|r&P!CU2C)FQ)yktl(NFzh83LPHyqd!kork7%fGAMCMhTk}!KPx}8luVH ziSvoef_#)SgL1+%t}(-Wc6BkZ)zGT3(Vi{c#e^o!eDSvwhl=CT@{UkYruByEQ@!tf z^@+6WcPz(kv%`+YiDlkXwa4slCSDK7#ZJQ`VTm-pOtlzFzZ-7&z^J;O94~EQqTvyE zn$2o$$DHdr{{R`=8R@9ys|z1Hge$1kz^~Jq296YSwyCLrY zf1vDL<-GynjtD}ecFX`kp)e>2h>NUC677C4J1vjfbAV1@I^9PUPaYNaLjhH#qVOw| z?h>L&xF3z;LN+DC%HA(VF&#CsXCNH%e%xn`*Bd~jxHY^qVWa$c#u0^wTz0rv#He}K z>Y!db!h|lI-E)HlJ&!zTaUxaYPt`D1h^zTxEwhThJN+aDkx<2cFx9?1*eoLu-mt5Q z5GFae9aFLRZhVOLBN_hE{6MDV&E=6XfqcgfmA9MooG9ZELyP`0IFxj4(p)4F`IDC+ z=S_g`w7+?!gLq6qD`L+o%{}@t~`QI2YZNA?) ziKjGZ=yEYRIviDA_kL~yQ@u^)SJEGH;7)rMaZEw9)5C+e2OeU2Mi6o-hM<`Mr@R#H1=ZJu#{U5EIN)fVZ_$uR z>z}g>eh7%*kPTq_5@xLAZ{$Bt4nqA3gEs#F8311CGk~R1m>`jOZQ(IMo}w^YQ3 zv2hj&L}qGGalZcm-CS~8G{~E2)p8>aW%`&38%ZaP{{VPe+BSPQ%36ziJdP;e?PA(j z$9P2=X!DNawnd=~l08;9y^Y5ha6FmG7Dn~=B+AO;(9Zt=?rK#AuGx6}lM?tT#%i(@ zEl?kqj2bOa1F;8f8mrt$s zcZpX}rwC!45Rg|yCU0cC9(Hq)sb+-Q>%`58BgA>|^tf{H`9EOF4Baew^fF)@ft7PP z&7uq8(I|Y=0z$Sn^FZ+~%s$$7Cxkb_)^m}kH z8%HQnl~khZd>ZF?jD?2YJBQDVrlE23qhRe?PmXp)V z3Rj{NeBh|#$6IH0zsogQ2-5-DQ-^v9P*$oxK||25rx7D!esKs;Xm>h?%YtiZV8J20 z;e7B;cQfqD0VbE_!f0Jl_{M{r@e{43#AD~+?*oxRr zjjzyPq%y@|ztPGnC=5IU{$iFQmzT);ab1bb7mw!wzKF}@!o0ZS7I^?^ zIj3XOn!z7;XmUA1j?=FJCUPu@92h{5KepVK&4drv=qL_ePZ}{o1*GGQMlPv-oGUwI z<5|hiJ@cD-qJVo0j+#H5OC#}dpj~*x9uPTKH=nn@A9asAzum#_l}UioEh*@laH-Ki z?^_-9aOwgpASuX}<^KR{zX%ZAaSu=h7d0|TPk3`rVRUcK9cUynD|bJ(2bBu*ZuzFd4Ns;W`DKa2(8)x8+mYN!XBeE$IMI%uz% zv-kXCpc!-sD}2rS-b$|x>s}>!`Y<#H&qH1B2$~K9=c52eRhJvm`EcC;l{J_XpSJ`# z7pE=S&BG?xcWbP$4lbN(_{~vtv6f+rgY(8Mu=zIQa$W4>St$CP)Yr}(Non(OP?|Pt z-dT|3<@0bguFmjkKH~lE1t4iCQTvJ!rVAW8TwE zPmSQfn;rs5uR6dS!VB0szyXM@o(Lu_8sW0oh^+0_N^aL@z2bRix?BJ(Q{i!9K1pbp z1l9QB)Oj~B3uG~PiR8#9o!I)sYC}c+2)p7xv4s#w1?Ks|;d(Eo&#RTUg)g09MOxlW zHS+K9V-%VfI0a~3#uzTcy>37rJ9z;qJ{;JC(;#>cN15(9IF_riW~M$>*3 z$T2h>wCVose}rSXUo6m zj8#ji`7yEfV(5sx^3NLi$R|HjTX&j8>a_Fo(Q{)RSIxeRV;DK@`N=?y0(E_VSTr`_ zpg`r>*^wD+pqpwJ1!$on_+!Ub<>G{M@eBb7(A|F@_X&^KpSzpY9ZSRcI54lS9e2R? zdt6otDeK>!k0G3bE8U#21ciPs41IQRVlgnCb8!%R4It@SaicwFWHy&Orw^6`o_ zu$%e6jNIMSA2{gSxN8O=Q-=%7InfeYYXxqQNZ|pMrkpo@+^AO0W9t!0>3HqQS#sTQ zVg{)cAdFIOk#LCAIbZJ)oLc)F=P(~%miW&zGMipBd0bNhLA)FObBGVx7x=MVxi41G z#wc_9@@Y9_Dgoyx_~{6xiC_un&e1Tn~IS zFGg+bmA*9MVJ!;y5tsn5ICE3Z7P8W<$>%jzO$~FqkZzYNfBbKZv=r^(xF|nocwAJ} zBRW=SFt;cg3}7#JoT+E14NHkoz8_cxjZUBMG?5jRRfiGW-$cs&^ZVuY4#(X>zo8Nx z^7L$B;I{h4?mil|wSPcDIRY84D0T6>ig0lYh5^OaRGo2&ym?n4vJVIAfT7rNl*Tnu z+5Z4pHk#MH@%3>+h5&FA4crLI8kPL(DRnLUyLSHoxw0pqy@|60vtBT^(Qc=Z!X}#E zoQ=Cxs`fnOLMGf0wn|=I1&wEP0`-Jd|U~%LwZS$kPP4u=QtH< zxNBdG5zCA`V2QM=%Kre3so%sf1gabe$CPpU48y?eROawr08hzU{3q$iBh%z|W3B8> z8Ay||U{`F(;9~0?@465T54ReNL$8N}z!(hFHOEF2Qa5p++Gdox9)kCfiPrANAfSAoYM>shV?6Q?2k~ zj|476-)1@nxw4Nw7pOT7BUmg)kvTs?GSC%MoEj>MCsTJ2Py^FL&%R7V%3$&9NkV+G-ydU_mt?^Nrz5;etc&pJ}WO^N6yeK<{2$V&+?&1XA;qpb(;ddd^!6(V>qs_i-~W#*s60++gE1 z*;XXT zCls!`)-Km&cW*ZUM@bwXjU zy%hWg9k-BUN_rPx8uOLknhU1^pw%1?LXh^n7_XN|@H#VCczNeWHU(WCvaYr^^x62p zn#HyDrZ;P?7#JE!^NUxe@AZHq{8;N^&3%&@)dfGT7)%X3mqb?c>l&)_caxr`JVMF& zVT)Uw;%zPB`j~YCUAc4c8pgoIH9ecb9RN)BZg)*)__`=J^@K80*$-YEtvvK=X@@u} z@d3L=2|$fsCSs}i*M&@8;cyEgHd9I0bZ`Mdq#Yk8tQS*EO69}o1D`X2J}?vp9ugp! z05WZHJ8N3wTFsqZY;-=xVbDkOvvvN1Hc`tQ`aT~202nTtMd+C-UuF0`=F;756@?4;8(Y{qofIi$Sw@0_=*}eY& zwfM*^Ht*lwP)LA>>|-i+G#QAWL~oxN4=bO3aNS`i1(6=P*^T!jHM`bA5l!?|cZf0N zHYI9*SR@BSdF`z@pTLJ{<>w)-Xok-5S4eSh9N|ztR7A3Q4PY$_$nYK$o2)`|CoT9g z5Jy~)drcUQLbHSZV$y?3AoOrl?1BBRhe*?{>}{{XYbLKQ{a z{;>f-alPLdnGJFk*~H40%VH3C~=E(?;~*Lae(%-L1; zWR_GT!GJW{1bevjh(PP&xp2B5J%Kmb#ARC0uJv$Nx#AhQwMKyd0Pw)Z=$-E%sRj>N zMO9L7a^nO94-)~vVUh>a$%`>R9lrIg(~{Ngb17&Zop z&{bSyl>vmy=^yeL2w z0PokvC%6PWM;NH8_%9b0kfXPUNq{5R6!zS^bhqor`KC$J(g-gmB{q$iMd)(g% ztQ?0u8kbWOoaT?4amT#fS??M;k@qJUA)wF-*kCrDk>kdPIgNoWvf8yu+yQqAJZ}O3Duq{03=K$B*E@OY_{Ja!r7!Jg7*fl*t!Y2D zFG6h`F4kE(gWWTD0_mo@^oCFZ)agomAH$X@c#A0YJkBv73B>n*n=u|@zkWaFBXtA6 zke3Q5U{5k#%_vmn&j$aaz9fm5eTR;A6=Q8$#=hQxq4dH*yON z=;o8Q;q^gP$ zHPTbV;<7f9b`S{b1Fc2MF1RmV@syLdc23t3DTbr`{9<($Xy2g!069qnFe$a~?B#ar&U zq*Nno=3`M!?_6((Il9g0+;9v)l0(k^aT#C312o=;2~N7f5RwWntC0md>xzFl6im@6 z(catuPk88L=bF4x&8vl`R7K|4d(JxUzU9j#S_ZHkpo0b=YsRrU_ru;PdO$lxPIG=z z-~2*jUJDVratnAax#mapRoD^KwaW|m%0H0GB@djl=NQ1WxYy1kOLla|7K>kCM=v#y ze6khsn>Zsp1I#el#?AwPs7|Zej~;VVQ(|bpE;Ep!0tD%jFmED+hqu7QD8xLq!O>mj#IqlfXktgI zxvuWz5KVZgGWCSoZgtF}0!H?wCn2=)LqBV zjAjG!PlMToe?Xv1)W$zWp~BtlJD5F)4i<;^gFu9QkCE2#jYJ#l5>wSMtHh3zrnwX~ zt;HK&m?=Ub(1(q4F(Y8B5S$95>)?xst?(ck< zkfA_omkDKwPcCpjdWi2?&A9KIym{mDT#ou8Yv*nZPB*`YSpMR>{{S0o=4Rrc+>__O z)G$5Bvry=`wmY@)tVXMmIO*0E!g3#+Jdj48d}QS8aCq)ingn|WSWZfJ}r$z?;% z1_gn8HGW(Qe{@l|+V5g0I<;ClrGE|r>0v-A9gW~`pxCT}PaX;q|1A=mdmCM$Cmy0zyJ{Q{5WU-0K9+3+ZD3Z#qtn8 zjGzxA{Riv1`TOK?h-*xEoQLBUsuH=QW4~Ca(PL+sn`^tCHhg>r0JVATrlU^DYN?JgB2icdJ>nZVFO+zLG$(0zyM zYbi^nn1}mcz;OspnDf`Xbr1wJoF?bzAbj5*oa$DF{&6(ys%-LLO|5X9Y5JA`;NUkD* zEeeR-Wk!>QMHcm%s25<@JmpChy?^64@|HJmGtJ83VFE9eZzaT?uvy!Tl5MRXP&YE0 zM4aXzjD+I5-a{>Y_gr(dU>}^|2bBqSMrS77A3ttrN2#aFUj_)G`T@tN$xjM*uII)Q z6tVnAw~30>@|*j4%@9BuLeKA6!hnwRlwF4LNq4_|p0Lvf=UW4dmsSFRWs2rqI-16M zU**18gUR_~xj&(;*qbqeI7K@hWjX{Nw2t37d&u6rZ#A%a7(d6(ZGFA_$Y-JqIt)k_ zOu`Bta(oUbMKmGbPdm5Cm4WAq!anU@vAk;|i+RI|-`)tXh}z@L(mFuca1R*)*#2)o z+|^tJN>VFStKKlD6>>sH>f(Z0^cbElK{3-dgi>{r!@zP8@)$jmkEMfton<5{*R**{ z&pA<9_xBvV&fcQ1@-{G5J9xGgzL#0Bu90Zoyt=^dg9@wuLR4S%>Y$f`hIdAl`+(#b(vDo5iK9rl+*xGBnpk9EUz-$}#XQXDkj zS@FJBGGTSudFty<2qR|8;lDm|HSkd8o4_$e6&@AZ=Gxu11#%HCn>iU>`SRenLqJCy zyarQF!8AuMapAlrHbr8OkiWlK-Vg_^oG-k6yjl%9!mT7Vr?U>sz+G2|j9kY|A?8<4 zjN}v~0w24LLtq_U4p(}y4v1@oT__Ik2KcNHj)KA!5bp#IF?Dnyj|GL+W###8F^&zuxy*%QWO_3_Km>&_MoT77>j&aowmjSkP2cqr`n z*#`}tm^X~M8ZI)NdBh2$)(8%`*kJ?TBIBV6*`TOn%uZjlv+c$*_x}KuR;pc_r?;~e zV9h7#sQI`Mhn(SrChcA?#%|Si+km?C{M@MeL9SCbX`{b|z$-w5$>SEO2(bX=M#>O9{EtmI39 zl83x}b>I{mPbPBSNBSHXGnZEuQz2USIb|hwpK!s*0WJW~CcQuN>y+*&po6_~p8L@vPXZHdM}H zoH|9DCi%^w7h%-j&n_~?sI!50-<&Ed;hS`!dtwAaM*B7sG(EFq;4o&57rr1K*G4{< z(G&(w5SVqm7vnCfh8_GKu@OP+1Go3cASyeZH@6N5K;_E*u!j?6)TBOKB$U;&)s?J- zM@}PYtQnvs0X82Va=Nu(m2#c&tJXK$O}o9({NdKLEGF|?WML%a3oC9#A3&O%2b>9} ziMbtMhNa{$92=K8D$QQk_8Cdt=Q?BRonX0g(4f~aiW}pPOld(R{+@6@0)}AM+Oq=>c2hbkPhdK`^0jELw0}j6zMA) zd7Qa9_TK)VIPT3K<5%u*bfV~bq9!6QgZjN18qws=9`GH4Kf5QsR&NQYeBh(KP5ev{ z-Bc%od9>Oy(i(p_2@zrrXqD%b@iRof(p)c*7nR32l)SH_yUa4Mwwyp4dxi)MH(1NR ziHtIe=Yf#*gS>(VKqWeI>LYIAlsm30{8v#W{-!#Y7q3!gG)DIu$nZ?vYO32H`Gn!t z93ja^z)sgS6#NjLLSPJ5k&@BftVTHaTq+2So~{ghHr)Ap=F6-TdNih-4rYdAU>N5K9gt=Zr$mLzB-q zdRV#Xe;j0V7~Tbh@6HoJ!#t5Wn8^}IPWc$)F+}UXJMo>^FD}11&QQ>>c*h7WX~Of# zjkJUa`a`y5!f0$1b1_^6eXSbB6?0%}ZTno;B~dt#JU!rxD!Cv0n{v_$0Y8+D$91@y ziLV1_qa#zo#7k02VaOcV}(-#6c&I)#>RTT!?A}*7ThGxRjcyzo3XEif@b% zVUzRD@e#WhcT95g?Kx`BhZegd-Et7%CXTV7`??+e9ZS4WtDvU>V6zjWfV@5oRpsLj zQ&q$yu@(7zM|f0Iq*<12uVx*Kr=;YZU_GLpHa`~;j0!hAJwG~p<&u-INhj{dS;vb; zzHCnhCtT}m;&7SZTol1Kv?(53E;LF7c5UxH?eeZXBsXo5&L^`EA&&4lcnfEGx7p5g zVLR3Mr}x1?dlsYf(BKd$01CKRlZ{o+Y^Zt(HNp9uxQH@q)G+bH`^J<+k@>;GX&cFQ zWo6_sCWO-S>nYjX8vJ6#s1qFrksNm+xxDEQoz&gP{{XhC2I0POH9I5P1?C1acu(lY zyvTA-c)6BpIZBhj@vDR1w=;V9aVVub%LNgzyaf7Fj4N95A`a#fM|yA9o#FGNvr({d zgsv|D(*44Yb7*InI)`*(cZ^p)OJzN~e9r>)+hXHPh5AgAXd?6r$*72hN z01ej%IT&}Pt*%@;tBNtapBM*voZ5+5jL9I0$=v5$;xKI5q!MrjStDf8>CP$ujStkH zST~dwF9#T%O`N9OW@%AU)WR5olax;mO!1;E9U^j$2rv+uf7Ztbh|~fsAN*6nq!=n{ zCkLM{TBBZi>l34_0GYY_$c8%R!OgrVBD%%gkoa+N<`vooBj)R$Tx4qQadD*aaqxHi z`SWu3zvW&?sO8VSTtbEry2>m(}eUkUidt7}4y4ZiTnH9#Oc zdPg^RN~jbC4%==oGKltX!?!ixzWW7y6f*hJWedKO8n>l1ZuZ^hB2gVHSBb*7hfq60 za(lowr~w@BG&cs{2Sbd^on)0Y%frYpGQ2m?E`KJmw}a(s$@xR=D0qT>lz`(3vpX-UV8T0U@rx=ZjmE+bEk=8fP*Zr_+(D^XQ9 zJ!5ILhWK5Ya8e|LG6b%-xb3%mV2(6W0FN(uaqOI8uJ0U7aKVRm!m{{Ki=)ZJ$eWcs zH}RIX>uX=UZYcp7*>{D~?#FD~EmbwSw-*|Dtic1iNwQn~V4h5LL)`I!F$FHK1AuV0 za2*#LrLB~*y*F7sDurnHV^DxQaA4Rbnu)&gA8WUy4td2OX2VwpmtJg6uftY$X0gae3`@wpE#9UyYj350ME`DbdbN^b91!l=a|C(07JfU zAV@gg6ao0wb@u%|o-sjLf;M>RD9;u|DQ|v74DruU>(P zpo+SZ3>tu{YBHTJ0ZQgd60u2p3xsu$jrW&m-r0tb zZQNU}weDrq3{cmRb6&TrM{V$4aA-{tX3%o^!^Bq61m#|st*BGves%oi8;C0eui5J! zJl%tQw>b2wu+*8b*8Aj%x?_$Hb{xb<$uf(Og83i3g10Wu0eUjz3NE%3=PeL?u*Eel zC+8}qEmxQS05V8-P4hPA4IUP9Xx1}E>Jqy5lGO7Ibq@mQvl)leA#Mp)* z_kaN6vlInhA2=S};Q~5gUD(JOdmMN6DCYyD(2XCKYpp~YbY1z57QMqn+wY}v{*$-b zUbKE(3AVnBwelds*BCzEu63Hx3ugg(H-*SR_yLj-q`g(xm7GYmAEN&N2Ir`d7~j_( zZm?k?Q26EcxWn*jb51`5#YZLVU3|D3@DcbJewR}!Y~k1GSz&9(4kwT&A^_%yUTRIo z;kKCtP^03`KqKEFm{$sf!J$9{%3}7dm ztp*?_-#BZY2kmojj9^|>Ia}3wn8B0+ z*0>|qDol$MJQvI>j{pfI?0D7@FSv;|J-!zewvkgWw;qL%AtmE96cHfz9A@RT5&f(3}pjQCJ@4ey5+5SaTR-A|r4mb`7KVPeS zOV)7g9L`C%!IP_vQ|AkHnot9czaOBd4j+nP09LPxV0XPy>`;yP!z8q2N!d2eu;s0? zi~J@%F2O&PE*6n6q;vJ=g%ad?mW$4?arr&OML&|_6^6<@vU(<4J?<(K%0WFDQ%ZNb zyiXrm;*FH;Yf|)ekatxd#zVO-jjQl=SjE`(vz1=ls+uN|^^_F|Vm?vh0<`O&)09S# zYi!M`@T^UoK!^}^Om<*f*b5J41&ek~Pz&))2Zm%iUcH$D)6U{({(;5;;1c_cuza5%u_goCIc$pBh5>F(FYC@j1k%y?*ob zJM7c@xGhZ0|_S+l6b^mo3wm$E&$IKF;8ES$EDM=V9tK9cGtS_Z>)E5!^WtK z7VgAbbd1rU(^YM)>l*dl+BZIDIC}720b+Zi=77S9r4Dz#OgCU_Z!j_PX7R@21wj>w ze*=UlIRy=a6$C+q`A@r>m>`|ObboG)G*Y!uPkLW@QpGo)tg0PPZG^sX8{}9a^x`n~ z3EwV^mKJz=?+8c+%Y{+nl^+=~%UY`N&J0Eu5O*9`RKT9?k6#xHiA!oI=AHOV_6~ln zFsntVOJR&DtE`cHZyG_XNR_L`o!xQTGTO1q8sxzYZ<`N$VaRk`hF5PAY|Wz zSRIa^%l{0F9sOIl`U`ykTj?(Cf-p;49L(PLv|AfYXa;LzR(OUTp=KXt^wf3 z0#?W!4;H7+0b)}cV9y3P1!uDGjwyz=f83f&%xQpKB#{au^G`!2V8CKP{b=K(0tXY| zt)Dm*OYDnd!u6NPZ9oe|;1eE{R8Txa6|uGv;JMWo1Yp4h=UA(=RmcS8J)PX@1HwB( zuK_c5LXBEaA#QR}7}VTVGZ1s7e1*nqqMR27O%eY9h(Y*p+C@n4bg#pQ7fSfU%|Y4V z#cx)>M+Pp1!}}Or{*|3*{`i#-0~HM85H>`41IdX)SPSUqC;h0C7W%sxm8n62hWCu6 z#VgN?`(}c>gfLt%boM{S18M@saARyKIX65l=VntdEgRaL;x^m1Da!n~2NIajIt#2U zWl^9w6I%sH)eH@!n}Vn=!Hx(W!3~4Aw-r0;BOv?2<8!+W-?Ml_c@7{C=Mg#Kia3?* zlSOqqFsBArTRh@mNK=8Y{^HI=R5|f*x}fuEQw_q>8rN3^BQy_xsWECC^Uo}E%+Ot# zmr7UbdP6w z8gF|{aS?kOG=3i&Cc-u&LE+yf83e&p7?YQJG7>#vLV(5K_8#)JC^c2v`Nj2AG~^fb zd7e3?)yi~4`C6EYm|se9e5_O}Z&z0PV#p=Et^E{%E>w9Q)?D`vQwEZoaBmg?iGlTP zio8$dV9KUxUFpN>>kPNT^+Nn(dtgUfpPbx-T#R*f!<2@|_+BwSClCyWlWXCV^t-cw z`*3ERo-$dj%6u8R9G61J4#_P%X#Vh$5yrgb{{Y(?uFV8XgAGg8@vjvj>37~88f8&9 z<51TJp7MzBb&5Mklie_6pbf*uzT5{w5IEd6l9CI7= zHMNJ67f3oC(^}}l$x2M!yc>zSIC?@AqPJK)ExQhmCJFMmVFGZ{>|?Xi1qcbn>027o z=)-Vd1(#MC2_y=6XHWLie{S(rb4gH)M71ACay>-$yGcJ0IX*+ctjS}$b9_=a7mmhzwmQosh6yuI_dydRtbo+EQ&ZW0HC zb{|>Dmsc#?ux<;pi=#&Vas*U#@?XoGN(6+oA&;QCSk~w^-(%@?dNZq^*7_c?E{&D7 zb@(_81Y;6i0D8ED&~Jr_;N3$h5-DvOHOD#2fnkmMLo8s*?b=2CJ4d&pe;~*2+YqiV zVAlA+0u9sx(fPT*=X)b#m*NYjg04Ctg>$0{^UyN;axq$}yYsK_Fa9hwX6LK{$wPSj z1SG~cwUgs_c|f==LDz#Dr;x=*WE|ug&3t4H*i-8%K!vjbY&yU0Zt6g8_?_a!&cWqc ziND_%kuQMrvlX&V7JA2|U648L;^wf3#BW8=7IT2{v<~LD_l4>gCGYZN2P{>dTZ0#N zVLl(mx#g*~B~*TxfDc<5-IuSP}1%lR)=fYP6_qD%vFbl}zp3M*S@tO)+y<2waq z-xvp!knmgslWgSE(J>H^^)pZ>es32gVbISwhIg*f>Cj|Au^A_8{{S#od_J^@;#blu z$_Tl$U)MMus0-sqYhMI-l&y}~^UBeAGaz{8sWI6fA z(SHy1fi2(olwnhRZpC#>VMl6@&-8ynQt^_5!d7#w%t;2MDGOlb?`wPWyif}(y=7={ zR>Wa=Jh-sCY$>4f0nQ&s$AQ^P+Ec~I`9QOfCi^hN-}_KF2LOJC z+Mt2^t`tOo+m0aQ-m)O~guBlUQ!DVfw^ld9&2fp(cPZ;4=t5@E2_+L(e-jjIF?IVw zI3WQ`d=JtCn_1WRfsbC_FIE{r(@DZ@fvK?Gh%fHowrWc%yE!=%S`*yLH}c6I#5Ba< zt>X&Ri)6%GY&Q7Ct<4Xc4B`I(b8>K_t4%swNo3n9E1rfBKOdZhE+rbZ9-&@Oz@v@n{ z0lnkmbfpCti-N~EAhOUtae%}{=X;y)H)2OtKL$0~WBg|b)#X%KLrlGM*x6; zuU-xljISS1;<&46xR^eY@$fEMVJPH?A^WDXyQ-1ToZ16>%0+hLPPeCcTe^+89vXgd ze+l@wvHnDunK#xEa>D+u=APodu5O!t< z7%xe`k;IrN#u9?OI%A_PD`nGpT#bZ~h`5nYh*cO!f-q_r1iUvY;cR1WNQn=EYt zFw1hwOrcHp;KJ4rZ=Cg~7K}-5*Q|DxW-hxS;j508@v`y1*Asq|*-l-KJV*}V{B6wu za^<{C5vF|p_(i239O9yMZk4P&+<82~Iy_Bb8>>a8ApWV7fVV-~Xv<(oeq1}%C5ILH#avYF)t)}F^_n-& z&+Ko9HAr%=+GRTE2DBVvJnnvR#Am6<2xiUCf_Hz38A;WUD}F9;Jf^(reuWY7vj8c& zW8rc|5|q^1AKoT%7Pbalx*2d!bC$1V4+obPV!^Zrf&{`-w++lG)Vtj{WJX@vM{+*y zDGb%pgq|8Wo68*?AHV|uk#bLF0ymHe)=!Le+K}J0h+wEnk@LaM@y@nWZNmCCa6~~0 z1Oer599$EmNpf=z5&46^kMQ7bbeJfTDi4~!c(xD(JXnqz0m%h73lzkNcf6@E_ZRfa&`%(k~bFJ(d3BeAE)ONdw1O0twGz3>IiB@Z})4 zIP#KVDR{sKw)E>-&uq`mckRivB9>iPc+OFfK&n8TVIAHDhpaK^3FKNSTY+XWG zFh5i?Y#*Nhc|Zr+^0?g133JRm@@Bm-qId?_{5Gmy<{G-|0;D65Fzte-$Thana^diT z8%|&JEw3lNe6`@4Dr-_1DKS!3A`^PHqrEvsty7+ig3df72wLPhGQ@)XhLZ z8|cl!q2u&bpN#ktYVSJ>-Qrh;!r!PS0C0e0fYA5)DsTL)8-$}1OS!}+?YsbhrF@A= z@AZeFF;RxckWa$q>x!PG;PT)trY`F9F;e{p1yFU7NzR!hJX%KsM5KcFQs9@9q_jFU>8X_#;90WT)O}&Y5xGeGhucO2DJNf4SxjN-^qyOXEa)I zXGxMpZ!Q98_S&!5IV77ip)q*C*q#gsdTnuWwx?VG@oVjjhGhT->w;-}P)^Z~M|%&q z@xZ|lW(4|o-f0DcTWr7>4Hhob{dY4wbLczx42hoawj)YD$Cdhf<{E0I3(5I}4R62KYN1K_$}*u0qMhSVRYm*Fe0Rt2-m8Yer`oRPl`!frq!}-Y z*mtarhki#7Gj1&8YrvrQ$isTUiDZ5`%r8PAwF>-0oB+)YqV`Lc6zdgb9`R%z2yy%l z&x0twmyQi}mB`W)*li{x&-x%Vu;3cXRja#d5f^MjorI!o}zDPCGAlknQ_{3u<_<)jx3H}UQWL9uH?(dYjG+s&BpOA05<(NaT8$Dj)lenW&M?8xIRP9=NYm>@sFnq zNzNKBb#u4SbIgnKKnb#5XYp z%`$TvhyaC^Wu!0R_F>>;JQi7O00TWX87v~d&jno$3h6f9$+1j5P$t66> z?uc~a7n-0`)&dnu5Y9(~oGF}y?1#nY)*HrFO56B2FrFp>;BRa?Ieqt=gI!(+Oj#so z@I#DkRTsUldDsK;%=Tgr82B|!qjyg^s2Qa+vl#P(5OJ?YsCs>2^Obk2%MLIwz^rGW z%ZQkIECcAmoGP$*Ihds~OQvj}4nCH3t33Yz25EA$@(jKu*)_9Q1GZCxmc3l)$Whq% zlLZKF(syjxgM&>0CoWiNzm{Bd7xtI|A6)zI0ibg9;5T{v8#T^6Esrwn{{ZF40K4%` ze~9phGzJGZzB6uRtzO^Muq}3ZFcEZp4X>{_9oZMROS11JP&OE#-~oW2OICktiU12X z0)yGgvb@ZE28R4%W@QS2sjH01*p{xd zqp>qDQOo1=z6DVeq675~S4C~k+G5h)&Qts*IcfJ~PtpL!+I?*?Z40`X5QUD@!G$AH zi8yar3}8`TTgP|}xOWT#a|%*|0Aqom*9Xta4ib#xn~P;Rfd}51 zA{%R{-Z;mI0n4B`+RXT`>wLr4#n~DR-{{T6qdeuCX=NC|11+x!;DG08t zV_XuHk<~dmhp?TC<+u!}8DeH4E|Ik*55s`04}%naISXtHY9E@gq0lym7w{K2+B}ew z6ADP9qBMQRFtaASH2m?(P(#M}XD?8#y&>9C$D!P5ep6t;_#XxXx{(T?l+53x-*`?Q=3F&@%Bsx672Kw4~x-3D^YiQ~JX|3%%>k1V;dvEb}?H29A?Z zvbf3`XhL^auNa0e9t<3=w!FJAZ&+MHmT%_}4UdEIo(+E6aev{s{{R}_{PPMb&2I=I zXg=Au^f@VVqNFi+%`C0BKTN~6!%N&>Zz}*5^Gw<6Tt1Aw4V|T8o*{75``T&A?o`bX zKMa68BR`jz9W&OzPODgyFgmaT6%UGfUGa~flHXU5!T}Vw`1h|mGEE@g0HKtbCj1=BhsqJ5>~hJl>- zG4Q7ZDCzha$-g2G2NnooQNP|s0g)^pR`r3> zHC3RB`fyi14;SPFxcj#l<6Iv&a%!7CXN8@S9xmanZ+LBxWZZhnk=UE;G~v+TQ1c}? z#VFxu-F!IK@pxdNcl39IQKN%vCM4@uka)yurG8uM0e-SXoQjSL+oq{F+ld8{0R$O zEVM#+#R;K~0{;N|Zy6X<{vmzhMYRKxzgar-7x8cgKFK`UnnA7at^WYb-l#sj?=*K* zc;gFDtDgBnIqtS))wUZb*&Nr_q9?8w}$WAIPwDPGJA)URXn7P>=up^kJ@vmwT=LDAf{hZyT z!40`IyDkDfwNiR%kuEg}u}?oY9*EH|5=8k7-$iQbs{Yt3hZ<)q@MYA(M%&hFdDm^< z<;wYgwhe$zfZK$o_PWzq&tdRcymtjx)ltQ-9*m?2wcjoDy1@ipjCZ!Nid&Z-qzh7`Be59!)cq#H>6WH>~Go03q+Z3ir?-)&x?pUygD4(?5*Z9dnwV z^F$7DRHt|ffy@5p#F=+u9UqKybKw5~UUAm!;%`oSinuq&zIDbEv=Q=tSo%2xE}5eT zMImu@b;o8KLDWiMxf-Aq>Dq=9*6u1Xy!6V%RUx~R@`NOiM03!#$zoVY|#=?sxro4hWUH0-zolrRD=p_1%P zjkNQ|Dmh#Wvv^^#*sSxDp1ngX6UVE`bPE?XLGf0>Yhi#%DxxZr+MH z-Q>w-VclQu+`$V%J4O8B)}aT4ZG7i_eKOW@!Ui1#Y5Br?LuKn9OhyR7DayH7vb+3c z8YT=IG9@N`Nlao_86z$9VFRTTgL!Y9s?i2bDkg%0UyRLT218IwdimW z#EY5_!s`?o7M<@@!A?z;cCfA>jcnWf;j6uGA~o^HIiV1s$H#c>_*8W>-3uXfR4el9 z^Z@1H8vK}9r8q|#6xx)JGYp4i=6|(Pko)Iva{%GAVUHV$9$XgB2g!m^e6AEsq!q6Q zBrAzY=hNb06g-F<3GQN|3#k<3{9GdYwPUf4vXVG-->gzlAR$-g*^L>3D0I=A4}xt* zpHmtYrvTdDDqvJW46;e6_p;Yx87_K{H>4Z#0yG5G8r>jDJ0noF++TSiO% zUy%_$T6G_@0v|DcoI;aD&MjW1CyZ}zqiz)(cFmNXc@Bdbd>q}09yDHW6AMhxuKT!r zvKuxMugEgYh~gK&*uw%}B(+|))-#(sk)F`Cx;e*SJ4BZK%ScY5u z$Xpb4s&Tw+{w8o)>E0zyt4Vq;5HJ0-C=5kAcXC~-vs!&(wOsA<&MnnnZQ`g+(^uQG z5h_rN%li1lMMHPC*WQo3R0C1*pcpb^vaK|SGZYf(pewrR#t3S#f{KluLoCA6?*9Pt z=Aw%;jWuEA!d~}qqqF40vb9XMO@CPhO|X`r)-`MiY z5Wny_!;F4hyf{J$q!sT4sXev*Ik^u!?i2V77I5euHZ#wqY~Kb10d}uu9_Z-=3hXyK<$9IAkPj#nEv0xn*|dmLqv8=sR$CE!~kp&d+) zZokDFlH|3tM?-v~KF!0m51AphzV0Mn2L>a8n4+^;H;zt8SCOX7I9+6s?Na>W1~yir z-?hR$sLKjG^Ng+jrciyl3_*4BO?I5YuS1Y4w()4*DaJ7~jYn*6Xs0-YRYW7BvxX7H zd(~#0m>{LGMPWE8$|USvBld$i7M`-nPlmELtPA-^8%b|FMyJL)6JkN|;KDLn!l3;I zb#&qpQ+*jLuM3F8dmQWh3!QA-`8aTdxo}3E3zES*C!yTLE(?78->d>s)dzevo)-t| znPvWN3JZ$Qz<*iJi(jlz3aTD7kLMr~$Qt#_j)zNqI}8hN0Jvr-J{$^mxII9gBuqJE z$3a6q(IquL@j4Q}6ypp1p}R~pz3tt@E(%G~_`}$bEl;VNSHb*b-MAWCOC98E4jT|Y zcHiR#!wo};g;81|bj}H?1->~hBwdsRgw~0P6BGvGBNU#d`vcjC0^D$SaGp$3ag)!T zBMjhU^ALMQ$}MOyFSsJ&Ite0s<1`T@X2)z27hFMia4rBab{t`azD;d7CJ+r1VZbLD zOBV_n`TNc#ZPm~?$T>y$!ky@a<5;2x23&*4dYB3-(XMv%cHz+AYIbw1sa|yK@?^ZX za<3TUE?+43hIctH?9xhdGjR|I%hjai-gvfESas!ovdhcg{lMwX~ zlX*5gp~i7k;yPDdcNh;@UqUKu(sUlnKVm((lX%-7LBd^T80Z9wlqk6f(1 z=y$<#ev-w7i|iQM+1p)cd{rFKR02rS1E)MQn{@vG7vk!V^z*z<4)G}3M8}J>V`JkB zT^!DKgZE5!00H(^4&p)Qau3qnCYWf)vHt+f*;PC5AClmRd6^G1P~hpqYP-{hw#Fv0 zRHat0`1qJGVi+kXGhm;G1=PxW{dpH~PYKH-8Fd z%_JZ?QM;Al5q?H3c!|E2zoUm$0QS1c+)Q_AKPCv-OE=y|wTf>H)DE&XzwY$vV-ria zc+FdexRVg5&pVmCWN7(v%r=L=GZ33DUSO*j3B-iTW96R+SBTtIT64+ zAV_6cT2REAIvkech+}ajZkd6ZdJsBS1eJ z!iTim-t&nbOm2(8fG@8<iv6}?EGK^oO=oq=h8BReFz&=PS%^z<96g*gLI40yjSu3Cp-&s0* zf41vjoq~3qVs`3u*^AAKvEDYj!I%$sV!Ne%=KeEGD-syEHRXG0z;s{==o3?V;|M`V z5jN9}1`2cybQu#UtGXy;YO)p7bnC|Pnwr3cTt34OQ&^iFVl6zPvYf7qydL}-A*@nkhQY1}7muRvNx;(p92{g3L+Chn3^=JT!*AnxC?UU`?=?}; z{Ob`^rt;-->+!AraeR;=&$snlJ+7kT2bs=TnWA7kBcRJ<=cbp76sfM=>Sm(pW65s) z9rKhO&&#YwZH4o#J`5ecz8aYs9AQS%-mn^LI~Oa}RJwV=UBaH0J`}_yq8`@-&KD`o zaFI3npXXIIZWqTm?Zf%3sGQwkyjO60d}RedKtg(43t82OJ~Jiz#IIHzGgISm$jF2| z2P=SP?|onsAu_)VaCUb?6?F8lxeqkn*M5vDQX+1k{rvyNKA0`m#Fg1a@n+^TUnaB$as7C3W zuC}@i8TuJDf5BW58i0%Ba^j8}8lM5)R}^^gJN@j$18_9%+;~hH9N#~=gGsI))#l?2 zHNsNWKWv>%1`neR9!=r6YLn*SpC_Cxa;m)V4F}xx=Q&gCc)*g~zj-i4ss7Yj!0Xn- zc#%6PJiTByblu}guhET~m)9;1?J?a(bi%; z>A{PF3%VhR@Wkwnz>c}+CnTd%Uj{_d34RO)=@aqOKWtDZL7V1(SOD|}H>}luuNNNM zysODKyjuXSznp?J3*X};2!j0(XF+z(vyf5Lw-D9mRNH_ zH;mD0ALf-vk^=Y_R|>X4e8IR&yEC9vubI|ReBw&neVDsuI#%E9ae@&Kz-r*CFJrr< z=D5{HzWyi|lmHwHMUnb*f_flrfKl^uRRxnrk(MEhi8za-M|+MW)>DYrMCBl04Xcsv zF9?IKF(h-%)O7(bOuNC95SGEe$Qg5XCH7%=&Uv1U4PBLAG5vmkfK zBZx;31^D9y4=7?cP}V_s{p)OMH^Fq`K~bc>d^1D|1LwR>2~)zj5H_c%Z_XM1+Vau` zKqGm3!>pl^>S@oMLkFkrfmJ!kv^5`?CbCDD-)x7$gJccuP?~2VwK#k<-f7i9Pb0sq zcSO~qz0BJ^pM*N);N8L76z$U!;r=l5(ZD7$Tm1w&Hmb z#6!Wp@qj^{dGms4FKu`=hq8~({{R` zkmNsn#0E#RqyugPZF~Vy_?%p9TEusz3;<}VfKCU>;|~Vthve%lBzyO2&sCp{cLI$g z@ZrK9=3c&vh8p!$^ufGXOgii)F-kEq?j2aA6tNK;}1o6e0c9H)8MOiPN!1BKsW|6%b zgM^*WV5ZxVe}Wu{hWue>@{aFEj8fqj@Q5&t&qcXn-YyAgJb8O32s4EGaa)6!CPx|( zsTu)uS^!Twj>~NPm??6iunO*gzAO8%>X?wTwg?lT71-kI4PDyl^Q;ho5vA{aVF2bP z@nE?f-M@1+4&dQD7gG?jIQQoWrP9-)cH*0FfZrItG-~02D2Ux^rb@@ZmB|k5)}p2m zZ9`M*?a9M5J4uV}6mvuo%jisy>+|C-08sW!IfC-*irm<;e3v4v*bCdvA{?E!&M}i$ zqii|KIP3gm@~c%|Zu507B+A_S@M}Jw&_J5IF#0;_t{>&jMo66g(d0J>z7?zUjVi|X z3VU3x*HX?kB<{ z;@j38rM)2S=ayv2qP*>_AchC?Pw1`*A#v2IPK#d#7^}Auq2SZu!AcDj9lF*=0OtN( zew^0-0FWgQya7z)4Bu_A`Y?VQF+|rT#YMccEb!S}(|7@blXKPtExlvT6hM?_{7VicY*K+O;d`bqkC z6$Ji>$LDxt0CfGht!DA=r+x=DO5KI$og4~X1g)wwSp$~?!R|~6kP`JPsesSo9?#(& zV9AMAHQ;#uSzW~36K)-jY;FAyj2P%`bT=Gm5k3o(T%qEH2YJ9!*=qOWSz!v%N@N%q zXbA(0tl}ABdr9+;f`Y6{b^K(NH{%K`d)6o@(TQ03)^1-INee@BH`bi)JY5Xh-7wqN{{Tn%#0-VU8p&W$JYF+(a3DAG<%~IK54(u^ijB)C@FJY<4~$A^ zqO94@I#X570Z?u0=NNL9q|h63C~TGg03A%_5?TfC0T5t@GUsPR`u_g_&_S1DejEeV z8FZTG+k)$<=mZ~yaf2=?O`zyJ;)rNqZ4Vw~$c7M_Ou@AAu>hyz6AVyOUFEDFlZul~ z6PUc>Q(`gUj}NB|gZ{IzaxI<}PCrJBfDTphoyow7 zs`wToysBPRbAi*G6XK=wFfH>nf*^2%;uwPQNj@2MoG81s)*O@kwivh3kA%W4hsZ5| z7Go%J5d3cbb6m7r%@P<^QK9q8^aiAa?x@D6kBtvChU>HgNe{egphx*D^@>C-ydH)E zW4>2*Ocdz(_Ta(;3m+n1y#D}mWd8t9JM5Foi?sxXYMrt;z!p&6P1q(eWrq#bH`|YF z72&e1!%)u0z{7K?c-^@(ViMcaf|!MKy%+J0N~)=8H~7k18)z9H83_TLs(5*ZjyX%I zb7$bV#pVJPA#S5EcAAj$txTh}ABPDMv=v7NOv2HKUV6ZMfDQxStc2$EH8W|7GMeHv z;W)}A%Gh@_CB>~G2i^P4myk>lsqc~q^rJ({{VBD7QMf|Iz`;ZC}3fi zd~e?(U5HE3%-#;?G)!57?PEu7GQ>f!!Rw^+*^4Cbx?V#!fV@BMQ-C;PV-2v?!~naa z&GUmdYp&(lfK^+3d2R!a*WSO+`v_nY5g*gDQvRD?8y<4MhiSqpik)B_S4{HK{w7$) z$CY+Jdxck_I%-Tkq=4zr`&!PG#xKR8j$P@=*ZZsh0YRZR=L-v=F;R0TKe%v|aNZdt zJF!d%mevmS<;S?K>BkEg4ZxIVjENl+sQ2dZ;tth%tA@8c;85n*+Pt;J zAIj#`yb$8!)`lMDB??9BH-Xxpk{CnpXyg|L0|FiuFf7o6WO{hUv?y=^v!@SRgx>9* zsg0>hQH62O#1a#DWNAD>q}@6k8d7mOhm_flnIopaK3a*9P(n?*gXPv};doely5ld! zP+;nFidW)PxwSqiMVM+{Bu& zm%php7QBpD{{Ry;zZ3@9#`4HoH7&K{*ZITRsM2StupN+7%@4M}Ln{iL{{ZF|zyfWX z=^Dk{Qd|TciIBRso;Xje8?tYcczsMAMO^(y`oS?(dV162Tv;Mp0VD2_fp?%w@U94Z z!c6y;mv}kjN312GOZ%;~E9W06FvWz;Z@jE%JBU+${O!tSMX>z}*?8V+CE%yaE++xz z_oq1Eom_wq5dF;C^k4z(){XO;^T$ulNOIi%G92Aszwx{~xFQSL(Ek9B^pH`>KWT*7 z>wmsSBF%ZlV^Gl9-7uvR)Uej;C*=X)G618FK|^w=XnFFaZWN^h6S(O7;Pf@`z(yZ7 zU_k@l#9jPcbvyq6ZFE{R3hgjK1g*Ydyg|sJ)%(D;tt9kgWdJ48b+acYL*T$D5XsgH z&Z2m;U3Z2m0;+A=l>B8tLA9W}^>H=ghsb^jf>sMHy%SP*-HIBktJ8)!n#};U3-arsMj>| zk-k>^ykSmDlf{=f)ZC7N$TbdJ-~Vpx^mxs9`oC`!P`BSrPA_(0olI zAHH`GM+0B$C)gX;DT1&lu8coeCJ^J;gg+Z&+eHx`2fkRPKncc}JQlLYC)!&axLq!f zp@&&=#k4?sg3E@|U`?p;_y#0zHz3w`wftl>OYL?iq;4cp!$7;!mZq_>32QjlI1U@I z{p1IBUNJ?lIz2drUV?lR0$yyy1!=VTw>f-m@XD!RDZbowCk7a5Kx?#u}(4$9plaszDKd9Wt}u@*el~V8nRzz1dK|s>FoxYp)nWa zg-MH`u_m`!~hf#0RR91000000000000000p#Rzc2mt~C0Y3mk-~Yq_ k6cGUc000000000000000005x>+5iXv0|5a)07KvZ*>sBET>t<8 literal 0 HcmV?d00001 diff --git a/doc/tutorials/core/table_of_content_core.markdown b/doc/tutorials/core/table_of_content_core.markdown index 4cd77fcdfc..ff142b7f9c 100644 --- a/doc/tutorials/core/table_of_content_core.markdown +++ b/doc/tutorials/core/table_of_content_core.markdown @@ -9,4 +9,5 @@ The Core Functionality (core module) {#tutorial_table_of_content_core} - @subpage tutorial_basic_linear_transform - @subpage tutorial_discrete_fourier_transform - @subpage tutorial_file_input_output_with_xml_yml -- @subpage tutorial_how_to_use_OpenCV_parallel_for_ +- @subpage tutorial_how_to_use_OpenCV_parallel_for_new +- @subpage tutorial_univ_intrin diff --git a/doc/tutorials/core/univ_intrin/univ_intrin.markdown b/doc/tutorials/core/univ_intrin/univ_intrin.markdown new file mode 100644 index 0000000000..7e6a8a7cc8 --- /dev/null +++ b/doc/tutorials/core/univ_intrin/univ_intrin.markdown @@ -0,0 +1,334 @@ +Vectorizing your code using Universal Intrinsics {#tutorial_univ_intrin} +================================================================== + +@tableofcontents + +@prev_tutorial{tutorial_how_to_use_OpenCV_parallel_for_new} + +| | | +| -: | :- | +| Compatibility | OpenCV >= 3.0 | + +Goal +---- + +The goal of this tutorial is to provide a guide to using the @ref core_hal_intrin feature to vectorize your C++ code for a faster runtime. +We'll briefly look into _SIMD intrinsics_ and how to work with wide _registers_, followed by a tutorial on the basic operations using wide registers. + +Theory +------ + +In this section, we will briefly look into a few concepts to better help understand the functionality. + +### Intrinsics +Intrinsics are functions which are separately handled by the compiler. These functions are often optimized to perform in the most efficient ways possible and hence run faster than normal implementations. However, since these functions depend on the compiler, it makes it difficult to write portable applications. + +### SIMD +SIMD stands for **Single Instruction, Multiple Data**. SIMD Intrinsics allow the processor to vectorize calculations. The data is stored in what are known as *registers*. A *register* may be *128-bits*, *256-bits* or *512-bits* wide. Each *register* stores **multiple values** of the **same data type**. The size of the register and the size of each value determines the number of values stored in total. + +Depending on what *Instruction Sets* your CPU supports, you may be able to use the different registers. To learn more, look [here](https://en.wikipedia.org/wiki/Instruction_set_architecture) + +Universal Intrinsics +-------------------- + +OpenCVs universal intrinsics provides an abstraction to SIMD vectorization methods and allows the user to use intrinsics without the need to write system specific code. + +OpenCV Universal Intrinsics support the following instruction sets: +* *128 bit* registers of various types support is implemented for a wide range of architectures including + * x86(SSE/SSE2/SSE4.2), + * ARM(NEON), + * PowerPC(VSX), + * MIPS(MSA). +* *256 bit* registers are supported on x86(AVX2) and +* *512 bit* registers are supported on x86(AVX512) + +**We will now introduce the available structures and functions:** +* Register structures +* Load and store +* Mathematical Operations +* Reduce and Mask + +### Register Structures + +The Universal Intrinsics set implements every register as a structure based on the particular SIMD register. +All types contain the `nlanes` enumeration which gives the exact number of values that the type can hold. This eliminates the need to hardcode the number of values during implementations. + +@note Each register structure is under the `cv` namespace. + +There are **two types** of registers: + +* **Variable sized registers**: These structures do not have a fixed size and their exact bit length is deduced during compilation, based on the available SIMD capabilities. Consequently, the value of the `nlanes` enum is determined in compile time. +
+ + Each structure follows the following convention: + + v_[type of value][size of each value in bits] + + For instance, **v_uint8 holds 8-bit unsigned integers** and **v_float32 holds 32-bit floating point values**. We then declare a register like we would declare any object in C++ + + Based on the available SIMD instruction set, a particular register will hold different number of values. + For example: If your computer supports a maximum of 256bit registers, + * *v_uint8* will hold 32 8-bit unsigned integers + * *v_float64* will hold 4 64-bit floats (doubles) + + v_uint8 a; // a is a register supporting uint8(char) data + int n = a.nlanes; // n holds 32 + + Available data type and sizes: + |Type|Size in bits| + |-:|:-| + |uint| 8, 16, 32, 64| + |int | 8, 16, 32, 64| + |float | 32, 64| + +* **Constant sized registers**: These structures have a fixed bit size and hold a constant number of values. We need to know what SIMD instruction set is supported by the system and select compatible registers. Use these only if exact bit length is necessary. +
+ + Each structure follows the convention: + + v_[type of value][size of each value in bits]x[number of values] + + Suppose we want to store + * 32-bit(*size in bits*) signed integers in a **128 bit register**. Since the register size is already known, we can find out the *number of data points in register* (*128/32 = 4*): + + v_int32x8 reg1 // holds 8 32-bit signed integers. + + * 64-bit floats in 512 bit register: + + v_float64x8 reg2 // reg2.nlanes = 8 + +### Load and Store operations + +Now that we know how registers work, let us look at the functions used for filling these registers with values. + +* **Load**: Load functions allow you to *load* values into a register. + * *Constructors* - When declaring a register structure, we can either provide a memory address from where the register will pick up contiguous values, or provide the values explicitly as multiple arguments (Explicit multiple arguments is available only for Constant Sized Registers): + + float ptr[32] = {1, 2, 3 ..., 32}; // ptr is a pointer to a contiguous memory block of 32 floats + + // Variable Sized Registers // + int x = v_float32().nlanes; // set x as the number of values the register can hold + + v_float32 reg1(ptr); // reg1 stores first x values according to the maximum register size available. + v_float32 reg2(ptr + x); // reg stores the next x values + + // Constant Sized Registers // + v_float32x4 reg1(ptr); // reg1 stores the first 4 floats (1, 2, 3, 4) + v_float32x4 reg2(ptr + 4); // reg2 stores the next 4 floats (5, 6, 7, 8) + + // Or we can explicitly write down the values. + v_float32x4(1, 2, 3, 4); + +
+ * *Load Function* - We can use the load method and provide the memory address of the data: + + float ptr[32] = {1, 2, 3, ..., 32}; + v_float32 reg_var; + reg_var = vx_load(ptr); // loads values from ptr[0] upto ptr[reg_var.nlanes - 1] + + v_float32x4 reg_128; + reg_128 = v_load(ptr); // loads values from ptr[0] upto ptr[3] + + v_float32x8 reg_256; + reg_256 = v256_load(ptr); // loads values from ptr[0] upto ptr[7] + + v_float32x16 reg_512; + reg_512 = v512_load(ptr); // loads values from ptr[0] upto ptr[15] + + @note The load function assumes data is unaligned. If your data is aligned, you may use the `vx_load_aligned()` function. +
+ +* **Store**: Store functions allow you to *store* the values from a register into a particular memory location. + * To store values from a register into a memory location, you may use the *v_store()* function: + + float ptr[4]; + v_store(ptr, reg); // store the first 128 bits(interpreted as 4x32-bit floats) of reg into ptr. +
+@note Ensure **ptr** has the same type as register. You can also cast the register into the proper type before carrying out operations. Simply typecasting the pointer to a particular type will lead wrong interpretation of data. + +### Binary and Unary Operators + +The universal intrinsics set provides element wise binary and unary operations. + +* **Arithmetics**: We can add, subtract, multiply and divide two registers element-wise. The registers must be of the same width and hold the same type. To multiply two registers, for example: + + v_float32 a, b; // {a1, ..., an}, {b1, ..., bn} + v_float32 c; + c = a + b // {a1 + b1, ..., an + bn} + c = a * b; // {a1 * b1, ..., an * bn} + +
+ +* **Bitwise Logic and Shifts**: We can left shift or right shift the bits of each element of the register. We can also apply bitwise &, |, ^ and ~ operators between two registers element-wise: + + v_int32 as; // {a1, ..., an} + v_int32 al = as << 2; // {a1 << 2, ..., an << 2} + v_int32 bl = as >> 2; // {a1 >> 2, ..., an >> 2} + + v_int32 a, b; + v_int32 a_and_b = a & b; // {a1 & b1, ..., an & bn} + +
+ +* **Comparison Operators**: We can compare values between two registers using the <, >, <= , >=, == and != operators. Since each register contains multiple values, we don't get a single bool for these operations. Instead, for true values, all bits are converted to one (0xff for 8 bits, 0xffff for 16 bits, etc), while false values return bits converted to zero. + + // let us consider the following code is run in a 128-bit register + v_uint8 a; // a = {0, 1, 2, ..., 15} + v_uint8 b; // b = {15, 14, 13, ..., 0} + + v_uint8 c = a < b; + + /* + let us look at the first 4 values in binary + + a = |00000000|00000001|00000010|00000011| + b = |00001111|00001110|00001101|00001100| + c = |11111111|11111111|11111111|11111111| + + If we store the values of c and print them as integers, we will get 255 for true values and 0 for false values. + */ + --- + // In a computer supporting 256-bit registers + v_int32 a; // a = {1, 2, 3, 4, 5, 6, 7, 8} + v_int32 b; // b = {8, 7, 6, 5, 4, 3, 2, 1} + + v_int32 c = (a < b); // c = {-1, -1, -1, -1, 0, 0, 0, 0} + + /* + The true values are 0xffffffff, which in signed 32-bit integer representation is equal to -1. + */ +
+ +* **Min/Max operations**: We can use the *v_min()* and *v_max()* functions to return registers containing element-wise min, or max, of the two registers: + + v_int32 a; // {a1, ..., an} + v_int32 b; // {b1, ..., bn} + + v_int32 mn = v_min(a, b); // {min(a1, b1), ..., min(an, bn)} + v_int32 mx = v_max(a, b); // {max(a1, b1), ..., max(an, bn)} +
+ +@note Comparison and Min/Max operators are not available for 64 bit integers. Bitwise shift and logic operators are available only for integer values. Bitwise shift is available only for 16, 32 and 64 bit registers. + +### Reduce and Mask + +* **Reduce Operations**: The *v_reduce_min()*, *v_reduce_max()* and *v_reduce_sum()* return a single value denoting the min, max or sum of the entire register: + + v_int32 a; // a = {a1, ..., a4} + int mn = v_reduce_min(a); // mn = min(a1, ..., an) + int sum = v_reduce_sum(a); // sum = a1 + ... + an +
+ +* **Mask Operations**: Mask operations allow us to replicate conditionals in wide registers. These include: + * *v_check_all()* - Returns a bool, which is true if all the values in the register are less than zero. + * *v_check_any()* - Returns a bool, which is true if any value in the register is less than zero. + * *v_select()* - Returns a register, which blends two registers, based on a mask. + + v_uint8 a; // {a1, .., an} + v_uint8 b; // {b1, ..., bn} + + v_int32x4 mask: // {0xff, 0, 0, 0xff, ..., 0xff, 0} + + v_uint8 Res = v_select(mask, a, b) // {a1, b2, b3, a4, ..., an-1, bn} + + /* + "Res" will contain the value from "a" if mask is true (all bits set to 1), + and value from "b" if mask is false (all bits set to 0) + + We can use comparison operators to generate mask and v_select to obtain results based on conditionals. + It is common to set all values of b to 0. Thus, v_select will give values of "a" or 0 based on the mask. + */ + +## Demonstration +In the following section, we will vectorize a simple convolution function for single channel and compare the results to a scalar implementation. +@note Not all algorithms are improved by manual vectorization. In fact, in certain cases, the compiler may *autovectorize* the code, thus producing faster results for scalar implementations. + +You may learn more about convolution from the previous tutorial. We use the same naive implementation from the previous tutorial and compare it to the vectorized version. + +The full tutorial code is [here](https://github.com/opencv/opencv/tree/master/samples/cpp/tutorial_code/univ_intrin/univ_intrin.cpp). + +### Vectorizing Convolution + +We will first implement a 1-D convolution and then vectorize it. The 2-D vectorized convolution will perform 1-D convolution across the rows to produce the correct results. + +#### 1-D Convolution: Scalar +@snippet univ_intrin.cpp convolution-1D-scalar + +1. We first set up variables and make a border on both sides of the src matrix, to take care of edge cases. + @snippet univ_intrin.cpp convolution-1D-border + +2. For the main loop, we select an index *i* and offset it on both sides along with the kernel, using the k variable. We store the value in *value* and add it to the *dst* matrix. + @snippet univ_intrin.cpp convolution-1D-scalar-main + +#### 1-D Convolution: Vector + +We will now look at the vectorized version of 1-D convolution. +@snippet univ_intrin.cpp convolution-1D-vector + +1. In our case, the kernel is a float. Since the kernel's datatype is the largest, we convert src to float32, forming *src_32*. We also make a border like we did for the naive case. + @snippet univ_intrin.cpp convolution-1D-convert + +2. Now, for each column in the *kernel*, we calculate the scalar product of the value with all *window* vectors of length `step`. We add these values to the already stored values in ans + @snippet univ_intrin.cpp convolution-1D-main + + * We declare a pointer to the src_32 and kernel and run a loop for each kernel element + @snippet univ_intrin.cpp convolution-1D-main-h1 + + * We load a register with the current kernel element. A window is shifted from *0* to *len - step* and its product with the kernel_wide array is added to the values stored in *ans*. We store the values back into *ans* + @snippet univ_intrin.cpp convolution-1D-main-h2 + + * Since the length might not be divisible by steps, we take care of the remaining values directly. The number of *tail* values will always be less than *step* and will not affect the performance significantly. We store all the values to *ans* which is a float pointer. We can also directly store them in a `Mat` object + @snippet univ_intrin.cpp convolution-1D-main-h3 + + * Here is an iterative example: + + For example: + kernel: {k1, k2, k3} + src: ...|a1|a2|a3|a4|... + + + iter1: + for each idx i in (0, len), 'step' idx at a time + kernel_wide: |k1|k1|k1|k1| + window: |a0|a1|a2|a3| + ans: ...| 0| 0| 0| 0|... + sum = ans + window * kernel_wide + = |a0 * k1|a1 * k1|a2 * k1|a3 * k1| + + iter2: + kernel_wide: |k2|k2|k2|k2| + window: |a1|a2|a3|a4| + ans: ...|a0 * k1|a1 * k1|a2 * k1|a3 * k1|... + sum = ans + window * kernel_wide + = |a0 * k1 + a1 * k2|a1 * k1 + a2 * k2|a2 * k1 + a3 * k2|a3 * k1 + a4 * k2| + + iter3: + kernel_wide: |k3|k3|k3|k3| + window: |a2|a3|a4|a5| + ans: ...|a0 * k1 + a1 * k2|a1 * k1 + a2 * k2|a2 * k1 + a3 * k2|a3 * k1 + a4 * k2|... + sum = sum + window * kernel_wide + = |a0*k1 + a1*k2 + a2*k3|a1*k1 + a2*k2 + a3*k3|a2*k1 + a3*k2 + a4*k3|a3*k1 + a4*k2 + a5*k3| + + +@note The function parameters also include *row*, *rowk* and *len*. These values are used when using the function as an intermediate step of 2-D convolution + +#### 2-D Convolution + +Suppose our kernel has *ksize* rows. To compute the values for a particular row, we compute the 1-D convolution of the previous *ksize/2* and the next *ksize/2* rows, with the corresponding kernel row. The final values is simply the sum of the individual 1-D convolutions +@snippet univ_intrin.cpp convolution-2D + +1. We first initialize variables and make a border above and below the *src* matrix. The left and right sides are handled by the 1-D convolution function. + @snippet univ_intrin.cpp convolution-2D-init + +2. For each row, we calculate the 1-D convolution of the rows above and below it. we then add the values to the *dst* matrix. + @snippet univ_intrin.cpp convolution-2D-main + +3. We finally convert the *dst* matrix to a *8-bit* `unsigned char` matrix + @snippet univ_intrin.cpp convolution-2D-conv + +Results +------- + +In the tutorial, we used a horizontal gradient kernel. We obtain the same output image for both methods. + +Improvement in runtime varies and will depend on the SIMD capabilities available in your CPU. diff --git a/samples/cpp/tutorial_code/core/how_to_use_OpenCV_parallel_for_/how_to_use_OpenCV_parallel_for_new.cpp b/samples/cpp/tutorial_code/core/how_to_use_OpenCV_parallel_for_/how_to_use_OpenCV_parallel_for_new.cpp new file mode 100644 index 0000000000..cfa9d22b0d --- /dev/null +++ b/samples/cpp/tutorial_code/core/how_to_use_OpenCV_parallel_for_/how_to_use_OpenCV_parallel_for_new.cpp @@ -0,0 +1,332 @@ +#include +#include +#include +#include +#include + +using namespace std; +using namespace cv; + +namespace +{ +//! [convolution-sequential] +void conv_seq(Mat src, Mat &dst, Mat kernel) +{ + //![convolution-make-borders] + int rows = src.rows, cols = src.cols; + dst = Mat(rows, cols, src.type()); + + // Taking care of edge values + // Make border = kernel.rows / 2; + + int sz = kernel.rows / 2; + copyMakeBorder(src, src, sz, sz, sz, sz, BORDER_REPLICATE); + //![convolution-make-borders] + + //! [convolution-kernel-loop] + for (int i = 0; i < rows; i++) + { + uchar *dptr = dst.ptr(i); + for (int j = 0; j < cols; j++) + { + double value = 0; + + for (int k = -sz; k <= sz; k++) + { + // slightly faster results when we create a ptr due to more efficient memory access. + uchar *sptr = src.ptr(i + sz + k); + for (int l = -sz; l <= sz; l++) + { + value += kernel.ptr(k + sz)[l + sz] * sptr[j + sz + l]; + } + } + dptr[j] = saturate_cast(value); + } + } + //! [convolution-kernel-loop] +} +//! [convolution-sequential] + +#ifdef CV_CXX11 +void conv_parallel(Mat src, Mat &dst, Mat kernel) +{ + int rows = src.rows, cols = src.cols; + + dst = Mat(rows, cols, CV_8UC1, Scalar(0)); + + // Taking care of edge values + // Make border = kernel.rows / 2; + + int sz = kernel.rows / 2; + copyMakeBorder(src, src, sz, sz, sz, sz, BORDER_REPLICATE); + + //! [convolution-parallel-cxx11] + parallel_for_(Range(0, rows * cols), [&](const Range &range) + { + for (int r = range.start; r < range.end; r++) + { + int i = r / cols, j = r % cols; + + double value = 0; + for (int k = -sz; k <= sz; k++) + { + uchar *sptr = src.ptr(i + sz + k); + for (int l = -sz; l <= sz; l++) + { + value += kernel.ptr(k + sz)[l + sz] * sptr[j + sz + l]; + } + } + dst.ptr(i)[j] = saturate_cast(value); + } + }); + //! [convolution-parallel-cxx11] +} + +void conv_parallel_row_split(Mat src, Mat &dst, Mat kernel) +{ + int rows = src.rows, cols = src.cols; + + dst = Mat(rows, cols, CV_8UC1, Scalar(0)); + + // Taking care of edge values + // Make border = kernel.rows / 2; + + int sz = kernel.rows / 2; + copyMakeBorder(src, src, sz, sz, sz, sz, BORDER_REPLICATE); + + //! [convolution-parallel-cxx11-row-split] + parallel_for_(Range(0, rows), [&](const Range &range) + { + for (int i = range.start; i < range.end; i++) + { + + uchar *dptr = dst.ptr(i); + for (int j = 0; j < cols; j++) + { + double value = 0; + for (int k = -sz; k <= sz; k++) + { + uchar *sptr = src.ptr(i + sz + k); + for (int l = -sz; l <= sz; l++) + { + value += kernel.ptr(k + sz)[l + sz] * sptr[j + sz + l]; + } + } + dptr[j] = saturate_cast(value); + } + } + }); + //! [convolution-parallel-cxx11-row-split] +} +#else + +//! [convolution-parallel] +class parallelConvolution : public ParallelLoopBody +{ +private: + Mat m_src, &m_dst; + Mat m_kernel; + int sz; + +public: + parallelConvolution(Mat src, Mat &dst, Mat kernel) + : m_src(src), m_dst(dst), m_kernel(kernel) + { + sz = kernel.rows / 2; + } + + //! [overload-full] + virtual void operator()(const Range &range) const CV_OVERRIDE + { + for (int r = range.start; r < range.end; r++) + { + int i = r / m_src.cols, j = r % m_src.cols; + + double value = 0; + for (int k = -sz; k <= sz; k++) + { + uchar *sptr = m_src.ptr(i + sz + k); + for (int l = -sz; l <= sz; l++) + { + value += m_kernel.ptr(k + sz)[l + sz] * sptr[j + sz + l]; + } + } + m_dst.ptr(i)[j] = saturate_cast(value); + } + } + //! [overload-full] +}; +//! [convolution-parallel] + +void conv_parallel(Mat src, Mat &dst, Mat kernel) +{ + int rows = src.rows, cols = src.cols; + + dst = Mat(rows, cols, CV_8UC1, Scalar(0)); + + // Taking care of edge values + // Make border = kernel.rows / 2; + + int sz = kernel.rows / 2; + copyMakeBorder(src, src, sz, sz, sz, sz, BORDER_REPLICATE); + + //! [convolution-parallel-function] + parallelConvolution obj(src, dst, kernel); + parallel_for_(Range(0, rows * cols), obj); + //! [convolution-parallel-function] +} + +//! [conv-parallel-row-split] +class parallelConvolutionRowSplit : public ParallelLoopBody +{ +private: + Mat m_src, &m_dst; + Mat m_kernel; + int sz; + +public: + parallelConvolutionRowSplit(Mat src, Mat &dst, Mat kernel) + : m_src(src), m_dst(dst), m_kernel(kernel) + { + sz = kernel.rows / 2; + } + + //! [overload-row-split] + virtual void operator()(const Range &range) const CV_OVERRIDE + { + for (int i = range.start; i < range.end; i++) + { + + uchar *dptr = dst.ptr(i); + for (int j = 0; j < cols; j++) + { + double value = 0; + for (int k = -sz; k <= sz; k++) + { + uchar *sptr = src.ptr(i + sz + k); + for (int l = -sz; l <= sz; l++) + { + value += kernel.ptr(k + sz)[l + sz] * sptr[j + sz + l]; + } + } + dptr[j] = saturate_cast(value); + } + } + } + //! [overload-row-split] +}; +//! [conv-parallel-row-split] + +void conv_parallel_row_split(Mat src, Mat &dst, Mat kernel) +{ + int rows = src.rows, cols = src.cols; + + dst = Mat(rows, cols, CV_8UC1, Scalar(0)); + + // Taking care of edge values + // Make border = kernel.rows / 2; + + int sz = kernel.rows / 2; + copyMakeBorder(src, src, sz, sz, sz, sz, BORDER_REPLICATE); + + //! [convolution-parallel-function-row] + parallelConvolutionRowSplit obj(src, dst, kernel); + parallel_for_(Range(0, rows), obj); + //! [convolution-parallel-function-row] +} + +#endif + +static void help(char *progName) +{ + cout << endl + << " This program shows how to use the OpenCV parallel_for_ function and \n" + << " compares the performance of the sequential and parallel implementations for a \n" + << " convolution operation\n" + << " Usage:\n " + << progName << " [image_path -- default lena.jpg] " << endl + << endl; +} +} + +int main(int argc, char *argv[]) +{ + + help(argv[0]); + const char *filepath = argc >= 2 ? argv[1] : "../../../../data/lena.jpg"; + + Mat src, dst, kernel; + src = imread(filepath, IMREAD_GRAYSCALE); + + if (src.empty()) + { + cerr << "Can't open [" << filepath << "]" << endl; + return EXIT_FAILURE; + } + namedWindow("Input", 1); + namedWindow("Output1", 1); + namedWindow("Output2", 1); + namedWindow("Output3", 1); + imshow("Input", src); + + kernel = (Mat_(3, 3) << 1, 0, -1, + 1, 0, -1, + 1, 0, -1); + + /* + Uncomment the kernels you want to use or write your own kernels to test out + performance. + */ + + /* + kernel = (Mat_(5, 5) << 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1); + kernel /= 100; + */ + + /* + kernel = (Mat_(3, 3) << 1, 1, 1, + 0, 0, 0, + -1, -1, -1); + + */ + + double t = (double)getTickCount(); + + conv_seq(src, dst, kernel); + + t = ((double)getTickCount() - t) / getTickFrequency(); + cout << " Sequential implementation: " << t << "s" << endl; + + imshow("Output1", dst); + waitKey(0); + + t = (double)getTickCount(); + + conv_parallel(src, dst, kernel); + + t = ((double)getTickCount() - t) / getTickFrequency(); + cout << " Parallel Implementation: " << t << "s" << endl; + + imshow("Output2", dst); + waitKey(0); + + t = (double)getTickCount(); + + conv_parallel_row_split(src, dst, kernel); + + t = ((double)getTickCount() - t) / getTickFrequency(); + cout << " Parallel Implementation(Row Split): " << t << "s" << endl + << endl; + + imshow("Output3", dst); + waitKey(0); + + // imwrite("src.png", src); + // imwrite("dst.png", dst); + + return 0; +} \ No newline at end of file diff --git a/samples/cpp/tutorial_code/core/univ_intrin/univ_intrin.cpp b/samples/cpp/tutorial_code/core/univ_intrin/univ_intrin.cpp new file mode 100644 index 0000000000..9be4170d7b --- /dev/null +++ b/samples/cpp/tutorial_code/core/univ_intrin/univ_intrin.cpp @@ -0,0 +1,230 @@ +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace cv; + +const int N = 100005, K = 2000; + +namespace +{ + +void conv_seq(Mat src, Mat &dst, Mat kernel) +{ + int rows = src.rows, cols = src.cols; + dst = Mat(rows, cols, CV_8UC1); + + int sz = kernel.rows / 2; + copyMakeBorder(src, src, sz, sz, sz, sz, BORDER_REPLICATE); + for (int i = 0; i < rows; i++) + { + uchar *dptr = dst.ptr(i); + for (int j = 0; j < cols; j++) + { + float value = 0; + + for (int k = -sz; k <= sz; k++) + { + // slightly faster results when we create a ptr due to more efficient memory access. + uchar *sptr = src.ptr(i + sz + k); + for (int l = -sz; l <= sz; l++) + { + value += kernel.ptr(k + sz)[l + sz] * sptr[j + sz + l]; + } + } + dptr[j] = saturate_cast(value); + } + } +} + +//! [convolution-1D-scalar] +void conv1d(Mat src, Mat &dst, Mat kernel) +{ + + //! [convolution-1D-border] + int len = src.cols; + dst = Mat(1, len, CV_8UC1); + + int sz = kernel.cols / 2; + copyMakeBorder(src, src, 0, 0, sz, sz, BORDER_REPLICATE); + //! [convolution-1D-border] + + //! [convolution-1D-scalar-main] + for (int i = 0; i < len; i++) + { + double value = 0; + for (int k = -sz; k <= sz; k++) + value += src.ptr(0)[i + k + sz] * kernel.ptr(0)[k + sz]; + + dst.ptr(0)[i] = saturate_cast(value); + } + //! [convolution-1D-scalar-main] +} +//! [convolution-1D-scalar] + +//! [convolution-1D-vector] +void conv1dsimd(Mat src, Mat kernel, float *ans, int row = 0, int rowk = 0, int len = -1) +{ + if (len == -1) + len = src.cols; + + //! [convolution-1D-convert] + Mat src_32, kernel_32; + + const int alpha = 1; + src.convertTo(src_32, CV_32FC1, alpha); + + int ksize = kernel.cols, sz = kernel.cols / 2; + copyMakeBorder(src_32, src_32, 0, 0, sz, sz, BORDER_REPLICATE); + //! [convolution-1D-convert] + + + //! [convolution-1D-main] + //! [convolution-1D-main-h1] + int step = v_float32().nlanes; + float *sptr = src_32.ptr(row), *kptr = kernel.ptr(rowk); + for (int k = 0; k < ksize; k++) + { + //! [convolution-1D-main-h1] + //! [convolution-1D-main-h2] + v_float32 kernel_wide = vx_setall_f32(kptr[k]); + int i; + for (i = 0; i + step < len; i += step) + { + v_float32 window = vx_load(sptr + i + k); + v_float32 sum = vx_load(ans + i) + kernel_wide * window; + v_store(ans + i, sum); + } + //! [convolution-1D-main-h2] + + //! [convolution-1D-main-h3] + for (; i < len; i++) + { + *(ans + i) += sptr[i + k]*kptr[k]; + } + //! [convolution-1D-main-h3] + } + //! [convolution-1D-main] +} +//! [convolution-1D-vector] + +//! [convolution-2D] +void convolute_simd(Mat src, Mat &dst, Mat kernel) +{ + //! [convolution-2D-init] + int rows = src.rows, cols = src.cols; + int ksize = kernel.rows, sz = ksize / 2; + dst = Mat(rows, cols, CV_32FC1); + + copyMakeBorder(src, src, sz, sz, 0, 0, BORDER_REPLICATE); + + int step = v_float32().nlanes; + //! [convolution-2D-init] + + //! [convolution-2D-main] + for (int i = 0; i < rows; i++) + { + for (int k = 0; k < ksize; k++) + { + float ans[N] = {0}; + conv1dsimd(src, kernel, ans, i + k, k, cols); + int j; + for (j = 0; j + step < cols; j += step) + { + v_float32 sum = vx_load(&dst.ptr(i)[j]) + vx_load(&ans[j]); + v_store(&dst.ptr(i)[j], sum); + } + + for (; j < cols; j++) + dst.ptr(i)[j] += ans[j]; + } + } + //! [convolution-2D-main] + + //! [convolution-2D-conv] + const int alpha = 1; + dst.convertTo(dst, CV_8UC1, alpha); + //! [convolution-2D-conv] +} +//! [convolution-2D] + +static void help(char *progName) +{ + cout << endl + << " This program shows how to use the OpenCV parallel_for_ function and \n" + << " compares the performance of the sequential and parallel implementations for a \n" + << " convolution operation\n" + << " Usage:\n " + << progName << " [image_path -- default lena.jpg] " << endl + << endl; +} +} + +int main(int argc, char *argv[]) +{ + + // 1-D Convolution // + Mat vsrc(1, N, CV_8UC1), k(1, K, CV_32FC1), vdst; + RNG rng(time(0)); + rng.RNG::fill(vsrc, RNG::UNIFORM, Scalar(0), Scalar(255)); + rng.RNG::fill(k, RNG::UNIFORM, Scalar(-50), Scalar(50)); + + double t = (double)getTickCount(); + conv1d(vsrc, vdst, k); + t = ((double)getTickCount() - t) / getTickFrequency(); + cout << " Sequential 1-D convolution implementation: " << t << "s" << endl; + + t = (double)getTickCount(); + float ans[N] = {0}; + conv1dsimd(vsrc, k, ans); + t = ((double)getTickCount() - t) / getTickFrequency(); + cout << " Vectorized 1-D convolution implementation: " << t << "s" << endl; + + // 2-D Convolution // + help(argv[0]); + + const char *filepath = argc >= 2 ? argv[1] : "../../../../data/lena.jpg"; + + Mat src, dst1, dst2, kernel; + src = imread(filepath, IMREAD_GRAYSCALE); + + if (src.empty()) + { + cerr << "Can't open [" << filepath << "]" << endl; + return EXIT_FAILURE; + } + namedWindow("Input", 1); + namedWindow("Output", 1); + imshow("Input", src); + + kernel = (Mat_(3, 3) << 1, 0, -1, + 2, 0, -2, + 1, 0, -1); + + t = (double)getTickCount(); + + conv_seq(src, dst1, kernel); + + t = ((double)getTickCount() - t) / getTickFrequency(); + cout << " Sequential 2-D convolution implementation: " << t << "s" << endl; + + imshow("Output", dst1); + waitKey(0); + + t = (double)getTickCount(); + + convolute_simd(src, dst2, kernel); + + t = ((double)getTickCount() - t) / getTickFrequency(); + cout << " Vectorized 2-D convolution implementation: " << t << "s" << endl + << endl; + + imshow("Output", dst2); + waitKey(0); + + return 0; +} \ No newline at end of file