gSoC - ADD MERGE COMMAND - code patch submission

Started by Boxuan Zhaiover 15 years ago34 messages
#1Boxuan Zhai
bxzhai2010@gmail.com
1 attachment(s)

Dear All,

This is ZHAI BOXUAN, a student of gSoC 2010. My project is to add merge
command in postgres.

This is the first submission of our codes, which has finished the parser,
analyzer and rewriter parts.

If you are interested in this project, please download the source code in
attachment and have test.

There are 3 files in the attachement. Two .patch file is created on the
/src/backend and /src/include folders (between orignial psql 8.4.3 and our
modified edition).

There is a more detailed instruction in readme.

Any comments will be highly appreciated.

Thanks!

Attachments:

merge_command_first_submission.rarapplication/octet-stream; name=merge_command_first_submission.rarDownload
Rar!��s
�gt��8qD��0����Q�<3 merge_backend.patch�@��!�����|*�_71JjG�"[�{��[gp�U�Sv�sx�RE6r�%b%7�3/���i���"j�������e�S�D@�3G�1�����*�h��?G���������3rz8~�>�.�������pr��i�~4h���y;~=�'�������<����9<��7������3~�*p�yt,���{����k�?v6�����F��b�X��J������^��5����WE���1�C���J��|���'����:}��.�n�ss����{��Z�����������������Q�����|��{����v5�{����}<�<\<��~��Ww�t=�pk�9��D��n�n}y�R��������"�=<\�-�
i�^>nN���<�I�������w.��Q��/�V�_D��:�������bF�������F��f�H��-��v�R^��������59��N�yS7������q�cc���*�F)~�g.A�\��}��{�xz�m��u}}]�A?�_W=;�O^v��:���	��4:�O�1Z����O4��������>���z���<������G3�}Gg<
7�O0����QZ����$u������Z�\����������8��I	���w��|���F�3��Y�||����O0�)�����Q�f-W6i�g�s���*g�K��?��y�d�UDzKY6\�#!3���<�m��O����������x<�
l��O9��~�����y���y�>L����=�&3�L,Y�/����!��4����s����\�u%�2'2	���o���x8<�$�~.Fo�����7�������_�����:����k�����+&�����v^��f���/���dV���_���^���{��Ou.�=��/�{P�/m>���JV4������x�N�2:��|���������z��N���o����3��9bK��i�%��M���*-��OM�����G�G[���Gw��>?�g��������f�*��o�����_g�g{�h�l��uz5]^��������z/�����Q��C-��p�c$U������\����N��{���v{���������g�u���b�Ita{�oU��up�_��$����T��������1�uF��W����I#��#������N��U��oX�����'�����k4�����	}�hQ"�p��W���q����i%R�{7j]]o��G��9�so��yh���|�<2O"I��?.a��fsf�o����F���NL2��������?-��"���Dk������|Zx���r�QU��o��3��j�E_tT��%b�?2iU��'=����Sy���=��>|������<�_�<�R��5����_�t�Q_F'�e�Usn��S4���o�(�s|_�����:�������k/aG����7�����7���~�x�m{�,���/h��}��l#�;�#�v6�������k�7�>���w/����c��VF�r��sSZ�Q~+�P|����}SZo�|������p�?������7��W7-������T������*��9'�Q��������M@wos��.������w��/��.1_��������P�1}�)h�3X�a���(�����f�C2���VeU Vwo��&;�~$X�W�9(�n�WZE�a%5��_k�F:o�.7���(�=��w�9$��b��/O�4N�����c�.o�7�z_�_��v�:/0���l��f��F�����yh�C�^[+x|���]~��5��~��f��Uf�+<�����,���-{L����#��`|j���>d��ed_2Z���;<~���_V;�<3����G7�����sj��=v�q�l0��
��s^�Ol�{;CC}��K9�rxPe�����������l�����FN\����e��
��=�����{7���2��"+����}_�����c��7/��m����%,��;�Dd���9^g����=~�����3�KW��7Y�����������l
�3]�\�$��Z���_k�����8Y��(��n�����V]���?�������x��;N��nx��#���`����p���'�p�����s�2>3G
��R��_���	Q�Z�p�	E�������r���1����r���Y��c���zn�|�$�n�,�3d���lz{_�2�<��K���y����K�&��$`����T/S�g����'7�65i�=E_����~���������&+���IzIy��N^���(���E��55*�0_/����?9.��Q&����x7��s}q�ZN������N9���xx�����f�nG��_w�������2��Of�;st���9~��b9��I��M?�%��s�3�=k����1N>L���.H���	�&�o��S4U�����#N��A�������v�2p�f,��,�X������8�;<BWu����o����n�����r�19b��toff�|���5�\���>J��t�|g����r���~/����)��q�}W�YS�~����wX�?���Z�h��O����c�_��hg����Wk����a���A'����^�����[A[j���n ���&o}��P6�4��^h�~�z^��{X>NT����v����BW(�C������bZ���n�?���\���o���'����Z���5*'�����z�����������
�b
����FU����>��\�>#����6&���{~����!��`d��[�1f�"8\�����g�lk�1��P(�4G4_{��&��X�#i�t>W'J��������7��[~����7���h��2�(��V�i��u�g�C�<���Q��{������Y~�9����Z���^H����?�aL������{k����:�w�d(~y��N�{V���^^N��Eo�0��H���u��c?��0���7>�
3�n"Z��������06o�����C�����C�N-,�����x80�,����d������o�����KE_��2\����������q���Mq�'����6��M���������yig�������(���GK�O6��w��I���D��>8�>�%�"���|����2�e���uY�[�I�b�~�����7�`��_y�}>����p��(vvLN�"�8����RX��gw>���jvA3N���E��d�<Z)�=�k���%�������^���O���K�!��Plvg�Y��m]3	~���|3��ox�zb����>�s?��7��E�H���h�0�]eZh�J�]�MK���>��ot�����&Ld/�F��������������74
���o{_�x�$
,\����-���o:]�zw��$	�2''���1)*�!6aD�!D�oB���	��3%yd�8�����*�:>]�7�4K���Y!����� ��w�V�-c�eWg_c�w��]iHz������Tk����a�tc�u�s��{�����)����t��u�a�KC�g��h�������
���_��bM�������o�X[{`��x�w����;�2	P�H��|J"�S��q�!�&�Z�K��o��Z���O���k��1T��
����5F����	i���`BD���h���/+R��;�gd���X@q����0�@��+�GX�\��g�SC����t���7�E�XT��
������~N_��Xgd�
f��k��I{Y` ��)U���2P���qc1`E�6PW��J��w�r��/�t�����~�*�_������'
6K~xU���r#w�����U���.�����[�g~�0�K�AR����������K�e8'q���;i|��-z���Z
����s�f)���e����nY���:���f��O������C~O6�XF�<�����a������>�8e���{��|}�]R^]r���3������/��`ih';�����o7%��x��^�9,w������"y���	���������9e��67����������ikc^��U%��~l�������>����0!�FK��y8<��k�A�$lW��b^r5#s�
����4����.����3��4o;�4R�A�5��t�� z�';8�)Gp����}�������<�����cwF�8`=�'0T\|����I����<���s�%�����d3�@Pu}4����^�mJh�wl{a�Ji�����
�q�|�
�?��L�����i��5����������9o�^F�e�����\E��&r��!5�E'�\c������I��<}K��p�ys�)�����f/�����ya�+s�v=��y��jhj��7��������W��MN�>&��7��,
�_��N=�e�a�h���O��
4�_�[���������^>O���������8���/J}B��A��8�UJ���O�H0kOrsU|i����N��-�R�����t_\��'O�#�"X<��90�H�Z32�����
?����T�������������.������<����S�XW1�S("J���7����M���L���?)_�l�N
���
�3�:m�O�.��^�K����`g�xo��y<]q��������,mL�����Z�iy&�,��n���6�2(l$��1$kf������B��i�����4�����wgg�{��P����N��PN�Y-�'��{@�v7f�H��^�o�v���E�>'�f�G���nl��8�����"@E j�_/c��7�|�Pf��c����&9����5nY��.p��C�WO��W�:|���\(�Y��I7YK�m�_7��>9��qJ���0�w�����|�m��c��;�P�MZU9_v
����f��"��������i2�� ���REy�<����Y���~Z�J�d|y�����
�]�H���;���F%����"+�����/
�/��/�J��;|���N�!�P_�/o����s���6)4���vp*�w��}�����Y��ae���zYN��3��Zk���.�[>u��*�����~��[�w�g�Z�o�~�3�C����s<�c�'4���^�J�-��u>\k���0jZ��KWY8yv��jpR}�[�+x��F����y�y���/H�!��(����_��v�nS�fZ����l�C%�$�����0}�����(8]�x.���.�_�y|�O������)7DK�������\�����}�S-{v>.��+������P�d�p�qyb�k��d��F
�D���n�K6��
�m+�����3�|��t��:�.1�a{���C�����g�R9�
R�W�s���~X5"�1������G�����]$��1[F���k-������l��s��<��~X�����?B�w�D9m��!,����x������z�+.l�����(��g0�8.�h_���1��c������w�b'��;R��I#��w�[F�+��'	.��tN��_x���9^���#
�o��_OF=G?�+�o�_��z����6��^��96W��������B�
����9�m$�q�\w}>=����.A���4a�������������o�_ ��;j� '�$�G���4�7g%�/���F�����go����UCj�Mo7��u%��(D��Auv�&�%�@>)�����f�R�����\�������������|e�����"�<��\?����xN\jGt�L.��I��U$��F��o"�m��=9RB>��_�����^SLm���'h��������4�w����9�j6�����������-P��K������F�M?�XAA}�F���d���G���S�l�2�pu�b�
#`����R�S��>�����E�������9zbI�.?or�������Cj��2��p�)r���R���JX��@������b>�BD������.;�����;����i6��&���F�{���|[��8L��v�bOU4
-^
�\<}AkSCl�2��|�^�Q]��H����^Ob�	��������s�`��5k�?�������������sq����e����\��z{��u��^���RN$�~;����&����o��I,y9���2�0cl�n5����mfziHi��:Q�~�O_bRD<>��8�8x���|79gG�G��k����
I`�Sk������/g���}��I���~@������;������|�����������������������m|�?,slqc>���]���o�}I�6Z������
���=/��w��Gt�����v�-6A%&JpN���^3����T���=�Ohw1:��nm�;]2�A��������O77�(���OO����<~H���9��j}�~)\��k�=�9`T����r�~\��z��qp���q�#�~�'�d�2DBF���p��|!2\������||Q������l���{��~��zU�����g�2���~��o����G�i���[�����w�s��y$���o_�����6>���$b���YC3�W��M��i�S�)H��g�r��8�'wOi�h��C�����`g�_�]o@��1S�������*z��:��x�
�X3����[�Le���	R��	����g�%����T�Z3�[���+L+|���l^S��A��W��L������g�'��
a0iv7`����P��U��>�Z��w_�0Lu�}�s��oH
�:�'�g7s��;w~y�;��nmlN�����%���7�"�S��4�x���\���?�Xc����~82��l�l���)OU#f�9�+Pp�5��D�������Z�=�*!��?�#$���![��v=su�~����.��wv`N����{s�K�k�zS�+k_{q���Yp�;]��q>�����*�O�K��g?9o	����iE`v����
�q��&(7�����%��D������+��L%���	F����dR)�3��ope���s���{�����E���oX[�Xm��VO���[\�<@F;�v]��;SW�����#9������cva�����{��;����;��;���}t�n��~����	�wv~����Z�}_��O�q	�#�aR���Dg"m�$�_��(�c�L"�Qk��;�t��d���m���������h��/�/ �v6{��U#c^JMH��B^��X������w�](�va*E>�����<Q=���,Q-��)m@v�}p�����L�y�*���R�����{���za���/���
i^������w>�%9��c �u��>�V��:�`���~d�
�7?u����-c4�3��39�p�*���{���cS�0	s���^(��~���A��P������.�����LP��I�W�kqB�s���r�=@����������f���{c�[��Vg�6{���4Z)0V�����������k���A��c�!{������4L������{�!��)��6��v`���_}���+-�w�{1�R6�l��1d���������q�
�/PX�A��lm�
{=�NIb8(/�`(���^(GF;;W�{��.��������Cf
�6����@���w��o���=@���D.�T+��0���ou�~|���z�ix��nw��;����,�t�c�%���?��Y�?��K�1�	����sol�A!�9@3�Xa���@�^0}z����0v�������_���{9��{K������c��z�l��g�e��o9���-3��7v&Ny��_��[3�����nI�B�DO��^0��A"�6��������v�&�m��`P�H/#��A)��������=/$0TB�{j��~�#�/�1�n���<]������*
���Y��T������y�)0�v6f	.�������A����16�v�TG��6��7e���l���2�mk���'��b�
�{��,`6�"�����W��Q���{�y����N����0��F�M�~a�`t�8n��e�r��h���#c����]wP,�*��������A��VT�@�'�*}��d[�"vT��*��IM��I��c�YNxr�g�����n!�&)�%�Y�F�+u_��T���������.)��T�BQ
,]D(���Y�UR��	J�{xH�����)^'�\�Y����
Xs��V���~*�%k��Pb�P2� D���eF6@�g�1:(��i2��D8�����'&���G�8'w	��1��(�c\�VxzH��4FI�@EWT�,'+E��Yp�Ch��B��W&�,�*M��)MH�Q�V�`��T�R.MR(W�&W�$Uu@J�f!~�$YP�+ur���
\&����2���Q,����c`��=U%H�6(�t�1�N(�[1S�Mm�)�8��U�L�����k�=��'f!������A����'�'�,���(�eob��bLV\c�V0OXRdb�4T�*Y`��Y���
N�,����lA��#%x���T�8��Yp�CcPY���`:'> ���Bt��TL�*�%TC����Ag
K��b�/reT�o�{I��D��D	����
I��"��&N �UX�!�v����B�!%x�.]��pz�Prt���XRP"�j\Q'�e8�RU�E����
��#�EI�m�I� �C�����l`,&�\Q'�YW\���_��~^58@��>��M�?��� �l���	��{�T�B_�--�-�
��i�S*5}>���a<7*�y)����phLd�e�Jv!1���/����:�=FJ�@���X�d��r=fv!q������J��K�i.�Td���Z[��"����2T���J��>���,�RJ�%G 7��0����-%���7f0�a�d�b�*u�>�����F�)�����N��2R������J��2T+��;]���x�|J�X����K��j���*��iFP3�U*�_��S�#�d�e"�H�J�%? 7��Q��*��|�J�A_1���#�2T*������%W(g���$>!���S�	�-���2T2}FJ�a�e�;�LC�����,A<--�[����ep0�2T+
�2T�|�J�a�q��Xw���XG��z|CQ��X7�d�d�*�B?e����*o?o���%N����U��FJ�a�%F�oQ��P-��
V�a$�2T+�D��oV�xdJUH.2J�%F��#%N�~���9��'�d�d
�U�S���XW����K5`�R���-���Zr�)u������K�)R��!mK�*U��E�[ZB�>@d��*|)' (J�VP�*�u�-��a���Z����n�!J�fP��2�X�L=a�������.�mL~
�\�FJ�p'��7�$
 nwJ��eW�J�������x���#&Up*����]n@�j�U�V��f@���3��~�a�!v# RK��8��i2������7,.�]p�*]p��"2Tj�u�jIfU`Kk����Q���]�]p�,�R��**���.�	J����V�,��E��IZ����d�d�]p�W\E+�bK�2��(�O���XM����d���p��&]p���		�%_ g��]p.��+����a��K��u��*&]p���6)Ygd����L5^�<z�C/�T��,!u�JL��()]p�����[�@R�]����t
R*�tdk���Q����^��w*������]��}Wyc�S$�����A������(	|U�RR��4Q2�P��"^�eu��]��F�����"6SZ*U<��^"����k����_Yn()vNS�U@6�"}�1>K�O���)��LBx'"�VV}��/��D�/1@��h1K�SRTh�%����(Qy�^	����r�Q�P��.�f�N��W���0SP���h�-���T��E.n�jr+�E/���E���(y{� ^!����<Q��1G��F��J������3�U�)�)�"(axU���'"������*AKA���e�P"���()y�]W1`��(]�/�p��KqE���b��e�hyU�D�kC��B��*�_�LP��4��.���L~
��
�E������`�(�t�T��+�Sx�p�/QFK����P��(Qz�Y�&�^�dP��vE
/�A���4P��ZT�,E/�QR�\�5�tWP�E/1FK����QR�(�uRW(���z�)&�]�/A��P��,�E/U�DV��i�RU0�1D���%�P��NS(�E.�BJk�\����Q2�D�E/1F����(�|jG����5�REp��^��E��`��T����=��C���u�\U\�U!��r��Bw�4��^��c�>�X�m��R��k���|Lt}��<$N����~k��o���������mJ�3=���y>?$�%gk�qN�������=���,X��]L;�7��z+��t���a~G��rx�y=�r�88�����c���������1�_f�l��������6��:9���l��k�ty�oY7�.���?3�/z�$K�����������$�=�
��U�A�|�A|�K'�#���^��U���\���7'�/B%�4�p������D���<q�_������������i���J ]��[������Uf�����������}�G�8_b�p%In~���\���<������E����<5���F%����*�V����U��02��"������:�s��j�u{�[un������?�����{�������f��4�{#�}��CtK�	@'��������|�f�|G�zY1����?_�!�z�_�����7����yx�|��������Q���;�b��>��o�]f�\��������.j��#�/�Z����4�	��4��~8�E�U�I0�g����1���^/'����/�!>�ZE��DY�����4+R^�Nv*tmz���R�1������D]�|4��jv���$�t�cg��#��8�~���<x��/����7��u%{
}<q�j>�P�����/!;���X����Y�Q�>��\?{N�'o�|��AF�4�T�K�S&zK1�B���=�����X��#�OO���������`��������'z���������j��������0������fW�o����`�����PD�5:�a���%G��H����������Q��l��=�1voV�Gk>������~�^^{�*�{r)��=,���GE?'#����%-
qo���(���m����6o���5��
��O �V6H��������Z(�Jn��-I�c|�G���9�QZ�]�T�=������\�d�g��|�)�D���t����-�C��y>��D��>��.at�eX���8_W@B�g$���~-��jO����C��������1*^W���:����TW����7��/6i�����y�5�[�:Z��*���[��?���3�ovE��O�{�	���s$���������|�o�Hw/lr��
R�c�T�zx�4I�b>H6;>�C�
�
s����������T+�9@�O�0�c�jJ�����2U���z:,���>q��`�����4�����R,o��.]�j'���������S��g����
�����h�B^]��*��Q���o��{SE?������]���%���P�����w�����p���"��f��;������Oi���%�d]:���'KL��������u
���bKp��*}Wr���k�T%�f�d�V���n���W`i�uJ��4���3��'&S�V�&�N�> ����:���E��$��|v,l=�uO�E���qkX���c�4�CS���JA%�cX��snm���s��snm��^�A�v�����quL�����k��S&�j���������{�?����}����m���3����e�
�F����E��.��_�Q�'���/����z/5����~���hh��H��rXfP�i�pIA�!�j��e�&�e����[f9�2M�:�M��9(������y����mX$����[i31�k�.ysnm���"8���@�M��9�C�c�P�&�)�A�
	!(x��BJ@����(�Z�f ���q4�qh�e��4��O� ��Jx��Z9:�
CB�Q�%����s����������V��r2���c{)����}�p<��c����d4ajRaBZ���4��dJ��b��
�����[E�$����m����(5�A+Pi��`��OP��)�j����j�CMAE�@uF ���h�m9
�%��a�%���d���j�2�>J�cU�����jMaZD$��x����a��t[c��!nWX�-����v�
���:Oa	h�M�Im<��T��,����;���M������ �SX��Xb!l�T�x����C�X�)�"��dR
i
*��	,�3�P�h����D;q�KT�6v��8�M����#d��	 U�����D��+�b��	.��WO0�u��i�-�1�2�4�����`�Md�d�c��p���������On?!^���$���(���=K�X�E���$����k�xLc4�~���#���,nR.?!^����Uah�P�a��#��>�m�1��(�"��`I<[��m�A+9�Y�x���I(p�D�!NE4$����z��B�(M� I���{(��p��bE�@;T�9���	l/����B(��R%��%X�p�� C������ �-#C�`HO���`F_Ru
�������$�=F�x,�%�hrM����?�w��@���rx���E�J��T.%Z���kXr[���ln?%6�&,����`�]����2'O3����V`,��^4)� %�*���+j� >�Z�Hf��<V�M8�'�hE�5�.r
v�dL@/�x��~���%��j�E�`�i�P���^�<S@K�sF
!������qP�<b�*1�i��1	j�Ix�&C-�C��
��;�����r �\�r���$�m;�-kFz�k�]a	nU��_�jS�90�9�%�f����A% vo`-,Z,�)��X(3�v;�.���s�S$�m�|��@������z� $�zN+����\��Y�-�{�u]�TE�$�*-[�da�S`\�'����O��U3tW�t��k���4�Lh"p4RbK,��&_Q�GU�JK�z�]!��>����`Y
CF�a2R�@/)�1�lIZ+�����;���&�^�]�,T����o������QjU����f \���y55[l?9�)����� �	�z� t��K�r���%O���-v
���l����L�m<�5�����d8#e�-l4�J�;����Tx�5�sV�����9��Yn9l�l��g��-,������!����Yv�@{q4�B��t����+�]�S��O�9��	$�BHK��1���en��h��.N����
5�;,K�w

�G1!�7P��dB���$[�z����
-[	!�N�84����;�6���!���%	 W��x6��tK�)��"_����A����5�
v!^4��wdn�N��	:|��q$���6��Z�E5K�%Cy�^��*S����FvR��g+�8����.��R%�7�(��+@��)��_�)$?x�Q�&3����� ���-~!)�[�k]�!�`�	�S�$G�/��(��oQ;����2�'�u;�lw�=	7,�s��r5����p�`�;)+@�C�8$�Z�J��jEP��Qu�'�hGm��uZ�C]�@M=��&�
./�^I�Z+��a�%���a'�Ia�A��!"�V�roQ;�5t$���v@-\2@���p�e��E�=�\��I1�����z����a	h	q�w�nae0-"� t���wZ�d�J���B�d`!L�9�Q����f���
��}H���K_����E�;����Z���+�s����1�,I���`���\-�P��^���$�Z*�/5�hIP�Y�#��=�@�@���0$�f��8[nr9�%���!t$����5�J3�4�,j�$�W���P
6��&�J\)�^)x���p�.���-H^)x��-�%`4�z�4%��k@�, �L-�t`�wd�,Qs��B\Z�V�a���
&�h$�R^��Y����"������4=���A�I��c��
r0e��#�s�CLw����@�����;�Q��F�V�kY�)�i��V���P��k�bM� Qs�a�4-����w��e5J�He;�4-�3����g�%�9t��1m
6H� uF�� �����c��_E4[p����r�p/\+�d\�x��t
�������!�B\�w*x�x��P]��I��Za���TZ2�,=��~L���
�^3L�Z*����;7(8E�������u
D5#;��Z���JH[X����jx�PX���B�.V<��
�`\~@v�$�M��H0f��lDOH�m�6v���*�"�E�$���W�:X�����sLhF���	����� �$a�Z�!��������5MY�J�KX��(I``���+�/��(�0�=2�6���\�PT�@uc�!�hY���P6�~���u_��KQ�[nrZ�1�P�e��6.4%� �v����f�����P�\�gm�.$s8CUBI������*l�J���GmP����X8m�Pf��$`�M;��(���`���8�
�	r=32p�S�GX��V��!��@b@EbIP��`���GYm�6��9�������|1��FC������X�
��"�
�� "[��XE�
\BZ6��Z0�������4����t��-�r8	<���F����PII�MSVrJG��������F �7M�Z��
&���9��������4��IQ�Yaj[}]�$���df��s�!n]������-q�%�q����f�5��Bt����p��U	)p�B
?�4��@	m��4��������������nE|^�X{�X���$��5�h�C�cB1�VP��5
B����@����14�,�6H`��@h��p�x�M2�&���Y�P�$J�O�$��%�jBV&��$%pM�
(��p�b�B���6������-[fWQ�CZ��!�Z~n?%L
(KE�6.T���E"�IP�[Vg�-�j�0'*m?�����B)���D��h����GV����,v�V-�E�X�U=��V�,�
[BH7[B�	1�rc"�\�����"���h[��I�I�ah�$A��B��<V��!t$��y4=��cD�����i�����&�� f1`v�<lm�L��_�t����v�5�H�%tb��P����n����T0����O�.r2\-�r�:q�
��@;T�V�����Sz��l1�����
fp��B�$wL_�!���c���v��i�Nd~B�JE�MSVV��$�$\Wt���8A��t�h��8V�H���K���/i�`��`�
��@��1]�����-��8����BHT��6(CT�V�Kx@B�������#���F�f0��h��znI�aR��:-i�H�������qE�7�>-p�� �4	!�jq$�M��
p,�9C����i�IXQr�[�%�!M�%C �j��h{?��jZ��#��
:��|��Y�E�C!�H	�k
j�u	!E�kx�����1�@S��q��0�NOScB�N���E���#�����\�c�IBSo�9ZEBZZ�-v
@d1aC�p��P�h����a�
m�w6��n�PZ������9�<|)�Oi���u
�kAy&!
S@�n�&pU��W����jxB����v�k[kmhU������I78�B�!q$����bI4!N�� ��)�;Q�%�����P1�I���SB�cX�5�cX�9���cD��0�5�cX�9���6����snm�k�\��x�����snm�k�\��snm���6��������6����N����8��4J��\��>:{�	A�p�)�zX��B��(-�'�~@Y�4<z\�D�PO��O�\~@Y���b%�B('���~@Y�4<z~�'������? ,�x����!J	����W�z��i�f�@I�g/HE��4�3L�9���3L�4�3D��@���f��! @�@���f�gK1i�>
ThPc8��k���;g�O��Pc�;N�-um�@�v���$��h����9F�8��c�;N��K��!�i��pv��i�v���� A���;N�5
CP�5d8CP�5
CP�5
C��5
CF��B�@��2!�j���bL"� �p���j�����\@�!����jZ���j\�p6��-qZ���p�d�K���-KR��.d�KF�HD	jZ���KI2\%���F�--KR��.d�KF��D�)�j�����
j�&~���8P�9��MST�5MST�5Ne8ma�����{'��1�[n��n����H_��"�F+�vT+�:mK��7Qk�C(�@��d�!��[E�4��:�����yv&��t)�3�I+pTg

���&�J�a��H���O����p�������A�$jA��n�gu	`c`�$ZF�9�������CA1��e$J�E-���\���g���8������- �����	�BCR%�(
�X�a�� -�<�(
�"��*�����i����"!v��R
��t
��h�!ho��Q��}dh��*p�#����n�� �`�CT��b��cS.��[��AF�#�/��.0�X(�
�^�&W-������L�������q���PO��a�R�->/8�j�����h�0]����<h0�����+�BZ�i�'��X~.}`�����-w�U��N�z���`PX	j�
���8~0��*��B��g+�hL�G��O���q�B�qvm�%f,����,h��"H?SL�����1�	m�.$��;KDF0��IHKT�5D-��i�>�*��5A�m��`�$�j�9���	*=|n��Qk�8�S�*� 7V8
y�>.�m�0�a+]�4�gc@$��6-��G���I�i��n�$�	w����B�r��-�BK�<u����C^2�1GXw/I��&i�W�f��P��m��a�16W����@"��|]��mX�����T��$��p��K����3����S�kp	!$��76���,U�B��3�4������a+����!���%dM�XE�,���E!?��`�@�65
:T��(i���t_��[�"���+�(�I��x���D�*q��_j���(]BJD�E����g�^����_��H�J��O����	,U|jU�-k�Kn|#/��>	q����BW"����5��/��X��S�\�h���$���C�,����/�����&�k
H?�-L�����P��QA�_0H��7@���������V�I+>�N�@C`� ������m�]�U������&IMg�����:��p,�)3��`a��Y���%�ym|k�;SBK�k���$>�U����&=��s�����p$1\I���%W��K�4U��x�O@��P���c����d,�8����_0���i�(�Y�J@/�+�i���-��	p����e%�����l 	Z����GV�:�_q��d+laz���8;P�56W���Y�SUDw8|�����A$ah�96��e��^I�y��8���@�%-�lk1p��qe� �C-�6�8��\������z�.J���w�Y�Lqm��Q�tb���#B\`�T 0��{ !����q$��I�V,��� %����	,5\p�o���A�B����U��B0���~B�|I��H���?�|93a����@���l������>���?����'��cE�HE|qe8��kU�6�81F��q����g%N���d�k^I@�D�
N���b�����m}�t2@8P8����������4��!�\Hf�=V�m�@M\l�?2����e|lT�,���O�}W�J��+l����q�����%�/�mY_��kfv�T[������f���JD4(
~��?%���KmuJ�����BN^6�+����<��Vl���6��@�!9T���8������*x�_ �BN^6�(Z:FCk�7�$�Z�C�����W��k;�Q�bE>ky�-0:
���a	j�I@�KB���p��(��g�I��� ���]��-��u�$�%m���e|i���[,pZ�Qx�����h����[�$��J!oKB�cX�4@��)��Aj���B�m�Z���C��$P�����J�"
��D��@�s��5��.k���^��`\����\E���6�����8��6����r����8��6����snm���s�����xX��4�Z��#6��? ,�=>�-OO�"�I/O��x��x�����c�3�����]�=> =,D����[��O��O��x��{=><3L�4�3L�9�����Di�f��gi�f�O�h�n�f��i�"��-�s��f��i�f��k��xf��i�v��i��>��K3�@�v����� @;��'���@��<xv��i��pv��i�v��Z�4��c�;N���;N���;����
CP�5
CP�C�5
CP�5
CP�9��
CP���x��(j�p���j����"9��
CP�5
CF��i��p���jZ���jZ�2\%�g��BZC�n����-KR��-KR���a�`%�jZ���h�W
<K�.�����JZ�2\%�j�?��T5MS�N��Jx���j�����
j��������J��p���h��� @SD��F$�
j����j����s)�����h�c[�%ne�~�����x��X�v�k����o��r�G�dH�B����A��
?��^�s?��������F�^���G�fv���h�����!����w�>���>��;���s��ejVy%U��\���d�Md�<�-k��B��d8XY���X���r��x�9��m�;Z���Y�������-\�.xW?.
�<�����_yU�\;����
����d��d$�%Y���18V�-�F^�uU�����Qg����r����������������r(��C	�vt2
����ay5
�����0�+��y-j����]>~x��*����'K��&L���}�]��d�bt	9s3����u�%Z��5�������C��t:]�d1l�������yYZ��+6E���<(���=���8
����D�>���=�z5��a���o(C�9n;�z�$��E^�S��Z�_"�V(td�s���OnKY�����l�@����_�u�
����$�fdK�D8�%����7�p��#��j���W�r�#h������B~u�]�"X�S����;��
��O�]����o�~�f�N�z���������?~�g�AS���[zp(he?-�B&���������m�������Q	�2|
���,�;=�j_�wVH��ab� ��{�k��E���T��Hw�����|.����v~�����M|_y ���h���1�&��F>�� $��g�8d��u��?��@���*�;:c�wHb�~��6�_G�I&"����J����Ca��t�~�:�)_B!��o�:]
>�L����s��81�&�Lu�B�$�	9!��}U�����K�����|km	F�K&�����]��Y���,U���V4�	V�������th�`���/%^j��1�B"D�'|�^I�r���~UoQ:��G�����Yw}��$���
0�&(&�3'?3&�f�B��#7 �-���53I��T�L�zA#
�����	����+O��3�hx���..����I7F�X�I����=��X����{��4,�~�?���eV�9�J���1��*dm�������
-zHZU���]~-�:����:-���>%�u��G��L�!�>�G�+F�}\a�����/�'��o��U�������8����k=�^����7�r��"�	�>��!] ��a�2��;s��E����>C0`]��;��!'6���g�s�2J�;2f�����P�����!���@~���Y�%����+�������fu\8����v��9��Q�pb��sy�{?[��}8�u	e������������([��w�(8Z��CdcR2NA�H���Td�_����C!��Ns8��6�Q=�~��9x���d��N���le�����J�J�w���"��pk���Q]�!d�5�{h�Q�
ZH/��v\����&�������^|�yr��y'-���t�V�����8u6;�+�������<Z�5gU�o����+\9�N?�������$��+:hs���~e������l�������~�}���}��{m�){��9�BN��vL�_�g�Z!2�t����q�n���9;Z��yv�7gTT:��
s���b�.��r5?�y�`(i�>_����f�n�OU�\rC�k�g���	���*���9t����>�xwA��W�lt81L�g��4�������5f��nuF=9mx]��U����_��]UU��L��0��[��>����2��a��y��$��M�W�/M�*d5
b��>b��]Q�>���> ���2����{����&=�w,��a���[������*3���eBK�\����g�}^��?�A��Kb����4�5d�h���Eg�����i��$��VP������N�����E:��o���C��:�=�W���`����K�����g9�y!{����)6�#4`�]��"�-�����r����g��#q���9&���^GO���{.�y���v ��_?O���h�m�q�����#��|�$��<��P�5?���5�	m2��{�9k�����(���!��w�8$�&.��,���?d�T�_s{��W�����'�Z�l�k'-�t����'=�tNu~������F������`o�4���t��d(0Qw��j}&��*������V�ff��zy6�2hm6�0JWV����3��{��_��Nz�?U��0�xw��I���?Tk���:y�,�g'o&�h�����fr��G^E�����uk�?����'a���!O��f9e��[H���%�V��������t4��n��$��^c��_	
���d�)��O�����+�rJF^��Y�����������m#_O�$5Z���R���W����w��S^���C\���q�g<���D06��t���5~e�HP�J�M��u(KM(���E�f��j
T�[�:b4�d���QS��b�!i�Q�F2���*�}��?E�H���g��7��;&���*�{���oT��u���O���~uX���H*��6�^��1�|_�C�X
e?��'��!��L=�_V��J���|�x���.���������dh��C�vF*�,3��p�����h���w��N�����Y7�PI8U�������|������N�#���i����_!elb��y-��VO���d��";�����8K
k�r%����GM{PH���C:�*����5�p�-�?[C����$�1���JwT���,;��V�4�:K�G��|�PB����Y�����w,����}��-�3��l���R�z��-�+��dI��wR�*�����e�d����������W�>�d��K��vi.\�E?�Y>��YcY!�61����e��+�����
N�)>Hqt^�������3�sd���2RX����0�&����0���I�W�J�������,�n���B�naY�K|
��@�K(��R:jp�We�U�>!�ak�g���0bF�?�[>]`��H~wKh��Rm�Y8��w�uV�:k%[%>��/�k���>��%�M���	�\�>�{O_'��{��\��������oQ��9��,���3_���������#^I�Y �gV��{���w# �S���	�������f.Y�������3����|�YBS�>��{�
�g���cd��l�,#��kA��9�Q�����2�������-�1�����O��{a��`H��]����[�z)���F�yekbd�AE��UKt��V��P�4���
KJ7`I$�BN�h����O���F�m),����8��O�����O��,��b���/,l��]��l�~Y7�4^���������#:���
IIC�A�I�.�2�r{4p��7�+��%���'����:��6�T5IUun�.�a�+�4���@�"���[�	����J�m�%Jbw��y������lY�<�������@�O����F���v��%�
��%���N9 W�����rch�L;��C��fbWePP�}����
S�u���RyAsmL�m��H����\�HC��?�����C�+�
��5�)_��2����X�D���_}������t���(���Ud�,�-3ow�!S����Z������r~�BS����j���?��i7Yz��Sz��4(����	Q,.����1�����d���X��PA��� �	�l*���Hu:H5���Z\��h�����+�,��6
���P�x��&��DW��)�a�e(�iO�v�%:��G"�/���G
�l�c�8���F�?Dc[������T�+`�UZLxz�������S�3�d�C��zZ����T��l�4�l�_|e���5�-A�h��T�
�6�U�+��W��n0�9,�Wk����
���e��.nU�������.�;�:����kb!	�7�9{Q�	(�����j�	�n���E�aQ[�5�w�4&jE����d�<�{}^f;�IBxVo����B�8���<T��F���:����g�R����"V�wA0]`��
-�E\r��� j���ZUl��R��7�gf69���*���#f�(������k ������1nw4�yo+�?��F���B��#H��u�o;fZK�P�
��!�Zd���"�L�O@�|�nk�w���#����|�����3t����W���YYWo[x?��Ovv��$��C�g������:��#�����K��`m��B�
x���P�E|����C+��^c����!o���x7*�>{��':����:DHB�5]�����tp�Q>��T��sq^��S�>������F/aY>O��x�,����}���QO+���8b�=^^�p���������P�5e�����e���K��/Q^k�Hi�1�����e�+�,����X?�m�h���c;�B"�-�e�P�\�����oc�Ql�����[^h����E����Y���A�Ge�������1�����T�S7	rCl��n��b>�6
Nw������wXO��	����kD$�Qb���������bcur�S_o��D~t��oV�
k�R�l��<�j�Y����7��%s+�U��{�Q0=�@�U���u8�a����5����e�o�SgVR�r}�^y���B���]��\�a�6!���-r6�J�$��3��[u
M�������5�v	qh^�1�������k�/�H�!u�t��RVk��rM�ue���o���h2r�Z�a�NSp��1��w�w+���z�p���n-�����*��xb;�|vW���-���od!P��"mWVK�v������:v��r w����.����\R��*�dUi��m+#E}9�����b�RBe�����
���YQP����-B7A*k$!�
�$Nf�MU-{�XF��2����0X���*@Y?����ah5$���	�h�96�G�%�?/���A����sT���I%���
]:KZ9������jLb���"J;��d�f�R�TR������WF�m6V��I�,P��=�P�'���C�T��C�n�C^�/������!�0+��M�����5Y���M
�������%���E���H7�e�W���B�#H��nN�{=��`I\���c��|@id���RLMI��eU�_1�D�C�M	$� {�$��@�eJlS^��@��n��S��[4�T����TSJr�m�[zL!i�dZ�_�T�)1�gL�utB���},�p�{I9'�2��7'i��(��PJ%�y6�!
1�m�K$!����p���������`&UG��p�r[5�x:g��WG��8<,�Z2�;e���&jn������	(\�k����[�~r���$��7����};`�N
k2�yn�fm��h��oz��%��m �x�h�:c�f�����~�:���I 9C��h�@~�J��BCL��[�l�=�l�k���a����~���I9[������$�S%��6ou9ae�[T�
�����
78C=��IM�`�-o8��p�t�2�.���^��gi�*z����3"��aHH��$������M��$2H��'���F�&�-��u�qO^����������
5���Q~.�w��F]H����	R�[p�����7t��b
�b��%wfX\|���Kc�U�"c)h����+��B���jA��'����\Rla������Wn'G|K���;�%4��nVd;����K�R�����
i�b���>�����o�h\T�U��!0�d�F�<%�q'K�y������=�<1�A!"�����Kr���CT��y@�cW�,Q��IP(�n���h�� 
]n<���T�&%U�X�R�Eo^����������A7�t�������4^�W+*�RViUl@�X�Qn�����yY
��}��J�"�M�F��\�d3��Nb�#G$+���\��+�{���|�b��]�����R`
��Eb��-��R+'�n��+&�uyP��mq�A%����������.4�*r������������&{�Bg�&e��Qeg�tr�����6\����RR��o���fBYJK�e���������K�fb7<�	t����n]V�����-B=�
�6�^�/P���D��G�K�0b�}U��Ie(R����.�O����.X���%6yc[��-�G�+�j�����+�]�%r���2_���d/�C�=�0e��Bmw���~��&���!��*�!�!�frr�����=�rG%�!��<�\����7����3��^����1���!9}D����rS'���`$���C ��N�7���@�.�p������N�Z���7�Y4:v_T�{&S��s,"�����q=�1�E�G&E���,hU ��;Q� ����k�����#�����e��x,5��^����� �i�.��5�n��)���,6���`���_��~w42�NF7*d�X�T�vR.�0�w�w&O�\�c?���
��v��AO(��eQB�#��j��sqI��*�����6b��@j���vu��hb^��=����$ ;r�����,�*kE�����B��T���:����c>[��S�x4���r�n@_Uc5������%�7�z=�6u��rV����M�R����t�;5$-}���C��� ��CdR
��e��������(j�t���CC�7� ������!�7�)Z����9p���s�nT�t"Q��U!�$����0} mo����Y|�F���<���"��
�Ru�JM������d9��~q�N��'�k�y�O,��8-�"�f)M�T_����Z�~BNJ�C���*��cIEY�Ri�W���hp����J��5����R���5���'� M^U�{V���e�eo�[�I���d�^����?rDs�2UD�:J�;\d6���$�����������R�g��S�hN������-�W�v�F�f)�7r���� p����IH���Y�)�8���je�xXn�5p(�r��g�ccbab��[�HGk���+��f\k��Q�����I��m�Rkg�n�w�|j��9EJ��R�}��n�B\�����
J���������8��!�=�m��������2�7 ��&����0�~��e��y���!�%E�)��i�8?Q��h)�C1�i����6�B��C�J������f^IT����:���
�&�'��{>�I��;%�t�2nt�JU�Y��Ky�RG@��|�b�t���v:�E�sRz���w�<��2�Vl/3X����k������8���!nV���E������3����>��T�yx1LEv�����$����-�\��?'k������
���1Bz�|�1C��1����CV'GxI9{��{>
������}�X�Z�z��R��F�XLSi]�|=[d�����	-�TG�EK�&]g��V�L^�h��P�l�����
���mE�Q�$�b����W��ee���}��/u�����*D�i0����R�v9C
@�����R)Z�fu��z&��J4R�����C3���gz��K}[��V������|�T��Jf!��@MN�����(��z�K�&!MK�(�f��L�4�l�{�T&!���_�=�vs	|�J�)���r)Z��Bhe�tF�����{���:�$�f?AWZR�fa��X��>b��{�qz�qI�����%��q�����d��Td�v��R�#	�X�s4�Jl�;��t{�8wT	�'s��Q�%�L����z���IGy��t9��8�Gs*q�409�1<�I��	��!���D�l��?D��M���$�=��iC���M���#fF�%��#q�fPH����[��9��7#�sP$�i���	R��8(A%������qE���_/C��K��6���X%���F�-).{�4�#�)~��	+�(��,�<&&���B)�	���;������(����$�9S�{c+ �n�8wt9�x�ADf��Bv�=f�@^��#�+}�9Dm-G�c[v������P�P�.��}}�r:�#�
b�]�x8:-�_N|���:]�"
����s�!D�( �4�D�D]L*[1�h���r���J"Ctr��J"p��g�M��Bgbs�9�D*Vvo�4�?�m�aB/P����KG�4#���}���
��LO8����E����)���Y��eq�����'����[	�4�u$Fw�QO�Q�`A��&��{�����H����.��2�����Z[o���I����)����<��V��^d��YNe6��t�0����f�aQq*�0^c�+�$��:lx��_�DK�I�B���<�z��<��'�[���K�V���,�e������EV��p[����4���)�!fE
��>�,�5���J����
�Q�;�k]�v��.���WLyu~����kI�<F��m��EN���@���o�=��GM�^��]�F{���[��Z�n��
�E#
�
E�$T��YZ�s���n��qj����mt�<�v�������P�M-�z2]0��?j���^�����(���a1k����8��m{��<w�)���;~�%�(0�Z��{~7eq����R�8��o�����1|	����2�%���T�C����J�c�2��	HM���$��	�
c}�j��B_�H�[�t�z��������)�4S�gT�*)a��6��b����j��.
*b�G���;���_���C�����m�m�nB�gG{�f�����.{wP����G��	#�Y���,Ya������w�T$���<��*�7��!?f�<T����*X�� ~a<H6�J}!	t����|�b'c��-���/,b�����P��>j�H@�>������"Nv�DU����[H�������-�B����!o��E�E9�]���Q�e����;�l�����[���ir����t^��%��M�>�����y��o�X1MV�|��1�w�n��V�^�M�����A��yg����nB_
J��ZH�������e�m_8���"0��Q�n�����_j�%N��Q�[��&���@#j��Y��+0C����'/J:�����RTo�5��so��fHv\��y��ze{	�
aG�+^��U��sMR��uSyT�JM���<��\u����QH�N�������.v�-�u������/�H~�`Q���K��X��5����-EKd[%������M^���uO���E^��|�	]$C8�H<��2��!	������|9j[�/�&7*0���d__��sU&;l^���Xu�Q|�$�*aL�����*~Kk��e.~���*�N��>��Y�����U�_����o�Yz��Hl�iK��LC���j�H��_��{�e8��)l������?s���?�|I/S_<)��&5��{**�S��m4�AH������J�-��]� |���ZWwI<��U�I:4�Pe�V���U��A"/[^G����g�b����u���������������1�>F���p��h�L����������cc_�uKt��8?L98y�d�t��q����j��o,�Y��%�V��%��SL�K�C�K|�*;�7�2���YU/K��<����N�~k:e�UM%���FQ���z�������j��e��y����'V�����WW��{���z��5���7�i+����!��
	fC���cY�8,"�+
��RXw\b�3
i�>����Yf.O~��!�%g�x����J�����}eLAf���-��i'f&�\�d�[��6MV��������Y�5����C
Tz���5���I17��2#��6L��27n�2#�b"qn�g��1�n2����nR��~��@k����%���V���^�b�y]�d����E�������l2p�W�b����=�+��MBd
2�R���*��)x��
�[�ul����� g�I� ���W���^00����(E�E�Lc�Ly�L��,eJ�&m�<H������X�8�k��9S�neND	�#u�����O~������G�n�eU�Bdk&!��C��������[�dRM�[��N,������Fu3�y�fY�[a�������!�[�&�?v ~@l��������d���*b��#���J$����K����������� ���4e��4]a����{d�f������Tn\��$�>���=��Z�gB�����g���������W&�������P~����=�c?�/kz-���@���h�J�@��A#�����"
n������n��\r������OW1X��Ln�W
g(!Hs�E��+�'*`�����Pua���?��]�b�>�=�2n��������������%�M�[���^#�=��l�#��$05�ce�C�':g|��	?�,������U�O���^g��� [�V����|����D0��*�����b�<����9�J�#����9��p��}���b���,{�Uo�d
$�g}�`
{�����g��l�_V)�(�}W]����)����)��q��d�.itA��U�s�<������,K�zL���}M�:W��uf� s�����!*;�bf�HPa�'T�L-lR%],4E��x���s�J����y�aR�RW�3��4 3n��������5`�=f��E�u����������z�c�};N�M&I1�O����3c_�~�
�Cg�Shi�B	mqVQ-	������e�2�H���K-__��q��nUm����%AD���������-�/��k�G�E��12�$e��L����OlR��y�M�bA�GP���0�!��-���P�s���
�X����S�Q���F�Ry���r��_a�.�Zj!��K��{
��8w�9k��j����|�S�7��������d��=�wc�r�6��2����Rd@�-2��K�����z��~���v��������$����Z�R���^����G�S���"n�OJ�(S��\���`|��c�����}���N���rt�
�����.R�\�]H)��&���]�)���w!�V��^��	�{�&t7r�~���j�!��E<���IeD=C!�&��7�C�����
F)�]���l���bA�k)�_�*��N����{�$��=|�9\��o�W�Z3��b�����uJ�S��	T�����Ypa�	4X{HWb�����)$����iww���J#cC�{�����a������JU�~�}Vd�~U����ML�%�g��U�)��c� z3�v%��������I2wr{4p����S����p�x�!p�5I��Q���ya28��a\����@`������
k�UD�SY��JO�{�P8~&u����v9��F�7�eyH��zE���&��%��nZryS'���"������UH6�*QO�L4
vn�!(�:�������>���{����<�3���m��VD���T��o��t
e���@���+�PA��l�b�V@�A,�+mUL�$#c�)*�c{T���������6�lb.����V���RU��o�JsY�<��|���^�?�{a������{�����Sn/aEN2ca������X����R���Zj�n���lj��V��������h����#o5��H��l�"C���)1�s4qm4�4��l��FK�9>W�K~���b�#�_m��U7C���|ni���O��	~Z������[p5C �7����+�7������Wh��Q���*d����0X�,�m�^�f�u�O!��Y��U+T�:d��s\��������2�]��_k�������v�xn�,����',w4c����L��
 �do�Ae����=O��=�4�B����_�S�*��
g��9�|:e����,u��������AH������FIC'�UYm�OL����p"[��*�I�!K@3v�.��>��{S����e�.[�(�aHC����&�������tn}v��62�nQ���sS$w�1b��o���A���K�\�7{B����0��Z��N����t.}�������%� �3��!�$���y�ym�^}#�_�R��<va$#!��N������,�k���y�-:���{�Wi�����-����^�������4���;Yt�aL
S
B��������<9�4/�:8�aC;��i��o��C�0��;{�`�}�^c�uD�����B���GB�8�!���9�?A���;=��t$�nI��E���1Li +���u\'jse�9����N-�9n�%�����w��5"���p�7u}�k��8b���G����[�����w���Wb�@�	�2W���Q�ns]��T��{�V�2�mK�d�eZ�1o���j�3<�-�v��Z�iT����[�PC�SOc\x [{.��c�N��������eq^�����B�����c;�_�qW����Ez+B.�}%�Ln�A�f�TZ"�G�B�qRy��E�	�I����W'3��)toj��f������Z7��������)���R��5z�;�������e��[��d�<���~��BPr���������;���)����u6���Y8�i��������E�N:��dHi����6�;#�?������afo@�:����W\.[����
����uS����Y�V��k�:A�s�9��1Z�o1��ah�� |�W+��������;�]��`�}�6-��*��s4������j9{=�C���9;x�!��vu�����9;���������\]Y�)��J�]�Ukr����MT�Ne�	!l�:I�����Og��f��<�A������o���jX�.�~���9�?�V��D���
���Os��Z
����H�&�

�\�5He�)�}��5t���B���8�t���~H�����q<9o�U�T�$�/�g���%��
��L)I%d�V��U!Cx[� �T�Xa�����K.���_�|h��j��w��#@o�y\��=�����\�%�������g������2e^t��&2����	{k1�Y����S�_��k;�Q����[��6�NE��hI��ww��f���K��G�r��N�;�DMPd=���f\��NVJ8�9���VN�r���j,�^����s�lDe��D�R������
�[Bx`
`�"n��h�o�uQ� �* �w�E[��oL-������QH���;�w+���r�E�.�s�A�w�6aT�1
�]������[&��u�	h)�������1����p���q��ADD�N�vM�(8��)�����_@�X��C)e5��
b����r��v I�����`�U�s_��J({r����!]�����������\�7TTo-�����9��u�g{����Y8B*����m��!��K<����j\6��������m[�W����k�����gh�Xs7	���]�r�P%���T]�W��IR���a�{���
�b�;2l�U()MA`
a�H>cv��,J�����/[�eH�'G�z,��V�;�Sv`�i�U,�?`����Z�E�#�V_�xd`��N ��\����}*e���~��������{��/�E�j����nI�UAt�|U*�*�{�m�U����?�Q������X��ll@�C�����hE>+�`�Zn��C{�L��s
7���Z bCd�/e� {4��E@�����E��!{��m������B!��J<}5��M�����(�4�[W�%)���x��C��}�����r���l�����-�)j��%������v�<�A5�|���%N���9n��EF[���0�9Y�D!�f9���u�LwS�=�0f�U���� ��]��0a{/�[���{��
����v7�����U��v=��ar����dv�������l��]���lLk��Xa�����Tu�����h���
�id$�s��n��o/n1�����&<Q*�MPt{0���gnc��G;uotn�W�{��1M���M�lJ�����&wcv�k������0��m����]�<"����d;�(!�����C�]���]M�[�H�::Y^�.A�����0��y����Y�����\��C�c�?6d�Pd����%���og+�|��Y�Q�h{K
���f�_�&�W)���v\J�a^!��xd�mNXj����;z�@K�[�w�U�csA'"�C����V�	�����G$r\�\��H�\]�[/x7��� y��g��m8U)8r��9QU�=[iVIo����%�nb9���-�e�I
pb�\����I���v2�������
ge�"�{O��r���{E��q����S.����)yllMd�e�v;&���.�D.�T2��������Bc��-�������P���gw���{�j-��M`����2��r�v�����	�����!�N~kj����Cw.d��!�s��4��d!���)[�O#B�#���l���������_:�L�����M��QH��G��5�������e��!�NX �������G4I&|p�=�d���H�����1��I��Q�$������ ���l[��f����\��8�O���V�+6��v5�� �����I��t����"3�CdR-�K������,�� $uS���0����thi��@��Q�����;�YY\�
��M��*���d�������
���m<�9L������n[�8�*�B��)������=�Cy0i'
��a�)\�������))\0n���}V*�����:/�9-��_����1�E��#Y���D��A���B����u[��s�T����5G8{�{v�����$���	nw��a��~.��K����������C��������q�({��6*Yb�O����~/�g���Y,c��H�'e�Xw@��U�����l��C���['����,�c��Sr��.l�	�Ky1V�
L��G7OC�D9�llL+,6��w�=X���&��ew�����MG�!B�����F���WV���UY.����)h/^��6��?������6�G���e��hP ��`%xeg^���v����9��������n�Lbg?b����o�E�7��*T�
�>���X����L��/��~��B��"�	�����P�_�����3���>���<�Y:�^ O6��������T������/��R�Z�Xh��@�hS�!�b�$9�p����C�MfZ"�sQ�}=|�#��vyq�B��~��Gdp4o���U���>�������.���F=VK�$�Y��m����bcn�����A�:_0l��p����k��m�v�%M�V�}{�(I����H��A��U��U��U��T�w��w��;���������������;��;������u]�uJ�����������#��|�W~]����.��N�N��������J_7���},/?c�=��`b����@-����d�%"�rf�$<&�����U����2+�H��[1=�7~a��nw���B�=��l��Z ����?���P���bns.��?��]�vv����XM�<7��
�tg���������v���'E���P�4�����#������O�����K������|��L�]����{?#��~/�Q�m[L(���6���=�DM�58����. |�.���;��Q*�����b���P���]�tvt�2���|������K����s���=�H���d/�{��#�\w5��v�-��J���������W��6l{�1�_����� �_�{?#��w��{�����~/��E���v�����-��G���l�$�e�T
4:�b[�L�O6|)@�������v�<b��)��?��r~!Y9_�	D�o�@��H��������6��������%V�g���{%�]6�z����d�}�����X���e���*;�v�6��8{W$KY�P ��l���l��~=�����3`z>�d_�?!>bG�5�B&�x
>Y/�w�R�����zH�
��e��zGP��y/������S�0���<p�`?)R;�����r�<;X�C�~J�q/OT��L�`zW4�K��,K`��bX����
b�W������<S�����T�����m��Zr�o��'2U��'&���Y�Y?����PJ�<�/�����
;�-X�h����d���!������=`��F����%�,0�u��E�-a�������������$��D���;O�H��T���!��$H���%C�B
\��,���,s��S���s(�h,Q����L���$���(�e��g�;��X2�,�]��, 2�d��������9_�6�g��<���dC������g^3�9��R�6U��)������mY�W�Q��#�����v2�z����.�
V��>f�
�E\�|�)�h)�+�J�[�-+�n������j��H�GQ�� ?��`L)���j�3�+3W����4h�Z����%x����m� �6��f�[���2���/F`�r�FU������ZQAn�����_2�/������\������A � $VUs-�����.3D��+���d��v�b���D	�`_2j�jD4H%�����T@��*�d!�Zp���*��_[S�L�M\]��[���_��H�,�x��.Q�_+�s��,	JW����`l��}�����TNU�s�( �\��4+��T�g*��D�r���B!���C����@����A(:���bI������q)�W*qq0r�"�������UC2;��]���������S5t t��H�B<�@T�I_*m���T�[�2��{�)�=|[�G*��������jKE������E=8���2��fe��VeBe��7!U��QA2J�2�.�*�S�)f!>-�8/�S� js9�����j?~���0@�J#I%5\�.���������cT1��c4���G�T�@���1rhf��[�|��HXA ��`(�.-`P�@����;���-�T�S�qe2x��M�m�#,��d6P���e�qd^p)g����no�$d�C�	9<��	h�ps��&s*sz v�T�EBf�YU�e���E�(9NH9N8��4��T��r���*)D�-LP�w��\W����,aq_
�KS3����<i�^��K� �|��r�C��+�]W<�����z�����J���=yNR���H���Q�)\�N���������S8����@�x*r�4xb��I������Q�*�@uQ���0�m0�+��t�O��@S�>*u#�\T�D��Bh=|S�����*	I)�-��Z����d��)�Z�BI-G4P����2H�F4���D3h�.)X$�@�B�������G���r*nB���L�1���������l�V���
���O����EhgvJ�<�]�� f�[]|P�K��Jk���R����'��(���58�6����� ���t������0��7�AME#D5&���� �;��'��1L��T�Q	Z��&�2������R�`T�(Iit�W'_'*���0|�-|N�xU�
V�8L�|���1MH��O6�8Y����'!g�Q"����'��u�_���
\�%�G/�NM�7[Ql��m�:�Kv���P� ����>M�!���G�1L8�\�r@G��������Gr0������F��o����O%���ij~8C����d����v|J�|I�$�h����$���@\I�w�Ng��� P���

*rH �%�Y��������PJ�+��	[���Jy��D,��rB���"�J�rW�A��9'�����ijh|����%`��$oIa�	���IW�*�������(S�����*��e_�B��@�;H���B����
����@.� �����x�����J��8��r3��
aq�����������NR�T\�.E	�%HB9k��w�9�yW����}�����@���p�p�|
�\��W�W!��r�k�� A-`(���1� :�U���!������@�:������i�	��z�r�
���!���
 1a�C��=��)�jNM3��A��%�`�@���9�f�AHa����9T�)
��CD�TX	��(��#������( ��8�����,!����j�/�_d�@&BC`
���!��6�Z��"C��K�}!4#,7t�J�%�b��,��h �@�$�������v��dpVM��*S>�hB���#&	��~�pL`�<�5I�q���c*�nv"�	������TTA����-�!p*{��hed��HM��0�pv����4D� �T��S���Y���@[+���(7%8 �.!�f]�3QA)Xd9R�JB�-!5�LT�@�e�D�0��e:���@�9s�+@
"��t�[H0����8�E�0@	�*�>�h���!�h�M�|���	
!�	$"5 G���R~K���D�L@��� �R�PA�C��&��@[�b��CU/�i�
$�%+�	��e5�rM>�c��$�����P��!Ml[6�CHM�1����l�#C1B����O),.�p��@d�J��T��rB�������33�KJ���>`������(!���kf�,�gG�\B�j"#�0�	��b4�@��6�`	���b�4L2N�#L~WPi�����]������,�"$0C�U����������i�Y�@@���Tp`����Th^T���	SP�fI)�%�j��t����3a3�V!Fa�(/�����@$�
�5R��I��%���V$�G��H�@�������V
���?��R��,�=G��"AFNK	��������!�*%����\rqU�<P�1��D��?������e�C(��f
����43�ua&��-���''��8���M���Z��q�rq�L+��B&��Z%�����99�ts��=��y����7	e>�j�%T��B����KE1mJ#B��K��k��lY�!�d�qi��N�ni��!�j�9��B������#�p��q`����
S���D�����L�y8�P���gI��o���f���p�#����� �,)�6A�P%�)D� ��K��j	O�R�b8CQ��-H��R�{O l�PA���A��
�&����\� cQr�V��8p�sZ�	@
��!H�
�o�&B�B�$�.G@|�8�-%��@&�XDyi���k��I����[<�HCO-e%���a�hdTf����� �e��
�0��[��e��;��6�5��#��gb�*��#?�/�+
���+
���f�a�f�a�4;���;���;`v�`D�l���/C�6h�%�bX�%�bX��-�1L������)�S@#\�d�xb��8p��mDX#5�S�� Hz7�P�p?����$�f�6f����8���6�6�a�F�aF�#B0�#�0�#�6hF�aF�aF���0�#�3\��/#B0�#�0�#�6hF�aF�aF���0�#�0�#��F�aF�a4+
������/Xa[��dh^�5�!x
��hV�dk>B� �a[�+
���+
���+`V�aXV�aXV�l
��+
���+
����Z�aXV�aXUd�7��cC�aY����o����hV�aXU��3
��3�0�3����#d�

|�����f�a�q���GA��fk���c�Dfa�i���pQ�f@�����3}�����n�@C���3'����F�2K��Y81M��!��dl���@2�-�l��������6!�>�Ek�`Q������sZ��q�3l�a�v�a���#`��pd�#�0&�;��s_(`M�v����L��B�4�v�8���!�&�W�~sP�!�9G��/�{���/w������������_����^���/?&r�^��z�1���(jl

&���
�-[��	��/i�B��z��a'��6I�P�)�2����j���UW�0c2^���q���1�*��I���d�j���
��������&���1C��M��i��'�%O�P�^u�JH���f��CP��#4�>����@H����m��%��Q4�����1���9_���# ���}�x�c�yoA�/�g�*�����r����-g��@H�
R69c�_����] �4�\M�#T6�C�r�N�F�pj��%�����������]�gP1��/[Pt�(*�: �H��G��-���x�i3-}�����	����L��Ge��H�bX����HB���t}���\�3H��(.��0!^]">RUWG��X�lM1�Vr����j%]�NU�?�TP)�b��W����[����@Rj1��~T�P��KA	��xf&�����G���gl����r�����������!�:t=��Pa#�7{t;�=miF����F8 b�S�&�%L	�fri��Y�����U���^D����]��|de���O��r�1�!xX�9U�r�1��Y�!���}���M*!�r�Y�K�����I �T~I\�0����3��
t��_3����\K_3�����1���������Qtr�X��tT�
��|V��-��0/��:�&�Q.�W]\��Ia�������A@G�
�f�
�-�n}�,%�XG"��"�g%�Pw�	n���������q���:��>T�g�����,rcE
���qt��`���\����,r����X��
����Tr�����mL�|�n�������:s9|���� �W��gh�����	�C|�_3���]8�Pte^*(�JDPcG.�X��S���}�CPD�9Yh�X(�X:����W2�H�:Ki��������KQ�Q�0 S��:y@�����\���	���E���"�\N�@ ������f���.e�:��@%H �Z���C�:�b"�r���S����(`M�F@��!���s(:9s's��3$_2S�
E|��j����W����P�B��pD��&oZr��36�H@e�:���fr����)�!������t+�&��5i���:IOf1���+Q�Y��"q������h �W�g�5g� ������4�1���b@$K�+n��D�4�4}u#� !=�'N��-��4H���T�nbW�_���J3DIY��IP�hB,�A��:������m�6�(!.a��s����U���W��8 �A���b����R�0��0���Rz<��p��+9j+�J�>@��g�2���&�S�hj.@���!��v�a%�1 ��
#��!������.�a>3�[	�Vz��� @"s��<Z��?����5����h���KR��I�"�`�+�����j E��&s�0E�IXf&�	2�eT#��D��:������������f��'n`5W[R�`,8���R@�r���rO�{�/���r��M��j�p�9>_\Q+���#�"*e�2A����;_/l*��O�����W/2d��
:@[)k�(T�x�B����W'V�����9c@4����������9j"��#�$[N]���-D����>��_@�Q���>LZ�W�Jj�X�h
�y?r�>��*�\�Y��������jAL��� f����_-���'%����-�F[�r���r��@�+'�����M|�nkb�_-3nZ��_@��	��P%^Us��`�.h��O����x0s��Us��y����9Yr�I�W+�(kEg+����5l�M.V�;d�`nLa��+@;DP@G+���}52L��J)���\�������_>M8�r����*����M#'��B9_D����P@1&���u������-�n$��x��'�z ��@R�Kn�SA��9�%G,ih��\N����]wO$�D	�@G��P@XL�B�4��TH �=����%��9n#��V�*1��`�}��n���mR9�@�����OL�v����r������	U��,z���rkKszy+�c�x�:��lr$��T1,�k9�}��Y��S��>D����IJst�^�������G^� �Jcv���0 �g7�)p�8�yd�9�0=CH�k��}�Y���2q�1
*��99��fa�)�q��(G�}}%�Vif����%;D5gH�1 ����"vLc�`@|&��P@��8<��I��ps����?���h��D`9L�*�p@7!�A��(������&d��y���K�O� ���^� UI����.��S8Sl�6Wv�D��01�����M�S����|�Q�%��-G-�p
�:f�Q>
XI�&������^KG����R�
Y:�W����9C��a�7���Cu��j��!����������B��:c����NBnM��N*"m��w�T�,\����[�	H��|bT`��:luk����d%����AXF��� X9G)�8��HM5�
=&����.��DH�)�u�M�z��04
���v���!�N��"���;������v�Y�U;Zc�Ts��S�H�I�s�3�y$����@�B�L�I�H �aM���.o�IAn'W��[G]�U7�o�$�pA
Q<2P<0��KVm��B;QAU�$�E���e����R�]5t�&���,,�,/�C��������mLU����aO�����a�����4������r��XJeac�a{<�0m*95��^��}�I�R�wP�~����� k5��B�,M�u��XNrp#�U���V��;�����D�C����j�-��^���4�[Hu�Olr�#�S�J^�$�9�bB87!*��a�g��6�ud�6L�b
F���3�1,S�0O�m�5g2�q�L�����!A�dw�py*8��b�!z�����8Cy� 
�
��0�i�|zyDv�{�	?��*f��y�����S�������I\8���'��r��zn��j�S
�Z��@��E/�����J�O?��T����1@�)^�U`Ua6l�[���l[pT�&�
4�5g*�8��y6�5BIbq�-�[��1�������U2@MA*�Y���n o��Z�I����"�V��kwM�(o1	�/�n�p�r
����w��g���������?��|�{��=�������w��g���������?��|�{��)XV�aXV�l
��+67>���������_����^��~�l��3#Z_T3h�0���v#y����w��G��8�f�������7�����}�xG����C����{�S�LG���
��&2�������;@"s��p��;���t2@�d�%�6!�*!|� ���0	�;��������1:�/&�C'��}|����k���$@C����`�C#�����#7ab�!���B���}����Xd!�+��&�C��e�_(`�mP�C'��M|�7�N�_>��BC�7z����D����i�^�������#�wL���i��O��������]�jt���������?����K{>O���s?��5�������C�1j�;0�^?���w����{����"x��U���w~N�(�_��N_���|��'��{����0���~����~�����5�������|!���������x������y2�����)������|2bD^�����(�_���^W���a������������@�-�}<��>{��#���(�����w������?��w�W�vb��_��?;x~0{��{�,�<TR�|=���MB=�^��E<5�
R�>/���m���u��w]���Z�_�|>I�|�'�?$�����>J�����|�/�^��_����C8�}�^�r��������J>9C����4�~Q����}|v�7���P��b9v���������t������<�*`���5i%��wf��<�0����V�^��O�_��T���^��A�}�x�6>/�?�"Y���J����[�
�����<���W0}z�:Z�|>�����
����[%�>����-i�?��t}�&I�\]��HL$�_��Q!�w%+��Z'p������N�o�t���������=�%L��(���^����N��9��Y�? �����tr>`��s��y���mRi�m������$��<����)w��H�rYy�-�|���g���'|$��w�����������3��Yz�0�x��r�9��i:���9&�w5	�����(��O����~��������Wd��M���K�9+x~��������/�v"_������H����y(���n����_�
�������������>$�����=��&7�4v��i����^�5S���-{:��Z{��x>��_,�j�B������zS������� ]'��{�
(�����x������kh���>	y�A���I��!��e����|3�o��=����$��F��>n���o���~:B���r�^�*y%�����]��>��ity�Z�x�����?�{������
�>>����9E$�?��Nw���6������\�A��Vu���xG����,9�W��{�������d
��������������LC��(��/�����/*�~�i���}��-���>Y1��s0M�����n���Ibdw��G�E/�������S^���,�c��Z��A���_$|{��Q	|�X�����c���v�o`������6�=����������[y��������V��u��������q�s~>q�s4������Q��c�(!.�!Iw^�NK�F��.��{4�������@�.���Kf���k��cx����O?��]��+.�����]�����aT�4��	&>�����] ��]�����"*���w��Z<�����$���p�	��iS��M�v4X<����'��������nG�^�j8�c2���c/�<���P�e|i��i'�R�c���`��+����c`x�c���H�#G���w�(�C����������R��v00�{�.��vT{b��=�������b��$�����<����/
{e���;9����iv.2j��.�����o�P�*�O
�i�*v-w��0v,�^_ #��W]����UL���}���Yom��`������E(v+ <��/^�ZPO�N���_^�Mk��G���������r��Sx�c�*5�	v)b^D���f^Q-m�=��]�*���J&�G�%
v(=��(<|��b�v'�*���c��������br��N���&�bn����,{M$���~}�xi����s����/�*N?�t���+[&�UT�>��|�#_�$�_{���Vx~��{�S�������?�i��T�> ���x�?����������T{W�_�����*	���8����l������S�|��H����/s���}�_������5�������rQ�~~���0���U�;��J�����������<�����m�A/P�bo&!{�"�@������.���T�����D/	G��}^_�Fd���T'��?��c�%}_`(|�^,:��t�_��=y}�
����A�����������������+���1K��G�h���������S�����6+�O�����tz������r~8��������'g>���<{�����oW�����_���������|�����/���~���w4�CG��w�����������p��}T|��i/����W��������C����W���������\5������?���u�Yt��Q�Y��������~���H>��#��6��k���E-�z>�<�UupSj�����P���={��4��G��;���}�z��}�/�����S��]������h^��=S�?���QG���}s�6��r�&b����9���������k���a����!����X(�T?�M�q��6'����yO�H�OM4{�y4���,�6�"�������'�s�zJ~�#<7�8�����&�Lj���3���^�}���I�$��'�D�GlD'A��_��5D�������>��{n��p�%5q)��\�/������|>�����|�7����5�������zP���_��]'%�hIZ�(�X���_�����[]_��O��V���;DEO�����zv\P����<f���F�'�7��=�>�-S^�HS��x�V9���Y6-N'!]
sh���_����������_���o/� �]?�������E1��
4��u��T;��}�o�b�}�Hg��y�"��0m���"�$��Q����g�w�<���2��{�oJ^*�����R��+O�C���~���{EO$�Z��~����}��U4�N��b�bZ����v[�����{J��������%K�����	�@�Q�5W#;c��_���W:�-2������E�yS��T(���,T/��1t;�������fq@0x��J9����7���i��mj�.[*|����g���+�g�={��[]�DE�b��<j��
���x`�!�)�8W�5�F>�h����j�R^~oO���q��G�Br�WhT6��T��B�0���'ZZ|���t�5�'����J~��������sR�A~_D|�?_���l�����a9/�����P���x�������mN(N�V���I�A�M/��*��wo�)��k���PS�zl�����m�pn|�W������w��J��{�l�{�������K������g����}US���+�6O���>�=[{��N�<�I�i���s:����!���N�����\���t���I�����J����5_��Uo��B��z=���mb��&�K�/��v">��B���z���V��R���'��$A����,Q�Fi�" *DZ�E.m*+��P?�c"l�Q�t�a�����������c3V���m"#�~��1�O=�������X,`��yu�
��{���z�0��U2��8k���sK��YW���l��Gq��kLR�����7>��Ru��Q�'t���p�5_���~�F]�y����������?��7����)B&��B
��?X��4�S���+O�e�@T�7�,+�+%�%�f
����>�?�NkK���<�5(�G�����-j�@�+�4/��N�#K����	���;���"��Z������U������0���v���x��������n�
��zU��^�~(W��yBHU�
�����}?��Q��}���;������%-�%��^��3J
���fi��J[�R}���($�	������A07�S|�P����w�}�0f�v�T�}�~�}�\�y�0R-c3���f��
�g�����c:UI�<����2.��7�T���'�T���X�����p++���������Z	��M���8���J)u�T��J�`����j�Y���RQ@G���/�^�=���?�[/4���\{O�n����S>����%_�;���������z��U�����m;!K����3��ULY^�g};�(�����y����
����k�@(�:����&�O�7��S�8����z�{?�,�=_��{<�3�����g���H�P����U�4�t�&u���iN���uu��b&t��?��T���>��4��g��_f�p�Qbi��g�����������.����5_��"�����*)eE	_��yI���(�F�����������q7�O������F�����������������K��L�C{�?����C��K*��}��dG��U��S��y������<�&�����5�v���E
!�e>����_�Q%j1�@b�+k��#�o_�,P���h�6w:T���EPG��?������P-p�=����[:Wh��>jO��>��/M'�}��=~�W�m�z�������DCU�U�v(���������_O��&�����I�����}��"��=���z��$������b�5���#���VD���m�|�������Dwl�ZT_W'�O�I���N2,���������:�_���<���~��`��c0T��)�	��R��Sj7�@�
�gek�o���\�W��TtR�O[�I�����G�;�����Y��CD���v�ci�=7��+���I�N!���W��{����
��O���@�+Q�w�){��4���5hI�[^(��K7^���T������?�3<�P��
Zb��&#��d*`t�;�A
B�l�����&����w'���8���c���#��`-wE��!��B��������|9����l�U���6���N,���a��cf����f-�����[�8���l�X�����5jG���������{H��>�j���j�����8���?=�j��@,���,MW�M�&��8���=�j���k�p�����{D�w��5\����V�q��U�=�j���5Z���MVxq��U��U",�f��MT�U�MU�5R�����j���f���S����x
Sb#���V���5N���l��j���=������w�_<����5b���
W�q�U�=�j������p��&�|8������5Q��h��p���<8����=�j������p�����8����=�j���h�p�����8����~5M����S8q��T�}��=���������R�q�T�{P�#�~5G���MQ�q�ST^{D���5C���E��5B���;1��S�����F�����j{a��������S��:SS��Nb'�����N"!�
LTjo`5:���"N����SX�{	��3S@r�M�S8�\jm�
L�L�#��DKi��Nj_���S>�j[6��_�5,���MJ�q�CR�>�jC��5*����Jxq���@����^i�?8��"�8���jEO0���5��4���j?���5#����Wi�a5��	��c5������
F*�=�R��f%��j-Q?�Mt&���-�-�QM���Fj'H����DK��W�j[/|�S�5�^���d5
����C8q��P�{P�=��j�����MB�q���O?�5����A�q�Pn{@���5����@�q���?�4����"�����Xi����i���x��x���i�T���v3O�{P����{������8����=�i���i�y����\8���w?�4����F��8�����~4����
;�8���}�����4������8�����N8�9����[2�r�F����99�����N=�M��Y�4�r"nq��0�n"�f���7��������]?��<�.��I
�U�������Q�-��s]�Ut�iL�\�
|\���&��U2�n��`������6c�k_s�F����m�6`�X�Y� �P?�
�����9=|b<���WT�'Yn����xVt��������U*�*��T�m
��U+��2`g�UQ� ���|���~����~����~����~���~_��*��_����_�����?���J����
��UC�3��Q��7���EU��5��Q5��T����U?�#�U��}Pz��T��~�T*���;UO�UN��U>�U:���{�T����y����~S�J��^S��Sj��j�:�Mk�u��y�M*
:������uSo�U2����UT��#��}eS
�L�g��K���e�U.%�����Kj�T����T��_]T��l�K��T���*����M@�U���W���W�U'�u3U�
��t*���1�_[����w�?���Zo��������+�7���5������a���(��Zo�YmA��������=�^L>�Nw-f(���/�[��Y��������mf��W]�&������W�=$�$�d*�����#���������~��p���[���yxl	��3P�R��W���y�����1��,����&7dX0��:�����9a�:vlI����%��p��Dq�	��_�n��_�I�����}���o�&��c�"�];���u�C�����d{�?m��w�_��<Q����c��e������yt�z,FY���-��	�/�+At��,_���Q|8�N�w����o�{������q��'�b�'d��,o��������D~iKQ,�?Z{I�FT�r���khm2�Y��s�T$���Tw"��hb%�_���D�K+�	��	<e�j>��?��t�=>����A�v�t��S��x{��K���:��������b; s������F��<%���t��l��J�����N�e*l��	�����������f��P�:e�A<[������u�O���O#�!�2�5x7>�2��_Cm��x/�hl���O
�
�5�#j� �k��d�lNz-\wr�]N�!#����h����i ��c
I�'������N
2eR����[�l�e|�=��`F.��T�~����p��.�|���c�3`K�(f&f'��4M�R'|������<h�D����TJ���$���g�:��L=M����%}�Cr��� ���-~p.	��|�&�$�jc~��"�<��������m	�M��I�
G�9�����4@�6A���7���g�	������+��H�����f�>�����3E�l�gH�?��BZS]��O<�d��@Cz%������{�	��g�v��N�'���9h��J����]�t�I�y�r?k�����h.F�~�N���;�#D;�h�&�Se��h�~�����V�
Y�d#���i�@8NT<\��V��T�_pKd��|R�s�������{u����� t���%��FKJi���4��>UC�x�����R,���>��2A���hMl��}��	�SJ��N�Z0\�d�,u�8|�.	��CES���bf�.
�2B�w���'y0�pL4�������O�	_���rvr��t��n	��9����<�9pGT����Y�e�6��o�XRQ�:�86���[3��
�t�����
<K�g	����y�@�;�������z�1�5t���ni�Ru��%�����n�|�6����bR��*��s�g��d�������1�8��	��\���M5�����x{�,����� !��3�vL�{�Y�z��	��L��
(z���JDQ,���	�)�r��X(��l�K^3�K��Sz�w����N�l�������7��l�<$"\��&Gb8'Et��r�7$�����	���O�N�i�n�`�W������R��4�S��'�i����_4�S����N��X&�!��'O�J���������t�|�)(,�h�T�856JV��R�J����K�O���mo=�%kD���-r�i*U.N�m�%����>�a���i��iY������.V�N!����+yi�=�I=!�U�fbfbe��P�Od��v0�@}���������w���1�9�������W�m��,�$w-����W��
pQC��g������_��������n�q"{3�|	�-4�4�S������N?/��-���HL��Z�_�U@��z��qM�&��l�]0�p������!ZXY0�;�	v��Y,�����,*X(��}��������H�;��=H��QCm-��K'[�(�m��d�z�V�A	`������sS�*��].f���jYA�&����������Y��&|����u����!G�Y,����5J�S�:u�wu��m����!L�ugY3����|V����Gr����H?[(l)�a��u`Oj�*�d�4,���e��#pOj���.A��#D�_��|(�yhr�&%����YS�tM�������U�	�,�m��F���UJ����q	����E��a��j�Jn��e��u,���6Y]I:�C�d�5�=�7:OZ����h^��=��X_1a�}�[V�:����V��uE'��L�R4:�V��eOJ�~�O%��+FV�����S���$�������(���|�?�5����?�W7X��E�J����['&jY>"������!�R%�g��eOJ�~�r�cf�b_���eOJ�
z�-4h��KKJ�}B��I{X�����y �p�Q�'�d	4���r��RC�_�eh�)�(l<+*zVPv>���a�4C�~���
��R��6�	T��������7��n�y�z�l�Ba�o����e���m&hYZ�:o
K(���x3YE"���*Gc�eM�YL�#���!�v�V�>��\v�����F����8v��X�|�T��K��g�liYO���YZL������^�7R���k*p3�
��mr�5���&������ec�eFck�
��7����e��$#�ei;{^��|5=���:U>OIf��M��9~�
\��G�	\��g�H�d�d��gL��&{����wH�>��C�ejm�i����w��_Mcm&c
O�������,M�<���u8��S�M��d�;��X��l�����pK������������3Y%�������?}k.��� ��]+(�X�V�6=����V}�6N�|������|�U���������>x�q�m���U�}�����._:�#4�S������*��,�e�R�+�,��Y�:�=
�eR�h| T�Q�������mt(�VD'v#���+�d{o��#�f��7J������
v|v�R��d����0	�6t�������
���?'��BO��
N2��M��w��<.	��)<^E\�����d��#�m4,N�>����~����o����O��BR������<�e���<F�����Z|��{O�8��������}����������s~�����_,����������O��c�����D�t�I_s�.O�;S���ZMR�m�l�������7i:��O�]������>�Hm��k������f�h��� N��;��[����G@@O����4��Z;�����Be�~���y�b��g��ut����������<�������vH%���IN�`����;�t=8g�U�!A��:��<�������6���������9�A��WO>������A��\���f�Y��kxN��8�������nwS��<������w�{���_����m���w}�#��8���v]![��|����h�Nq��_S��	��go]�2x��Oh����.�%�C:)���z��Oc	_~&�K���!�\A�����0���Aw��wcC3��7�����.)_H'7lW;���v���OaW�v���T�8?�L�������w�f+����<O�6p�/@Yu�?���?��t��)��J^�N�%���)�$��
�_���"	_H���$U<�B�r���FBD���s,�
r���y5���u=�>��������Zm��~��j�51�d6u�"[�	��~:]�8'��=�f��������'P�\�����wT&u�v6D����<��������9�ML�[���'��58��L�aN���9u7~�"� �Bz���T�������u��{d��5)���z<�F�����nvy��y�8'gP�G��tD��VZS�OW\�5��%�)��[�C�������39�8{�	vz�Q;�2������X�$�ok��������;����O�������h���~�5s)�>�����uOq������"�=|��B��.�{����0^���~�3���M�x^|c�����tf�}#>�gU����E�g�';{:K��y�[�~R�� =P�W`{�E]O2�������9����|���PV���(L���Fe�O������Q-�,�SSo������N��Y�E3��s�c���?i����~c3�_�����!�s�9�s����~_��9�l���M�5��{9���%Zyo�����1p�@�=� ����y�������+?�f����������������} I��s��W:s��j]P�_�/u����;H#�`�P�z��
|���T����9���
������_I�����c3���������N#T�Y�1���IM�{�j��m�����B������\���w���c�pS>pLn���������`�Wo���L�z���jV�Z�,��������W\}��/O���15�.
�{�|4�����u����A?S�]�m�T�7�5�#�'���?�(��.;S����r^X����A<�1~f�]&�L��������uC����X��83����M#��z&�@&|3�>��s��I��8z �>�;>��>��q��0L�:'9�
~�����pg�����_<5za2�PH�y��J�Ns��1v��1���+���Bz�O6�>��*���3<��#�>�=g��n�������A>z{a�rO��9g��^�
�O�9�g����Fp�G�&�_g��&}9�}59��v�|=�X�k�\~�Bw������KuA?T�����?�K����5�>|Y�g��c|4Z�����js����|4�>�i�O�'����f[���EY�w�{S�>��;��)���9��M���L�sN���g��N����]�����9L�8��
gmQ-�B�qs��y�]M3S���^��;�;��-s����o��[��N�OK������	���)����<L�������(������z��(�;�7���G��D[��a�%.���*��D����2y��u�'������}�����)����hj�#�q��{Ts�t�u���?m����o�?���y|\��<���x�~�����J~<�R�t�?��{��E�������>�����f���j����9����T����>������#�D�+��tv��~�Iv��s�W�A,�4�Q������i��6|������a�=����t�����T�{�{fM��D�:�hE3��G�,%<tA=ZX��0M:'�����e�����^]�Q��u�@����
?����#T��O�p�������nc�����>���z$����5Ko1EK����������t�>0S}o�Q�o���=�G��p�f?�%�-t3�Aq����t�����+�O���+\������������p{QW�������R��BV�o��p�������9=��/����W����?�����\$O�w�_����aN*�-�C�xps_?���7���sH����{�����'
Ja%$��mT#���JE��,[���!m�1g�n�g%��	��"�&��;��y:�7x���'�C�zJP1@�Lb*k�O��zb��w4�N6�������5T,D�F�h��"���_��;\�J��:Cp��p�.X]^�0����ZC�y<q��m�h���a$��
 �x�����<q��L��x�T!�d�
�x�,<~���iQhY�����hoHp�/;�Cq����A0�����l�����<j���Yc���x�}���:�%����E��>�k{]H�*��������LV�QwU� 'S�(�b���=���������p��T_a� �g�r��{j����%����A|`��a��4�����X�aA�t�~b`_e���1e� mR�a3�@��B�7jk����k��k��`����\/=��m�q���] �����o��c`�a���� �n��n��n��a����/=���+@[��y��k�����!<�D��<{'��
�?�a�>���6��!3����R\��I��X�����CI�L!x��{1�7a@^������s�%����`)�;zg$�+�����J.�>�/.>���sg�����H'�S��3A�zu�8�A������X{��U)���a�.[���xl�2��R�p+�������D <<[ ���m�����i<jBe{�	t��_c����0�a��|�a�!�
/��L��C���I��r{�@\R^>�+��#��v�2��w���h�~�v�M��{*:@d�@��A!�z�	H����6�u~*}�?O�	��aK'���#��?Y�og���O�x��B�	W_0�I���{��-���c\�����_g��]7U����$�t/z�}�)msS��|���Jt�X$/������l�jc������)�����W���|���&���"�cl#�zq��FA�ws��(7;	Q�-���v�Bf��e���4�?!�-��d��f�{{���.���?u�&����6��P��kd-|��	~kjat?�M-�GC���8�y�){��������OGSTe�� c[����P0$�6�B�����x.Z���M=��2Zq������� �������Q���������>����m���1�P��`N�#,��[�-��%bT�:�������~�����X!w:�erZ
�a}�op0�p�qb`3��`�������O[p��qB�&�`���L�h<���0����a�=�*k{�
<[���)A�'��N ��/J �{N|\�0�C����Zg� _����	���C
������ �d�Q_p���ZK�T5?��C�,�b%���;�9�s�A�����'D4�\�)�T<�x���

�@��+������%�hY�p�c|����./[X.��������C�f�e,�+����	K:�������3���DY���abMJ����#{��'	��AC����W�L5F���C8����v���
<�w��I�f<�`��<�����gm+��^X�����iu�����!!r�V�������y`g�X&�/5.�:�fN���d���5�&7 %�-�1N&���6��E���89B%M<F�+��)F�'�����3����f������s���h�+S��A�t�������*����)Q���v�������~�0�@�xG�,Kw���r��yY�F�LPy1��|���/_�Q=!pnE��,��0��y��~��/'��f!�Bwj��
��B���E�� >�L�	�[������A]!��������en(�yg���1HA�vj�;$�ei�H`B��b\����t6��+:O�TY��,����[&���w���W���zF��������I���k�#��C��),()}�y��g�_H��8�f����'��7�)����Tss�B^H��b�X�#�N�=��V@H�������~b�$.��;��^��$�2P=�0F�oj	� ��x�m�y�_|��22��9�R�;�#�t��v��C��T��	�h�!8���Gb��9B3�E4���z�-�����1����zv�
h���T/��L�?2�����g2�+�%��.K����_8�x���>���:��9nH[�� b��q�����s@���H{1
�@��'�C?m�� mlJ��$_|9L��`M�_�OcMNT��@���DS m9���:43@�������5r@����Q�HW� o@\�S3�{��-�����y�D+��d�� ������p���R|��i�3bT
@��@�9w�\0	��0��4��@�{pK��c`��_�h!����o[���{���6@�2+�!�J��%@�`��J4�mXM�(t�{�@��jF�
�=r@��!������U�����@�� b������h�T?��k� i�K� M�H��d���q���p��
'����&9��d4��L�&��-M��b���)p�|���G�c� w4�KY�X���	:�
D��D��$��6+B��&A���B���=��V���
�+L�>��2��d	oZc��t[�@^�dX��C�!(��Q&��L|�����~��	]B��~MM���&-���6�>����b�������55�r
�~���6�iH��sp;�2����i>��P��E�Jt5�������N����V2bj\K�W�;Z����@��+G����-KpIE��h�0��B^6���vq-���uy�����MG���������:�^=%�X�@���`�N����V�CU� ��M�
�����4C���[v! ��@�����	�#�>�����O�
�3*����G�F��c�eo(`ia&�����`]1�<�D�<yf��.�=�����������M��\q ;�	�����0�q`X�i�N.�_x�i��j7;��8���B_���]��^v5R��X�E��j
a�w:c��v�����P,�V���m�/,4���k������V�+�HZ�������Z%m��e6���3�����SS��m�2�w�a��������*�AgH��
Z3T�=����9���H-z���R������8�z����t�S*L������$\Ol&u�-ic�S��!�%vBK�s�5�%�8�26�sbv@��A��;5���	��|�2iC��@��a��O��P;��D�x���7���x���E (s�tD����T���E����jj���e� �|�z���'��<~�w�a;�X>��V�(r��4c��mg$��9���(!
5#���������D��Ayy}��p��e$�N���$�V��4{v������2�(���_����.	��MSZ � ������i(��G��q�{�����f-�*������BX`B���K��N���E�*�e~�b��������m�����}��������J���f����p�jd�}&1�zUi�)Jr����Z�����F��hHt8����R
�hzu-�A��Y�	���k�Am�M�;���c���V\�.������J��.��lIvE��Mq����:O0_.���:�����L��K�K� 
N�`����S���
�A����q�B1��������Fby�$D!ibZ��K�b���B<#V���
��O�V�:4���n������;���mAKCJ�x�H�6L5P�N/=�	�M�6uo��!�z�G,������A<����������#�sx�s�,mv���N���+����kJ���������n�1l	�\��x���S4p���p@�dz���y������^�!�}�zy�8� ��.B�#���*v�-����k@��{;�b���O���<��:Y��:+T�mKd�I�S�$Z%J�{��������v���>q;�N`�j����FG���;�&7�����q�=����S��jh���#W�$W�����[����
0��mO���S�'��	���3ua�0�t4{����*u�����oz�G��h@[��_A��uw�3r���z��b����@����J�%�/�����r~�=h���3�%&H3�=��=����e&�7�}�����o������'H�������N ~2�>�>R|�Db>��p����EB0���	{�	�{��{������F1�K���}�8�p�����uS�e6��f���O��r4��,���[��`���������"�`��Q����v�W�!�����T`RR�{NntH<�l���#�T���_�d,dR�M\���a��2�B��Ie?�!}�s^�:?{9��un����R=5�2�9|�N�3��f:+� ��@�	����)L;��?���N�+�MR�T��N��6�4g;��S�����C6��)��N���FE�
dd���o.&9�2�h�R�����V
�������W;�`V)��}.�K�
�_��bc�w�8����y��l,O���#4Uft"W4���3l����������0��4NYU���R9pi��m,&o���\������Y������q������������!�{yI
�~�������K�t�v���#�����\�������h0�(�gF���T��vK���&��=�#tHj�1<:��yT6_:�wWV,|_����5�J0��~ �5Ff���N{B4���k�jS#U h�z�al��^�8��
�e��^�-~��l������i�'.lX��G�@��t,PD�����U� 3w6w
���������t��M����>��=+���+�KM~z����F?���A�3E��1��$�/��z��s�e�c��������@�x��C�6����
�=t����4%?D�aP�V�p��5����]5R���#��:��S�L��!KO/p��R�jm::N�/,��POU9���;B6��-��Jl���i���W�H~���
�����M�����8O��U����E7l2�`N�Z��M-IS�����KRT���*t��@�$���T��XB%��E5az�U��&N#a���x0Y��Sh��5fM)�%����^����X�7�{�@�RV�sU4��{'M�:CT�bA�!��C��
i�	�zA��D������l(PT��g���"m��l>�s�4����S��
 &�(r�KO1����.8����CT�`p�� ����:D_E{����w��L���\v�v�����Bt��>�ocSt�DV��n�������@~��=�2
���\sT�_�t��H��M)����ps<l&r��?����R�*��jC��P)�7�+�1��yVGO���E�L�AYx�1�c{����a������s_=�d�c|
��`��fA��}����-���~I}�����
����W�?4y�)�xt��@3_[�`4p�w�V��h���#��n5]����
m��k����rZp�C�.�v�0�sIL�t�����O*	���1$�B��A�C��;>����i048��:<��8����?]���8 |�j��
�t��oFh+��M��d�Q[{�d<>�P]��?���'x��g8�b�6�{��"�^q
��il^|+���L��(����8o�;���`���3H��io�i�N���}Sm%���[�s����OQ?���]�Q#v����RLbT"h��H||i��Z�ic��8�����Y�v�E	*VY�m�"PT1@�z�X�]�
�* ���HfL}�	c�cB���c��T��3�JFt��li���<�^p�E��!D�iE�JD�lv��`!� �}�O�+W����'OQk3����R��������R��������x@����yr�?l�c������h����X;�	��jq�]D�Q*�p$��H6(�;h���%tT�Pz~�'�U����`�b�
��F%0�����1k�g�O�2�����{�j��,Cx����G1~��8�>��a�y��(�	�F�T?i�c�`���	*v4r����?�.b������m�k|�50Z+k1�|�W!q/��m%iq�M�����P,�7�E�� L>��k���d4!�����o��&��m�QK�'�
�S^���q�]
��r�`q��?����$@��4�C$8��M0���h<�N�
=��.����O� 2$��Lw����R�N�2��e����
�w�|��u��_��T���S	�ne������h�h������*��U�?�!�����{�
�"��A��-JcR�O+�Q:%<�f���3S��$T��m�jll�����K�W�W�	�j���>{:����9&5��=�z{�!�$2�K(p�����������w����(
.,6A*d(��=>����� +��C�d-0@�����|L����Ee��B��N�t��f#gdm�?�P�."3������%�qO������),���_��/}�?��
�QT������MN�Z���d����tu2�c��]NZ��PHQ`������[XC�� a�d��%���d	g�O��I�)��1�,������|<u�n���8'/h�}��8,�v�|�'e���GK1H���ZD�&�I�ohS��hzQr{9#PU/�D�,56���kF2����F;��!,�8�����::<�qg$�][��v�c�5��������SI���	��eT?�d��h,-:u���@E�:3s���� �D8����2�I��ot8��J?�(�jv7���}Mt�n���5��@�e�J����D~��F�t�3�
�SB�����jw���Ja�S�s�fn����{����?���GVA�3-Y�����)oY�j�,Y��4pR�4&\�u�a�0�4��H0�a=�%
��P5(P�����x�m=X�!�gV��<|D7Nsl0����r�L�?�ME�Tl�)���2z�b�\��g* �)�;�)����r�`�	���vF���i6�jL9��+�RU������jI4g������GS�=��c%����/#��
G��k5�5:�
�v:x�wM��[F1�1��W��"���T9��y�y=m�E�q�P�jZ��q�Z���#d,	�����NL\��pK#�6��Z��JvX��[�w:r�([i<����WD�w9�S���O��USks#��N�>js��5�0�`Z��'����H�����@�)�9�����l��Q����p(lv|���s!_}<�2��c�K-�%�����D��:@�<�����X��KZ>}pHZ�!g��a���1��R����/��;�x��0[��
X�'�tk�w�rMA�k�5%��1��YwH4�MG������1����B�mX�4���Y��������v9�k~8���u8%��2
L2,�V�����'t�n��c�H��w%��~<
�y�����\����D�_8L:��cQ��B�I���[���A���h�`�e��D�Y�Evi-W-F>��{/IsR��p�x�&��P3o�����iC'[�9����*����f�@Le���pT�|1VS�$����"�z�����F5�=��J�x���m$!�����tN�xBU��[H��Z���1�����#)�G��Kc����q��:����
�� H�i@�E
<�G}����cA���9�g��&b��X���&�oC�>����FaR�
6�1{����7L�i����5�bCZ��Vb�WE�c��j��;tD��l�5�m��"����*C9Z���v���73�>���%BFM�T�:�$��j�#��gG��#�|
r2���m	!|�����P1�X�T/��h��
���g����zv>�l�w[G=kW�2#�M��O%
���h����_��#�R��^���%�������.+�kv�����@�X\�kJt�j���G:<�U�g�"��gL�aT�'U��X�o-�QBf�N���tg���B����bX���V��X��p�re���cT��cp|>��c�R:��5E���9�K��Vb�*`���)����1?
������=>���Mxk�f���Y�VJ��x�\�<nj�����!l��i����;A�e�R59������E��F7
��T#}�,T�$�6:k���U�/4���?��Au��Y������+���8���3/�������l��GGzs������@����	�SCszp������������{�;/�*FF=Z�2u�T���#A���!��������-���AW�l�4iC%! n�RT�9`��K�ob��/�>���w8����x�QDi�����I�!�&8����*~3.������zG�����������J�u<�&���^�)�A��At(\cT���M���8���Lurq�x���G0HX��A���R�A��V��������c�	���	���a��W�i~LX~v ����M�d�"�VA!�E7� F9y>)��U��R����c�������{	8S�@����;��0I����r������~x>)u`
7����SK0@�-
4[Z�&c�����
�2K�	�4����:$�J�����O�@N2����k�[��Z�^���Ic�;0�$��������@�l����1pLld}��+`�z!�?!��D'Y	[�K56� &�������-�C*�7$��p;)�]3��3aS�5P�;7�H~N�$g���Z�����jW�FH52@����L�����]��?��:0{Px@|�d��+G2����H�.1����EwCC
,])�I�]��V���0����=R&�3�%��� "����������wU�B������J�K� �P�����n�auZ�7If&*v^���&�0�dcf�V;! O
P.U�����	��� X��\�c����tp1��LJ ����cU��iQy����|�q��Cd�����
�	���6������"L8��4�m�p�r��hb�P�2���
FJ��J���;�����Ve����M{tWU��)d�8L�K9-���gH����e�38^a����f��k�NC�7�������|���CD��_pP�*M2m�%�T i�O��/o!�����������1�pDo���b���q[�P���E�_�������}����$H��]R���L��LN+�Pb�
��*�?fqM.
�zL<�EZ�o�.��������"0&B��Gn��o+��g��y�Uk���$��`���� �	�����,"���np����f
��������'[��`����4Vi&WLA�Sx������<�����=���%b�7���1T2S�p������Mu���l�nt��	����|4�:j������w����	����C��~8(s���))������z��r���>h��z�e���F2�������7s�Pz����nw:�t�����f��>T���^H���}~�J	��"e&����d�[�r��Rm2p���r�,f`�9�jc��g������	�&�LX�����8��(�c�f#�����������m{e��]��[.I5��$3W�b�v��N(�KE��v��M������AL1�^v]��Qir����}�U����@��A��H�`��+Lt���1�@b�����Bg��VJB"X�o��B�a�!6`W�=��>=�1�a#<��������H#o>����d�y�M-j1Wf��r<�g��K�gVS�����4��9u�����Q#�EP*��J$p��-���%:LL=���s�q���\��/���_a����2��.I�j5	���@�D�8h'k�qsmf���kD��n�\2��=U��on����-Yb�����G���
���0_�t�U�A�97��!x��DOA-����?�KfP�;��/}���%����J/����� �\|�<��p����!�	���_E�&�-��p:��e�����
}/N���u������xPWPa~C��5�S������^{1R��=��f$.A������'�2��$��1?j0�!C`4]���[O����������D5u�{��eI���`�
��mo1����L�&�ZX�,�
�J��|���"?-��
c��r�^O� l�]�$0����c�_�����"�
��Yh��m�2�ogt��d���@�TYjld3:c���AeMu�5>�?/������B�T�eU���'*���4>�r��	��X�j0�(1��*����2��7�:�P$ZXA�!�$��&&�Z8!1]j^
nVOC	����	5@�����M�"�-2�]l���-����R��
�Ub�n�Y�C�I�uSF�.^$���`e�Q��F�"�`}�G�a���(S��j��(��QD�a\1�rbQ��&�d�]1�/�E������N����E�k7�OTbX/F~��1��1�J�g�<R\�6q���v)p��"�����SC�y�q':�$��?l���%9���E�=��A�ta���A����o__���r�#1��e����.�{�j���F��i)�i�|�_����+�d�jy#\���K'�8�4u��c!*�d���`��8��>	+w�'�9A7�*=B���,G5CH�����i����oN)��i����;i�	����,�
H��*��I�����%�*�5R�J��{z3Y�]�����ss�-B#:mT�i1���'g�C�5��M9	H]`k
��Z��5��g�@������"Q�GC)b�|�	��K^\�H�*5��/�/���r���S��mXX������7&h��NVpWs*��C��N��s���%� /^�x��dkw���rYh�({�������::)=	�nZ!s�i��t>����5[��Y���x�1��l��|�]"d���r���������Dx�s���k|M�w�����&k.�<�eZ��Q�����%exA�`�����0j�s���z�@��+�*
��1����y`'��m�.\�^��<B���7A��k��������$����z���<���������-mG��OVEa$��?������F��8�!wW�?�����/��?���R���56�?`v`hD8+' ����Con�yz��2����e�Q�����;*.�����:Q���7� .k�(.�	y|n�"*=f���p0<�
���]=�d�z3�TaV3�[���qCGp���p%G�����X8����}<
`�@W����
;�B��F2� +����!v�>�����x��G�J��� <���ClF��Ml�:~_8��u�B��:��k�"���V����� ��#[������Z�n���uZ��}�������{X�������JP�F4ScE #�U��!����in�����������B�h�F�����>��@Z�s�F5����}���_U�	�������<�_����a��.����%/l�|v�{
�QlZ��h���������<�H�9�m��"/`N,2>[
d���-�U����k�d"�(�)�E�A�p0�R)�&#S�����i��D���[0)��3E���\M�	���kK��:�+�N��6	�Gb�(�k|��<6_����]i���E�`s���k�R��,P����(4�WB���J�x�����i�Y�� �Z�u�J�����!f�������6�A�_���,�$���hl�R]�HPkNI��3���KB�W�%~+�
0�
=}���(i4m������jb����V<�$�z{bA��-�5%��� J"������+��g���HI>�l�������
��N�9�s$��'@s��r�4aP�b��V@\��Z�l���N���1�&&�A�D��se�!=��X��BX��H���6I�!t����eR�$����1-R��0`�2���}�
`_Bj��f3�����	HPU]��P��5;���4fB%�T{�GkTlz��+���s#^>�-�tX��0`&�@T	d���������n���8���4�(i��nY>,$Vz�tm�.5[��^��|Z�>�p"4�u�	�T����P-�8 �:�Z�Q%('�R�(�,�$���Y�[�W�4��$-�����U�*HT�P��W���� ?h����z�|��W�]Z4�`�:7�X|����q��"��0�$���<-7A��'���~f''A8BMh[��Fj��k�D���O�'I���K��.��,Z�DU��x��[J��0�*qh���aW
%$%�.��<�5��<R���zK�@@/�R=kp�+��:I$����@W��UB '��e���*(��X��:�:���P���H��t���g�6w���
P|j
��}�wzMJ���^�IF��N4��=��H��:�=}�"�<�&@�H��O��+'��W��������I�����w
���8�-$��-^�p� �M�]R�VyWK)��	����>S�p�Q�a������V;�Rp����)��:D����n�����i2k!������?��`��g}[CI��6:���:������5�Y0���}��.�8��������l�\�R�I�����!.�035}r�1/��B��}�i���=)�KK*�?\ZQ��/���LhNG_��$���Q��Q�W��(��%�o�, �D���������H.�����A�T��u��Hv�JO98BM�#�
OF�*�"M3Y�@U��z��i�\��P��Bp����� �v�s��d^p8��HP
��n�CN���x�g,��P
�3	�kj���Y������Ej��x7"�D9!8BM��}b)�p|�S�����$�u�B�e�Z�J a l �c��!��8:���������{ 5�a�s��Q��j�C�p�k�`Pe�t��`%X��B�:���"��49=&����ab<���$����"H���0kJ.6xX/|K�q��@Pb�K��Ja0�\g$Z��]����}�f�W�B(I�����n�
GC�~�����
]�?�MhNH��^�61��8?�3x�h.	m�3�$���l�
E/$���R��U'�
���{iS@�/�������2�a�F�A�!���������f����AX��:�������fp�
�V���v&~����J������:&���[�C���% ��
�|�x�;D�O��h��a-P�~Ba�t��y_G�
Z�����
�4�j�bg�-7������{n/��.���)I��,,��A/��	�s$��/�n1s����_���&�����2?w�g��w����6.~��k��O�?����]�������='�^XR;���.�E��s����P�����On32����WHRK�vX��H��Y�������pK���}#_��Ur�DE�gG����q;�W\~�o
��P�4�������YO{�k�x\ �-����2/�eY�2��d�D A5�_;���������c��;S����Cj[��:��WT�!�a��d\�����+�������B9���RI?n��d�{/�0�~��f	�������x��r�J^�J��8���>�����Ai�D�����xX�O�@�g��u��{l��\�x0�UC�Y�������,���;�����������w��L���n�xP�]uJ��o�������������c+�Zc���J�^��iG�3S�~������@��oJGd��6/�����y�����w�K�������G���y>�����MQ\�x�
A}=�N��1���S���y�$�(�M`4�j��	'$�D�uUf4��Q��������(���om����7qC��p���l!D��6��3���~��I
&z.����X��� OGg�{#kJ��|�������#���T�������a��a��@V��������scC?�����	���(��������.�V�
�)��s�&5���{������~�}���O]�Xo����
��H��[��,d~�c����e5(��nj&�[I$��'x�������"�Ii�1����?�S��E������nu�O�W5�kk�(+������;w	�<��!��Fq+uFI��Zp�+�b8��#���o2l����p�=�{}P33O��288>�5�M�*6PIoJ��� &�A�(v"�7���������RLm�������3J�H������Z���qj�n�`:@����)�hH�t �X����EZ����� ^#
�l�E	oq��_#��
���A�PS&��T����qo�c���aQ/`�s�q�B�R�����������r��J���q��b`��zp������851������r}1\���l���l��2�~h������4�q(�P�b�j+�y�V4�)�5!����	�d�}�i<��^gm��.F����1�?�e>���<�P�� 'i��
�-%�5:���t��z�Au��T��X���T���
�5�sA�'rm
A��y���>u;��9N����&p�w��H�7Lh�����>z��G7�G����%���>wp�,�F^������>��hT)CeQ^���I�VV�%��moYW�`��6�)u�3��J�k��ayc��`P*f��~����hL���\$���Loa�E+��@|��k���Z�<#rXLu�c�C�8������������q�\#G���oUUD�>sm�-�����W^��MT��
���dF8��'Qi�lF�5���h���G��W��=��,�����������\��z9S����ER�#����,���Tf{�,	��2_�'8_{���C��I���9�����N�*�����&��c�0���, �zr�;����K[@�|��s{z���U�~J�N,rM�fYiC.<H$}��C���c4�������A��g"���n���lj��*��r�7�>�E��	��8i�[��@3>]�;��\.���%�P�h\x*�!��^�X&��?.��g���$;�k��}#RWf"EjSk���,E^�s�g
���� ��������HSV 5����
@� n�����B�����^���A8x0��u������(��st����_����k��i]_P�-D��U�����c��8CP_�g<�Q�?��G���t�T���Ye�0�2�i�������@�N53����#���������
�l6��RRGW�:[Eho��.d������w���D���H4��<Ae���������1���2�3��(&pWz����PLSS�d����'|!5�u����>�	w�x���f�R��nu�5Mc����gj���r�����8,���F'��3�8��M|}�8=��F�]VQ;�Qwh}5��������G]�M��2$�dp3���k��N���Rl�2�yX��w�0H55�<t����=���t�/��q��T�YHp���%D4�i������j������gl4�z
����+�Nr��9��-��r����+�+���6v?���_�q�M���e/;];e�n�nSw��-%��Qn��8�4+k����'���>Sc��T��d!�%.����������!l��S�4�i�T����Lpk���o���SM�vb�4��S�U����<��"G��\+q���� X �W��S0�I�]���T���4�����M����9�a�%B�1lgb�������U� �e����������� MW��}��[�3�c0�6���������K����w>�`�a��p�O�R&V��B�e��u��<��*[���B`H��.�0H�	��C�!�	:QQ6��z�NC~�9ZsB���{&��$��L!�����[�	&�+,���Q����i� He�����=9Neb*�xR����-��i�4X���p��������h��[�AYD��
��E��\����(nd�����s�l
�;
>���=N���,��6��9E��w#��c�xU�+�4	!�����Y����SR��)��i ��������Y]o��7��aA�
V�7k~\W��S�|��mh<������t���W�������j�������[0e'��uf@�������Gy��<FK��0����.����S�Z�c9i��s�N<��R&�h�-X=�*$�����{����'�����
h^&'���.G�]�e���av�K/����2?�]i]i5�T��aV���t�S��=Hy�
��
>'z�W9)�uuz�%��G#� f�%W��Hb��O\�yt�?�c������������s���*�$��m3K�H2�'�]�EQF
`4V3�.�5��Z=�	�R�����IH���'i�5���G�	����q���Z�k�`~���2���|���%V��gJ)���_niJ�L��[.y�u4�6�����-Lf�;s]���E�<�j{z���M����h�*�1��V��m�Q�z�� _�v*� B]k��Q`��w89�:��lz5=5�	���j��%�R��=s�$e,���e#�7��&��lI�5�1�P����d�������w�X�R��
�vVN
���YE�-�P�Zk1@m��wU=���7�ZI�T������.g,'����+�T~��-dN8QI��p�����A3�w~����iz�`1�h]�t�Z
��`�j<Y����F���E|8v�-U#j��;?��=���bG�Gu��,	t9$`�j��@�>b�"	�g�i���O����$�&Z�s����C_�?����m��s*�����
�g/�nv��u<�BW��:��[���
)�%���<����'#*��]W��.AjD�7�w�6*	�����"(*��t6�=>5H��o�
}����	��	�|C�
� ���e����RFi���%U���SO���,��X�U.V��p���9
�J����IW�\so*	���T��K��������-��@E��������C[���������.kq���~�M'�Q�9�!H�Q7�}���(� _�M�)����)s������M�����*�]5;([�z��!dz������*�&���`�r��/���q6l�Z
�l��}���U����#QC!!�]2�|���P����~���C��K�����`�~��M��Z�.��Y���`6Sv���6	�����v������djf��/�<�B"�T����x-#�S[/eJ������!�����x�������]F��
���v`}t�Su��(�ep�_�����TQ��1^�:p=F�UI�J� ^����������LpV��<���������*��%3-!�1�:��C ���p�X�V
��4C��"�Ii6��nTr��x;����+��x�cr�,9)�y�;��B��z����L��t��O��)��9��C.5W��S�g�(��b�v����#�=���j��c���d_d�3�K����U����p��T��0��{
�\�j,��p�
����~L�8i!���pI��J�b��\]�x�5��R!J 	{Y�[	���}��*�R�:5!�yPA�-���" '{�������~�k�J�w�G�Jt������H>��h�gY/}q�`���CY����������|u�$��Ve���LL��h�y�gk��Mf~J��T�'�s7�u���S��
��7�.��W�kl�S���ml
�j�y������K�����D6��]����Hd�OFy?���Z!3��}G����\�e��)�1b~5!5"^��:$����W��/�A.`��C�!c�2��?�*��p�G��M���U ��r����1	�h\y������;G�Rl���/����n8��ny_H�Yas#M7Y2�&qo��$�3��5��]�����x����s�_�z��!�	sm[{���'?g���{������y`�}�z�_�gf�-��\�G������^�l�,�s��Z1����@7���G���?�S�X��q����'����,$NB�,N��.��uH��Yx���3����]X�R[���
x���N�o�_r)�_�%{B�D�q'(J����{H�7�	C#�Y_����q\.�n�\���v��uf��Kx�9d�n��8hQ����?����v�\(&ia?.���<t}���cs>���M�\�+
���#�$U!���05+.=R�qm#Tg�4u���
���a��9���&����2�.Wb�O�����I#T�cvC�6��n\I�'�SC�>�g�AD�EX����e�@A:������O�_q�xW�$�����e����"��|����e����VZG�T���tf��OY�������������]�9���U����4A��k������:\~���IF��/Nf�|��f�����wna��!�M�0:�E��E��{����m��c�w%H����H"a8p�WmFY{���X�r�v�����'�W_*���T��h��V�^��.����.��gu�J& }���SS���J�T;��EB�Ih�KB=Z���+V�f�9U�KV�X`_�����zn���eo���T���^�T�����'�G
����l�����[.���	[�7=�����P��Kn:w����M������B���M�a����\=�xso)m���������7���aTM�]�%������
��q��~�3��W?��-��G��O���Ln$Z5�����w�l��n8�U�u���1����B:��T*�l�_s��rW�I+�����O�~���/��L��>�^�k���r$oh5p�����ska���u|Q&(=H�
>�/	A'kU��p��h�7F�}\����L�2+��<�0F������Gr�4�*o������4�����Pz	[T��WW���M����������m�
��{�E��s��?n��9��G����T;cOdQ~_�.a����xv}��9=qn���3z��F�����H��x��ML"L�Hr��Ah�����G-�xZ��C���9���F�k����WU_,[�����h�I�m�}�4��@��w�r���#�T���0,PI�v1��IB�~�0�a�	���Th�����%���-1����6�?��X���G�g��������#-�&.�Yb�g���_��2���;0��A�����������	����,T'�@�k��L�C��D���o	����5������jq1�~q<��������}d�P�B{e�+0��,�jcE�l����1�H������_�����?��^�L�F�m->�w�����-�����-uS���;T�cz����]M��X��{�����l2����U|j�����2��{����b����-m� �]��	B����e���3n1$RG'���.������]vV!Vl#�a����f
B�/2�Z��#�
��R��[��e��������%��oQ"!��������}c3�����������{��I�������!����,���:��:��aK����sI�XW��gko|7kh8���C�����gkGe���Lq�p����Ad�c�c�����K!���c�[2-������{��4��.�f-��Q�I���-@���+��b�79L�@.��jv�C�Y�<����.����p"v�Qy~�s���LF{�+��G(S��s�D�����G��N��7�J�t�-Tk�A�`Q��+��p�c��W��w5/�$�z9�rO�E7!V��B���;\67������R������*<��q���:���E�E����� 5�YM�$��1}�U�rf��tPy%8/��b�����/����\�X��fT�����d��8�=��#E���F��*�n_��AU��&km_�xa2o�6�2�L>^�EWdp�lr�v�s��i��xL��w/�� �k$�(����u��������?�)�OZ\��\�z{�2��%`/9e�[�J��������3�6D0����p�va��h���d�u��(�8�l}`��[�n�e��2��������~��Yi�.����1* ���q%�%�;��u��dmw���i
����|Kl���My�_��v`�v�q�f�B2kf&I?��}X����q�|8^��!\�0����8=�{�s8�K%-�	9'�ja�M<
�2�a�Y��!3{�8o{n���sC����n,����M�^a�~m����n���`gZ�mj)��cd�Ax7<Y��&����xc�����k�c����UC&�J��
����V����n�����i��3���L�E��(���[��#�a����g�hB�.P���a�������P����U�����7�����z������}MN%+�8b�%�Y�.y��_�QKN���<7����p>Z��R9���8\��^K��?��$bM`�u�	����Hfp~m0vj	���
�.
��f����zq�����b�I����p�����[`���~���K���������P�}��n3��v��{w��	J�!�*����}�x�K�����)�z@������)F>�&���|���	��(O�F���h��&�x�x^��~�����>��o��D�N��}��K���:ylY

<�������)D��Zq6�hT��S�R�5l1�c-'>��V2x�F8	q?_[��,�H�y���	����-DZ�:��J�:�m��x8��X� �vG��S���)��������_��G���9��j60	p�:w��@���s��hZtv�x6t>W8q�c�m*�m��G������2�3��=�-ow�W�Q��������t����MPO���ysM�bs��zL~��?���m��5�R��,�7��
k���*�\�����l�V�6�J������f[�Cm|��A}
����X
��zr^����L6P�w(��@���i��"+���5����[�W���J)CJ6R�U��+��a����r���MF.��bNe����s�������<gV�W,5I�#�l"�����0��j*9��s�9>�����V�;�6�_R�:Eb���'�M}���(�J�x���-	=����N�p���u�����<����7���������B3�1��
9{�U]�:1*�,�������&'|
�h������H�wq��k.qv4�u�s#���si
��
�'��I�A:K`�?��[Jz�<	���n��y�	����+7r��9v����D�,��}���(%����-��l\�}���eB�[:M���yp�����
�O�4�:�b'`��iN�~U~�[
l6�s%xt$NKL��������gs�[f�%�����ii�c*�0�)��A�k��a��J�3V5��<�i�\H���d#mOm�������p/�'���#H xL��n��;���k�NM�`��?mK5���\Y/�]�x�C�\������p��T�i��[�Z����;w_��>�Wv���)����5���Uu���?�������|
�2w����
n�8�X�����z�v2z��'����l�J��%/�/3�aYJ�)9��ip4��by�C�-0}�nI�\�D5���|�S��8>�����<����g��W�������$��_�j������P7`���%3���*)n���o��>���3~�_)8�����]��;��?���C�|�~ki�v�;+l[��.0~�T]<�K���
�������X�_r���B;������/A����of����|i�����C��8��K*S"I����_����i�r��8�59KE����	.��1"���_BA�A<a@.���a���D��6���5���e1�HOz)|�u-���Nx���L�L0�vr��U��jB�~��?���Ao���y<\�� ���zp�K�1�F��LH��
��������a��������&p����N����B�[Tp��JR�=1��&���)��\K��Sw�V-�x� ��������YIf;RyL�tr\�f����#�	�"0����`�k�]���m������Nc}��4#�.��-�n>�`G����U�`���
����A3�t��u9���AWD���ESNMK^n�d+��{h���@��M����p����O�H�W�@�s�dq�����d�X��n�+c�r��P�5Ek\���������f�������3������6����mb"�`�uq�
��	����
�"�-Z����&�����f��a�.�Q9`([��v0#����}u��C��*\\������u6�Qj!��-sKs�	�)*A�����	Y%,��A��N	��kS���r�w��~�_�����YD
����v�/�X7_y��|�<}8�[(?~"�Uy�%E[^��F�!��-��D���('�������<^;<�f��	�i�����[&������b��El��Wi6@���[��P��oy��\�0`��A�
�����Nz��5�,�|p8�;D�������#@�=��c�.������&�r����l��D���[��;Eb'�h�B�x6@Ir-0����/����}��5����$5tR;l>�\b�����$,kK;�H^d!�[y����1����Idgxr���h�&���<w����44����H_(��<�H5mp<�O�����~+l
��5�xBR��Kt��s�H�|'��=�a6�H���1��������G	�,|\�Z]4�	y��y����T>�x'��Cm ��\����uhs �8���#l|��t�g��@���	�S�F�z[QQF�����GZS4��F�o��Z�I�QvZ�lvt#�Z�{$Zm�00�U � ��c����K#^�*2�����^8�	VT�<pO:!���I�����O��W�y�S��?{��D��u����������1[L���<��=�*�����~����U�uoKt�g����r�R8�	�X�lKl 'Z�
�����I5������.�p`�����VC	)�G�b�C
ab=	�6���
3`��W:<J�a�-�����h�G%g�������(�u��bKe�A*�c��q���_.a�_&�s�a�1���B������I��� ��5-�J���`�aF���3�y�C�����=���
$X��=$�#x	��}��qt��z����m���Lb��W%�����3�1^%����"'-������N�L�\kS#,cEN=s��W��w��J'�/�m��z#��� ��-��6���!RZ
L7���(Q�?�}4I������(�W��J5�	�/���(�����E���WBI����������
$����^o���Gk�������8����W��9k����?X������f��/�$�d\,4�A#�
hs��0R�����jxt�V�����8Q�}C\6�6k���3+������
��{by�&^����j�u�`s,�Lo8+*�>71F�O���o��H�����
Y=pT����x�0P���i��@�
�&���]���i]8ZPm�������UQ�������E��e��*���&��#���tn�*�����S��t���l ��(���3��g]��R�r�d�)�BY���7�������������c�1��E����������,Uv�������-�$���:��w��f�Y��G����0��"a):(X������RntB�
������R��	~�z
��fys118h�o�mG������n���WM������/��o0�Q�;3���|^�o��]��hp:a�f2�F���zz{��9�w�$T&��@bT�K-��^�����x���P�Z�3��C�1������"��y&���Y�ow�����]���.�j�����~�4>��n�F�U`�����?������-Q6=mO���+�#��U�]V$a���e�K��|���a$M��J,�����M0�[`�,����^bQf��������S�{>����*������:?O�X�[7�y����	F?�tN���g���5U������u����t-�u��9t��X�c3|6Qe��vE�m���h`]w��2'.�c��\[��wb��Rax2_�.�`^��\)�z}v�0�Q���vAB G�����w��&�U���[��?��p����q��w����X��>�����bcm:����g9�(����/������}��o���������,l��o��i|^��w����pjl��}�^��u���GQ�\2v�1%r����`��k)O���\�m�T�����6 ��q-n����d�xi���X��
�\B��N�bNP������|{��g��i`��Y������#���D��1�/��w��w���N�1-n�E������Ai�z;Cs�]�`�}�<���]f���R/4����l2����x�����Sz�"`w�����U�W��K(�q�*"Y�}i#���W�-�%��}��0:f���pz�.2������!��4����~��J�'�f}�!���v3;�f=���X��.�������B!�wc<�I�/�,��j��A!��x�i~��S����?���������F
�#�p�:�;Q����[���8����X����}8�*+�Y/���O�a������5;�PTM�%e�����~-c��dT������,�M�����BGSM�1�������`��}�t�/6���V|V+���_���g�J�W�J�-:0�r��L���������)��Mi�7E���K���'����a���t_�^F������Mt1h���S�E�m��G��x*�20���q�/���Re����~FC�jr'$�A�#p�F79GS��������~a�y�2b')}���������`w��DV�_��5����������@��94��}��JE�'��L��YwZf��a3ChT�����������{�:�
���Lb����zctU�zq4���K���I��i��XG�m�c�G�rt����>����Nb���g
�4�3�~y�,(��_h��u��Y����S_q�&)�
~jx��`U>qh.�����,�!���.b�]9��FR�_�U��L���"]Z�\&4�c<�8�"0}��_q@y�H�TKs
j�@a�OD��g+<:�g�u�N����f�jr5��|M���&�6�������3��c���,0�u��r������x�p#��
�R��toU�e����?M�ULD,\O��~�`����������z�����bcR�T�#�j�w����)���B}���[�U���?r]F1]���-�ySq����cz��n�I-k��*��Y�����@��J���EU���#r���P�p�^b[�����[���?_tC�����7�_u!uz��R��W�}������A>>�*���n�8���-��{LT����#�74jq����K������(�
6��N�e�sy��q�����|y�J�4#~,�:����Y� ������sF��f�����r�7�opw8S��}�!2-��/\�/�
;����f,��	"�Y'���Ix�81Y��5���\l��*��U�w��c�2�^�����&V<���nT�'
�^�������S�^}��������������������?���w������������#������?�7�7nG������5W��������O��������/>�a���9�K�,�w�?���<��_�G����Q�,^n�J�����)g�����[�=89�$brN�O�x���<��9l��d�Ui��n�8��e�F����W��d�.V/�<fK�?�lH�z��r��$l7�f�o�\8��#�c���[����nZ��++��nr��3UD����^	���E.��,9�������
|��	oA��Xv�9`Xw�|jr�t�>���U6���|����7�!Zr�e����R�'�"�����nf���*4�Z����@�se��a�8?G.��f� /�iK�
�e�hU�OD��Ccc�7^��BS�F4�}cNm�EW�U�&/�L	�����3��pf��b�����5[���u��n�kt�!�4Y�p*pYxL}3�6B-��-����'8���,��674F�fMX�U�'�zD�G�&Y���cK�\!�M]/bX�������I���Z����X��������&��V��2d)>B�}F��*1+�����g��U:.~��y�]B?\����L'u��g��O��K���2����H
8������RBQ�G��"50����DmA,��������r�����o|�'4EF-�	������b$o�[�_�x�3��R��wbp�G�FQ���`�G����%a���OS��/#;����V�������,��r#��X"pK@����5`��0�<W��U����+�
���G�6��2	�����Q��������0Ic����}A������WJ��OM[9e�6�q�����u����Y����/�wN��si@����mNh����zZC�������g�<����<��+�����%������$WK�I*���33/�i<���E��WKg*`. �'���O��>��V^(����2��`{
m�se���Q��%�9sr��-:4�I�&�+�i7_�!p��j���h3�:��Y	��T�F�`�@�p�x���QQ��S)D#e��1WM.T�8L��xb���'^��T
$��CU)c�O��b-#?�3 ��D	�xc6���*R���t'(� \����l��d��P<��.axZ4�L^9x�#u��]JI��P���^)��i�}��G�����2-�Y+v�6a	�f��qK��m����A�st��t�-�]����B���S�G("�<���jy�������axN�|�
t�Dm0O/N���1�a\\A5,�NEO��$iy��l�<����x��)����8�w=VI���1\��s�Ay}�����\�������{V�"!�H�fA'f9fl�+V!�t���
��3r�b'��7aX��_U��>�<X��2��~5�Q��S�[��m_I�� �7\���
��*}��$$R6��(��c����	h
��;��F��k��{�^-<�m�# �:?�A�Bd�$i9��	v�[��>��f�����,rmM0�='3Q�_�����nR����93q�����J��,k���T��1�����o� ��x7zCy����pP���E�T���
�^���S�b�"���U���G��2���!����/
���$�	������s5��9h�p��9�8%��El�h���b<wU�pM��k����x���`����2���q����B���{�<Z�dO�l��I!��N:(�n��������i�8� ���O����\7,�zJ���3��B=�.��cMb=���Pf�U�A��~0K����&�@���1�<_�D�����vz�s=��j�+U��H������a  ��3�<�u�����!341���s��F�:5�����Z���`��������K������� J5R#5
����� �E�E����|w�K`^%|p���R������������������j�U�3%A�d6�
CrP�^��J~G��������&���e����E�T�fk���Si����84J��i��s��	Y��O5z�ct�489�dqA��a3�4����z�JX����@�&�I#r��������j�m��m���&��������xA�G���@8�rbv�R�P����p�r
������2`lVq�ExkN�����[	���?����N�<"����>�<�r6"e���`[��-M%9��[�j��`d�br0�l�K��X�L�?��-
O�^�^�2�8��E��K��<m�]����b��e�
'��d��=V�86��`�{.5KE��9��SS&�����<�U�&�������1!A�\�I;��P@B��1���DT��X�%,pT��KzL8}s�`�\inC��u4�l��P"�4QF����Hii.-�Q\�=F%R��h�N���=KGi�Ak���S)Y�!���L�U���RW��j"��^/�-�f5j�����)����'�y����Z�Oe�P����S)9����#}[�s������@T�f&���|]$��K�Xzuc~7i��L��0Q'������V���A#e
�	>G�9C�UWJ���4z������������<�}�z6�{v0�\Hwe������.B�g������ #G�^4C�^�YYJZ���"���RE��,��^_��a&��)�VE��<2W@r1�������Q��h��GDKE��q��C�_��.��	�c�-V����H��+��/}p
������~x�������?��H�~��yD�"f�XHbb��,M��Hq�C/� 2y�\c�c����St����cp��%���6V6�����&�]��?�O�4`���4W1�D�����2>T���`
F�l�@m�E�h'~H&����s��1��+m�J-�i�8��h�)e9)@�!��M8�:L8���q��RH������I�$���!�8@�N��b��"���b3
C����rN�z�l��r�)9����[��4�A�L����������p��#`�Ob^����6y�_��
���f���e�
~0���O�?�h�_�P�
h!m�&IoP��5h�q�Fq��20`�O����1%.-]\�����8�X(���I�	b���|D�U��#�B��1�3��Pg�r[�Qi@�l��a�A�f4g������ w��Lje����~(q�����!�z�����y�`�g�4B��-Tp�_�0'f%4�~��]82;p6|��1�K�y�i������b�:g'R�hz���S���f�F)��Q+����`��Qsn��+�@Zcu��L����K�2���M�����C�K�:s���
��D>��3#d��%�D�C�4p�G�[��SE��vF���V=���BD�n�)v��� �B���+e'�"�v�:�\H3�<`���d��3r*4�Rl�����2��^���?���`.)��&&�~�*F&�"���v��2cs&V�	dA�I}��X/� M��vg8��c6�d�4�����.���>�O����5�{����'�L0�l�t�� `&fa�f��7�\�N�Bl���#��#�6'9>q	� �:��e�#s`�>��q�2��� x��@��`����BL��0���4&U���	}�j��g��i��+>`Cp[�Z�g��	�v��Y�t%/	��+�p�O�HXd��/����`:*DJPHvO�2,#d�|��Oh�����ASf��0����c�k�sx�������
���
��	�����f���������9�L�p�H3%'����T�� h�E?�e���0u��������y
�<-�|h��OV��$�q�j78+�?�-����/�' {�N���G�u���>y������B��F��R�t�����bD5�m}�s{T3�~����6A�,N�k|m�rjwL�8�S���K�V\�D�����Y	��"���X��C�X�'8�$��j��
�����"j�1���B����Q=o����P�\��-v
��`���]J��-X��\�LJ��Ob��UX���"[���O\,D4?�G�rJW��a�����kK�@@8�������.bRJS����	8c��<Zj�A����������������c|
�''v?�����kn�VL���F��9�t�{[]O}��n��|��&�S���zjJk\��
�F	u�Z��e�f�s�;�O�1&N��D����K���������b��N����Kjg�ilL�U�/���M�v�����F��G�@n���/��c<``�����1=�s '�=�P�������;�@v
-�q3�
���<�����3��f�� ����&#�������s�R���>{��	��On�3�6T\0&����	�A-���� Nq�U��|$���NM3�W�4��'D*c0���y;��B���O��a'q�%��L�j�K��=�>MY��k@����Xh�-}���>�m�`�gV'�`M�f�L�)��fXM�CAJW��� fl�#��yd��
�=F��/M�-[��w�$�%4���4P�0� �E�0k6�x����1jq�7��5DQ'�;w�c�+�3�!�v}�0�����<��A�����������8��-����C)��5l|�x�?�Q$�m������|�$Y��Y�K�)�a��a�����a��g����$M��30�=g<K�����4��cXBcX�����>$�����~j����`}�r�����`^������Z�[���q������b�&:�X;}8�-&QV48�kH�X�y��e����U�����`s��L�_��v����BNn�.�r��o;���l�f���35�m��v.�c�@��9^>$,�����,�)��E�.�����
"��{r/j����PM$���)q����eG�pG���N�$_�t�!>�/G?��[��/2���r��
"�Dd8���v�*d(g��Z)����.%���&d|@�,��3�z�E���.X8�����ff��M��Z��9����'A	c���F��=q�q�	���(1q�"=�^g�d3Q����s�2�H������q���l��F�����i�[�e�:���t`�dv��z�RH�M����A8�l��
�`�n�n<QQ"�Bs�S+���&��\���'a�I�V�&'"/`�`�+��s�����o�5?(s��P�P���3���r���~R��
��{6���d��F�(���z��������R���<�vb�������S�
�
�N���w��y����VzX�R��=Bn�j<�P����S���`X&%��ns�������70�9{
�l��a-v�����_J����79��4�Iq�e��aNs���;2-�l3H�FL�1G�0H��]4���w�;�%�Z��J&��%+��a}��?�T/<i-
��mZ��3�"a$�����M�a|�%�(k�v��!��.0����{����n����mFm��t�{<h�����*F�.-9m��3
��������2y#��7��%k'Xp�1-j�ar�9e��K�h�����B�]�F��_���xt��	�<v<r�
��`���a�	�a�'����o�,P$h8���E��\:�<�h�����!a�]*�R�cm���Ohmc�N��{��aA�%����$`<��X��������$"?d��}Oh� g��E,�d;��S&>Rjx��z�������Eu�35�d�����0�w��~�$�6�Bh�"zR�Pa�^��sr�P1"�3��7#_h#�q+��L��D���B��*c^���]f�_!�,�G��s�.%�cwy�P��bZ��.�r�X�&�A��d3m�"�kF������jL��?2o��a���S��B/rN�J��8���w�
��C���p.a��>��l�sbR������P��?_RE���a*n��UI`yMq�`d$pB�W��wZ?��*�1�4�j��/��uH����M��I���Y��8��]1��g2��_[���L�����?�;Z1�C��w\��*8,�UCG�7Y�~�uV��"�<���7�L?�!�>�%���D�������y�K����H� ������^��0C@���~�����������@�
���Y��I}U^~���?.�P�Z3�B�qPIc��y�3oEY6�A�����0����U��2a�W��h��� en&��C�$�%����L���|�bS3o�|�'�uL.W�X
��������"���Unt	��EX��M�H�8�v3���u|��}��D�T��hh(�4�K{����6���X���S��OIF���!)=�����t�E������tf$<p�%X2f�Q����;1��w��w����4���02�$���e���x�e}i�7/&,a��Iy1T��iI
���u��*q���k2_(L��g��]�n���W:,���h�c��4��"'c�����4���8��uh�D�i�"@���~��G����Z�n��S�
�Y,x�;��A�Oi�����!�sc�q�c��	!�&��5�ItR���w�32�W�$��,���,NTF�P����x���������r�&�Nw��0E�b>8�7�<��
��Q�'w��P%�����x,F��B���	�x��V��(��`Q��.�)��� �
0G�4����?V��&��b@	`�BI)�}���K���wyJH[vD�:����O��p_Uz��5���3�#���|<V�{�:�0)A�����T�B�����?S�HsGO�����]L��
~��M/�3��^��G�'���=�&��6�,R&Rd�d����<�L%�~�O��,����Ph���bn��d�9�S�_�f��C��W�-�P
����8����s��D��R�K���+��Mj�	B�3��Y�h�c��9�cX(�7��.�c��'QDd�=;e�~#���h,
�
Sm�R��
�D�z�
�`O���&+I*D�X�
O1F)�����R���������i�i�OM��[��r#^�U��N	A�\����2�I=q��p&k����sL��xt�>Q��r�����G.�?���Z��7!{��t<�}���6�ei#S��B�mj#Z3����e���:$�@�h���&�%�Wx�2��;������B�~[��p0�}����n�� a#�x��0k���&%�������2��f�3z�&��`�<���^�����n��
���C~�_GP2i�%�9vP�������V�k���l��q��b\�.m�i��x���Sf�*�[����K��B�9�����vc}���(VN������nm�q�d�bj��
�
��I!g�h-I��$�2v+����C�7'��p��/�&����%�v6(;��8p��/��q� ��+OkB�c�Z�(#G!R:2N��D��u�U5,`+J����U�o���v��'����<���+�(l;�{ZX��xE
.:�h�N�sv���96Q���-^k$��;���D��7���0dS�������=o��(������N�@E[�=>��.�QU�j�H���@x����c��~��W�p�j��pR�~_V�
��u��?���N���;����C�N�S���lr��0�S��Ag�)s$�q.l�7�)<Bl#v��|)�
���tP�`��_����;���|1�0%~�[3m%��J��E+��3G����P.o�&Ve�J�k�*=y&F	+�I$/h�)P�I�b�i���*VcaS��k	7pOx�W����
�D�AB�����1I���o	�2�����`�hP%��'61��0`�s3�V3'
,k�6R��JP��	�!n/}������H��c[�(������_b2_��������
"����P�����W��A�7hPE2p51�]��^��)�������
��;��m�0�"Y��&u4%�j���eP'�psnk��Lc����P�4. r`� '<�����p1��5�x�d�`��/��KD '����P��sB�Lfi������)�Mp���,�J�Y���1�q�GF�T ���t��11~d�����s'7��I$BQ�8�H&�7���}�����)T��ql��"���e�$�z(���Lc0[�5��)��s� �b��8_���1���80
&���9A�������w�Z���K������u.7�w�q�d���,{������^a�
}���V����(:8���P�*3���e�$��M��G�#i)$�cEHM*s�39�������As���:~
)��:��:m��hw<Y�F
@�K�1`f3E��|�)�w	���@�4��y�q0	B����)�
Y5���scv��Ol�}�)�a�j�l@PR68P�!� �<`&��'����A
�P�M�-u��f22w����*���Lh��-d^8N��idx������|��S����Ar9/f�@Qb�R_�,�O��EL�&��L0N�rV5t	����`>SZ
�/J��M&9��l7�����.t������d�P�k����1� �1�lL��$&tr����h9A$[�F����C������&z,�	<���j
�R����5�	���1&N��9s�c�aV�	��1���`����;w|��KY&l���y��0}���tl
a%����WD&G��W�BH	�*�P���35�0���Y�-(���>1����1:5P=$����$���RURF'`�H�zA���r�

����
�6�L���h�U�#:�
���h�\#F������E�+��H�\���&�#���38�9���a�T�1��!f���D��2:
bg L�6;���}8)^�"�h(����BU��e�}P�%��`���j�6����x��IT�9}�C�j�����4�h���3W�j�X47x{�'t6wu,�@��4�	I?�	�����8L�!Kj���w��1�����x'�"d����������N���
�� ��U-�N8Hj��\�&_��%�Hq�-H����E�d��!�^�Y^�J��8� X�(���Y@�!�;Z;��I��N����8nj�Pq��
��N�
t@���S����$H$ ��m��I���5�{�`�N
\�-2�@�
HF`��`�O��Hm�� �
�&�����f���J���nD{��D���1ml�=��K;��%}`�)=���a4NVp�*S%,/����BI��8��8���
�L���]�CS����F'�f|��N�QF&q�����8��zpL1�
;�de�[���L��pf|�I�8���<����z�0H�f���%����u�g!E�=c�����#�?<��
fS'�^����Q�$�	���������/�o��N�+�@dl+��7�)1,J?��Gg%f9���`���|�$&F�O�.tF���K�H���*A?,$m'�=s�q�
�����|��(���
����z���t���R��IXT�fd1�#x��uWI�v�0pB"���<��VG��hVy)Z�VH+1��������C�~��b�b�`��	��X#������n/*��K���
	��x�Q���K�s�1�_���3�j��������i��5F�����;n()��U�'�n~�3��Q�����2�B�H"ayy�%6h����T^������Z�y��4Hw��v(�Y���]�1p��RJ�r-���b��ho��1�m�1��T54��F�6Q�A�k������,kINBI���� 	oq����='��fR
j4��q-��,-3n�$��.�Z������$d*3���/�|�-mw�������(r����#7Q��$\.w���P�&8�Ap6�����
Y��I@�cG��J`��%�Q�
s)��i�k} ����Q�����)��d����/	�l3��cB����ua�+)��d�$��F�nZ'�h�"Y'@W
��J�t���2b8�Ou�	b��f&I��'��� `��.Q���.�^1���*xT��I�}UTO�i\��+n�\h�M��X�`na5�����m�!%�����,�S�5wId�GO������%�f��I�a�A�*Y�9���>�Q,=K���X��i?��B�0	�+s�m��Q3$��+�?4 �g���B�����}VJXP�����2U�L�)\Q�����z�������'H�cZ=�����#�oj
��MA�
���|(?���cz�1����p�=�R��,�k��<�J�N�����w�V��FFy�q
9�6l�XS��jC�?5.�u�&�9T�QH(`n��G)H~���y,���DFJ �+rJ�+q*,QhJ	�a��m���^���G����>���V��`��i8���=KY�.��V���
O�����A${������U8 C^T�.P�AQR��u�/��]�r����H�0���x�j"�>��i�O����G��*,Q���]�Q�C�1��������v���"���X�M+�4T2��!n�s�
�)kn
c�.�'m�a�KCnS#2D[���!�����L u3���x���g��6s�bh���� T����K8N���J�*#�K�%
d{
�1�bh	d��D���)Lh��5-��8L���Z���7(��������Z����M0�Q��O���-*N��� \�Cv�pfp%�;�q��*`5A��-�G��)^������y��T�;�c}� �L����i`�B�~)�z$�l��'B<(.�eD'|���g�,"QfW��M#c��pl��b�H",��
���Lqd�w��K��%J�y�(�&�,.t�+���e�r���3��L�&�t;�*
�q5���>�����E>�q���� f^����3^�1)���������0��2L9i@QU�3i�9>���o?e�
����/�Yn�W��^���4�Xi����p������nAV��s�G�C��&GZ�r����G���~75��z�*�i:K8Q�P7����S\r��Z�%����B�[�|��2��<~\e���1:�_�,l)N�w�VW@�c���`�����`�eGxne]��ak�C3��a3��B0��9�Jj�M��3l�O^,1��U��V]�	Fb-(=!6P����*�5�R��AM�_�v�0�N�j�67-8j>��$5eYdb������Kp�+5���%�Z�E��*���J��Ku�W��v*��5�V������y�3�O3���vS�����VJ�N)��MF���j�&�8�P��\0�SbY���4���g)R(�M���5�!��5@�r2��_���O1
^Ns��P��Ig3>2�����2�$�^[�_�&�\U;�����d��l9*�Z��m���$���3k����ET�@���k'���F�E�@1j��15$T4v0��	,x�v�o3�2�!gC���}�}��Ak
�a�q�c9sExf�����_?�U����h����V!%N4#�S�aq��jV��EL�_���1�h"�+KSv��"�N���`���E����a*���@ZkQ��q	7#��9&�$u�c��E-��JhJ�Uc>��N��:J��n�{���K d[�>-����K����cQ���X����c}��D���+�Z�����G��������Xm��_�������������������x�l8�sn���� ��C����"������YX0��n����n
��C#U���P��������)�������?%��/r��@��t�O��W:h�J��R�a�3n�C������&,&a,dv���Xg�����j�0����<�
�ZSn�fm��6�`�*�!��w���7�$�\�g=@e��<\T<�M���%`+�'>oq���M5	 ���bc���
4j��'�����?�p�S������Q���0n��daq�PA��!�/2��R��q����}�{�|��W�*JYh���|s0�Q��
[;��h[���L%+GP?8����E6���G��(���/b8��TN�N���'F&�,H����>�,������0�������6�i��D{L�<B�3)��Q�����e�2�%E�,@"��l��J42��r��=���A?�H��U� Y &��s;R��Y��xZg���H/�>�{�J����e�tV79c
����/D�	)�\�	��{2����o�8i��3pF>�X�`�3!�5P�1B����0��
N@Y^T�
NY�\��3���#�h�h�F�biX�~c�V�V������Dp��,�kr����%��E��2^����B��5�2��3��R�Ld��u5�9�`��`^��X���IdA�v%�S�*�%�[��?�'�Z�/k��c�Q�p�K,Coe��H�K�����^��|�i�`m�-���3�`�o�v������V�����iZ��C<aO}��A�����}��R��Wy\'�M��|@:n�BNhJ�UJWG���
�=l`���1���j�[��i��<��M�.����8��3NtvB�8�~"�a#i�I�vX�������ge��@��������`FM��<�8c?�]�i�����|�a�M=���Gv���<�1A~�MI�������	[��:jM2��`u
��.��! .����=n���p
�k	���Hf����h8����Z]N�QgAV��A���k����Rw���`f���c��y�[E|{[�_���q�R$��To�b�+�K�x�J p����3!}��"m��yq�J��:yX/\��54�S@��S�68���N/�&'�/$����};����`�8F�,x�)��#���i����M�J	�I����C�����I��
/��}��� ���cT��h�W�@L����I�p�AA�h�QI7���6NS��� j���*^��X�
;�/'-'�5�����U)Y����e������*jM��1e�0��.���/�3������Q����rmh��)��J����
�B� ��5�&ARn���?���}��
�9���u�8�#j�_��R��d�d9�6���aB=�=���������s�~�~����-��$�
~z"����\��Q�Pg��A�p�M��G��U��9gIr����@d�
k`��� TX�����w$�{�s<W��Qd����Ar�sy�����3����I���u��T�i�T�I���JT������c��)���e'\e"�����08��!@��#f���H��N!w�z`c���L�	��K
����E���q����fw� �F�����xg�yMk=��s8vM1���O���}�;�/�p	i������N!��T��a�iQM4\�Q�H������)bd�1@)�����z�Au���T��� �[���KL�����������3�
pT�%p�bE(e�a+FU��P!��4z��q�m#I���a��y��K�C�:d�l�~�4(�����(����s�vv�X�-Wn3&m$��cc�K�y�)�q��G%���U
����-6��X���GO?��0��w����3��3�Q`K����i��PV�l���?>43�,%����a�7c���d��7��_�VT��)�i�h=�L���`Yu�W�f��l��x�7A���1~~�e3&��D�`���;�5����M����0�
-s01��9>+�����^��Z0�����
��]@I�jS�o��_���:1,�L�[YS��
R�]'2��'���+�0�|I���Gf����2.#����>���[A&;K�R�2z���%��_8�*03�U�
D��Q(��C��(G����S1L �yo;L�d`���n��A�w4��,PXw-=O)&��xe*�Z��`�Q��F�6�k0��'B��U&m��i���2��A
.���/���>Ry����;�>�a���IM���T�%\�*Ui,/����]?���-�@��9��d���UPT��
�+d�����4�C]�0rv_�[A�?y�k3�g�5�H��!)��|	��5���j����k�&q+����	?Q�i���+�(�����?
��������v�����Ahe�)y���;h$�t� O�f���o� �k�����"fhG��n7���;l��V��Z�g��F�xe~Gn����ce��s��FJb>��5��+�Bh!,����t�\d_;�-�4�3����	�/���F������ ���-�_��������,���J-?W���/H$}�;v*��R��"��$��"j;��n
�jf��k�Mh~�sa��Z}��� ��d��:�D�}�|N���+C��b��N�%2�v��"9,9E��'�b�%�^�.f:1F�L�`{�a1�o����W�X�s��-����qr�0� f����>�s��1G%�Us���L_�����Y\�gX�����?�G-��Z;�U�1\������ab`�X
�c.'0]z��
�$�B����MT���J}�� �) �-a8!@�'x�Z�����AQ��d����{�R��������@��6�Vpo�W���<d�O���C�g������qf:x���@z�����������P��v�������b/���W�?��"��tW
��j������N��z�fD�O����bj><�Y������m���CG�S��&����f41���������l�68Sw�Z8-�����I���X{F�S�>kg��U]@��#�^���q3���F-$���,�b����bS�4MJ+��l��Wc*gs���`<jbN���x��|�vd� �������eQ��hq�[�e�f���#�fl�U@�����Q�"�U����	��p��ON�x�w�&�+�lh�.s�oZ ��~P4����R~��fA���!/��+f��.����K����7���Y�H�%����6$��x������Nuv!O*�R��7�h*0����+����[��H��"��B�����
"�*zo+�+B�\�Ou���P�����E��^�9���;��-�A2t��u<��%ZG#@Y��ic�}�G	����3���fw����R�u����#�������i��'c�	��%����L��S��_G$���<�0�F�j���x�a#���?�@��/X~���E	_F+aD��-�Z=���7�~��������V�|�R�~zV�������!���pv�K/���������
������6��@f�n���"Y?(F_�Y��(��������!��TC�����o��b�tv�E'[�q��r��;����8������|����N-��[���J>=� �NE����@z��y�`X`=��i�a����}:���t\��&������>HBg�_u����b��c��i�e��ib��
Mwp*-��h����:%����s>�&�FP�����Tt�?_��U"�'Q��%?.{.9��4���\�k��+.K6$Q�d������0������u0�����o\��`�������F�
W���#P������V�J�F��@���JZ�}��%���Q�(��YSGD�3bx����;w�����,�������� �o��6l��������C��bZ�P�����y��������Czn���h�:i��/v�eO��b�%s��{v�$<�]%s������z��V��w
�����C���'��(^VCX��\r�E[�U���.��S��"�+i����G�]�?`�=�
�{�wW��\���n���zk#'��^m9`/��������X|�����O�@~������
�r"�r�����ad�c.�K�s���������51��d2�O�(�W���{vK�A�(?Y���;����\ph��-����X�^R��(�?Z���������
1����+����[��`Mr�'B6���������9W*�O}8��zy0L��_��b�:�C:���PB�H`����Y�L�9���0�*[�����A����;]�x�&AjX;��
	�~�;b�������"�o���:I�g�g?���,>��M[uc��7���	���W��E���������X�8���&_���I�~�;�������Rj��7���jGV�B��6'�z{["�!�vw�Z��?��Xd&��z9�z�����6�B>�i�~��6���'n�>l��5��A�'/IQn�p���^�YX�vb��dJf�2n����a+=H��.S��������:���z}�Rwe^!W�r��({���,��,ND��8��\��������)T���FzY���%f�q:"���}	F{����o��N�/@q�����J�K��?�>W������
!p�c�'<T��������:�#�W�Be
r�V�m�#�y;sSo&���fy�i2�v�$�Ou��#(������g�4�f�U���B�uBf���(B���Eseg��P�S�Sd�����X�����YE8�2��w���e��8��|�N��kT���~���P�H�Kq^���;W��n?�����v�����'}��O����n<Y����,M'g�?���Bo��4�bj�w��������Ev6�}�r'
���jZ����@�9s�������V{��S��{���V\� -�ZV�u���8�'�Jn7������?���e�r�d7�[��$�f�%��=�Y����'��$�f���I�e�-i%@��7~�cc4�'��q����� y���
��o����zxn���4���5�D_�=dUs�P��������������m�S��-Z�k�O�l�'�7��Q���[�)��/v��55�8�=V�����n=��Vt����s��Xx�� a���zqB���[�������XN���)�aW���o���@siBg]�HOXfl���qPq]?�o�C�V�����2c���|���[n�;��Y����~��������L���B1'=�T$[c������_f{8��)W����Bg��VP�����I��m���b[f�T]�-_���ZO��Y��a�'n� ������2�L�'�=8W��
'��onQ�y9�6;n���6&=y�t
&�z9����1���?���k'�����o����9��l��L���NSVXA=����;����e:,�d�-���.�����V��f���B�]����
���Y�E�Lw���`m�"�Z?�X.���o�}'\j�~���]3�+{��dfW����o���I���N�wj���?�LA��i�
������-�G)!��I�����ak�x]�|-O��6�j=��j�O���m�6RJ����4��f���Sj�BsT&x�N���y�_���h'��p��N)	�����3!��>�� �|.w������%���6����1����bv
cR��#�gr��{!%�����:F��so�>|���n�o��a�N�IL�P[�R���T�JK��� ���wx��t���s���<�x����!w����0��|�c���C����&��g�J��O5u��]�� ������PM�6����s�&`Vc��!����z%I����2���]�����l�t�s�J�K�ny6�zo���(�� �(L�#��xY�=D�Sm��n�ng���6��6�}1��Z�j-���K&�u�j�f�8u���f��hv�oz~W{d�a��)��@� ���s�f<��N�z�5-n����]���t��u����d>�M����XR�(��8/wd[E�:p����H��#���Cy������(�u�P�Z']�<��l.��U�j+��l9���� ���%�O	�;w�
m���Q4�6���q�s���pE�mR��dt������
w6�f'~��!�3a�jmkY��� ���3k,�RV���$���<��Z���RN�_��;��0�f���Qq�h��v���vv%��nv�j|0���_�z�X?Vz������T!G��������$�j{X���Om��ndk~�n���.,�|����9\���d��jzq=>��;���~�?�����~�}U*���d0��b�]$�3Tw�TF��Ej��F��r7V���;e`���m�
]-O�����F���2+����Q�aN�k^au��_q�z�oj~aT��}S�������ic��uUZ/,����~pX��Oi[a��y,���Y����&��S��@�����S%f��`�'�%�3Ng:���|�P��`��R�'�-(]���`��2]��'&�?�������Z�5zAS���%7	��(���V&�g��Bj��v,t=�m�� �v��~���j�*j�.C7m�F������@��br��&��n5�E�)JdP�9�_e{O��x�?��+l��5�_�o��1<��������t�p����1��;e�8�EE�\�N���������y_���&}��������O{����� z��B���#��d�O��k�����E�����,�S���D����
���C]f��/U��$��:]%v&�)[��������'o<�z��RM��]w���b{��w��R�7X^����e��}�}����aV
O�u4LS*i6�5����6���u�G���M������ ��-h�>���������E�:��9��L�����i���p�.o�R�O������R�]1Wn5g����lN�_��>�jyd[�,�wk��JE�>�=��}���c���IUWi��3R��������q����M����{]f"je��}��
�(_��������	I���T��2���yg�"r� ���i�����lB��kZ'��mN#�X@j��m�u�������p'?�n��G"�P������O�X/�3������X?�c��ab�^�P�;s��8���PAj�}�n��9$�6�Z����Hw�3]�_f��^^o��x�Uz��V��^��-V=��T��v�m ����R0u�t�=�q�{2�� h���\�?�K����[H[�<�2%�nn�*9M�A^�������d��G�����a`�1%-;�XafH?��
48�w(��2��h��*'��Y��H	�"����5<��5��.�q��t�.������oh��R��:�m���j�^��bp`���pG`�|TGG�3rmX5�u���E$�?�<�_�%��E��s_���T� �6p�X^:&�e����g���.���	��G�MH�=�e�G����A�{���:c��/��VYU���l�Pp��=/O�^y�����{��,aO�ll}NVs]��Ry��R*j������=�m��(9	(�sX���*��t��|�����}�U�����9u	�}�S|��ZAd�d��� )�������cw&�h�yo��9�T���!��&�\����j�'l��t�yW�7�UH��2�9s��-��T}�$�J'�gzi���n'��#������+��LxP���W�����cb�cuG��s=c<��5=�8�}�������
�3������n���"�r�:�T����S:8j��g�mDH�)�����3$��S�������9�t.u�N�>�6�@n(�vOO@��%����;bM��t#���Sa�3���/��r�2��5;:��M�xG+���Q�;�y�j�����E����Rw������5uP�m{w[�����	��]�:#)N}�eV9� T�R��A���Q_%_��b���-V����B�u�9HI�Nu�-�n�J�Knn�n�,��!��&U8gUh�v���m�x� ������c���r��q�*���Q���E�{U���Rn�@>
m�4��A���j��=��t���R�?WK�����'#�����!h���]����8h��w�z�#L{}	�mb{n"���ET������M����~tX�K�u��Aya����OE#U��������no!z�^��-�NCj�����7��t:����7=[^��S��St��8.�������N68d�i�J�J�;
����e���;VVt�;�f��:�S����Yi$/\��t����������s��{��������7N��$�{[��A-1����o������8:������3>����{w��9��X>����������bw����k����5.��	���\.���6��A����L
t?�t���O���%-F&�
�TS��@��n*��CWV�Uc��b�R���n�o�6����L��k�]0����	9���	7���b�dFD�����D�@������x/�tQ���s����;cC��5�����H�&,kr������#Gaw0�29���mw�}��8������a�,����QJ�����Zd�
C\��m���U�dM�J������������A�l$[�5>��6��9�����)h��|�_�����=�~���%��[����}�������;���Dd�A�^�
��I8���`o��U�as~�{=<�q�(j|pO�d���h]������+|�N�|r����W�o��0'��a�4��s �����e������J+��t���������r��l���I�������-�?���)EO�C.�H#�Y���k.��%��>�����Q;��k�:W-�-��c�������$�[�:��U[��v�[�lz���m�p���������0���;��u6�F��3��#�lF�mV���'�;������[�H����u-kOY��A=�>�o&��-{�-?r,���5����n�Q>X���f���{KA�U��L�]��E0O�<���e�����x�6� ��n�1'�m_O�K��:_����6������T`���� ��d���C$\`��P�>��J3f�0����@z��P������� q`'���6	#�N�4�;	_�Wn|JLeO5-#\��Qyv�L$�����b11��P���7��i{g���&f�!��rNu:������Kn��s�#Z�
��f��c�m�3�7��e���?�-G����&v���j�a�\��S��Y��c	�o\�-%����{�1+�����nd$��OZ���>�h�.�*�E5z���U�'�T���+9� "���3���&����Up�sk�����u��{6w�R3�t���5����D;+NN����NQ���}�z���z�1<��k����������/c��HF�X�)U	�~c��F���D��r��8�|V1�e����������?+3���O���t��I;�eX�X���c���d(j{
���e��0km�H�M�������[J�l�9���]���`t������Y;���hF!,���J��F�@d���;;���
��O��f��t=����������j5>�5��y)_utm�A�&���]�m0�_f�bz��h>��O�l������-Y:o�<}����!uvU����W���S�-�4#����M��/�KgK�*O��
���������w��C�������������-o�{i�6IKhcy��D�5�7�}�7�/�0�iQz:����P�?���]?����:q�${����.|b�eq���g9�JzW����_8���������:|>@wL]�!�������v����1�'����u�K��lN]]�aP[�
��6n�V����V/O{�`9v����Q�o�V<?ti�R�bb,0�&�P�6�8�F�g�Vr:�zL��?�Xg��v�2�v��C5����,�"F���'������f��?����`w������������Hl0������z,L�p�H;f�Z��L��.�_z��=M��K���.�?����n���:�����;��CE�����Sb�Z������X�V�J-���
	\i[���_����F�7�w_�-������w�.]{ ����bk�J_����73����A�Lr��=�`��-Z�<�B�x���X|w@gbe�����:��.:pV��N)��Es�
��>^��gV|�7Ig�x�:Y�������/�.���R��2�:KG�����U���P�3��T�'VK*�*N�g�x��k����2`M�3[a�Y�<7ZP,3���?n�f���KQ�)������b��-��nh'�)[������l�PM���MB9�E������N���9��;s@u:��Z�|��	`�����v��`�l�N[=c��0~��e4�����~��9�Z��>GR(�	_;S,��/*�.ls@�J������D_l\��a��gOP���5;��rc���x��(��hi����ux=��u.��}J��k_�@O���q'i�r2[c������d��u��m���p1,�C��3�.����6�����]U~�8�K�L����{6z�����l"�H����o�
�-��hy�s:a���+����)��f����bm�������� �E�%���LafT����|�7��a�c�_�2�q��7-@��N���QI���O
�2|��-�P��
�rv�&��=�Uu���K�Y/�4���)!�*>kM��%c�6��81�~�'��B"���?q�|7�c����.&���9e������v�F�lV=t�X0m5�E�1�V��v]�en�~�sgg*i��nF����y��%�����)��%c3P������I��m-N���J+
�<����
J!����t���������(�-���I��Y�KH�cvk���u����-?��^Q`���������������*����-�����L������M������ �<_P��*�G�V+%;f�y'�8h6�d��\�}��;��/����}��*�����g�O�nG�
�	fs�O[�F~��[�O�[���C��1nMa�Gun�S�����Y���=gI�p��p��h��Zx.Y)j
������	�O+�K����J��R�I�\��.�+�t�'��w��z.�iA��Z���m�,��nG���^N��|����t��k����g
�<`���(/�<K�T�+n�r��6�v���k��{���
��?F����?r
���g��}���v�e>�e�
FB���[i��G��s�f3O�{d��&�p�y���{<��;�e�~���
W�JV-���8{��,��	t�"�6��5!��M�F�����&�*������
�|uGi
EUS/K������~7�������E����6i����v�o���������L}���s���?xJ�yx���������[[]N�����n�����5=~����$���:����������3�������������~��dd6�@9\�<j�0~��I��|n����������9�G9��������O�W���|Y^���>��c���AdLO��~������v���a��E)����3��EP�������/-Z�����Q�W��gI�>V����v/�����Q���dR�q�O?
>��\�=����:@$A��'��������5:c&��yd�����X>�LP�t����f����:�o�V��
F�?�S{�-��e�],�S�;JLf�������T����gGn�����#�e��������%�4��,2f�a���AM�����{�2�jw��j�[K��0�10g�,�z��y�J�N4bs�Ury������F'�/��H~��?J�6]C�G�K#�}
�?�������6�y��=�~�����5![N5�d�zN��M��4k�r%*Uz6VT����|�Z�����./2���v�����W�VrVX�+fzf��B��J�����2���;��%n�I�k"7>�%�N;`�2����y�V����^�:�3l�����C��b���S����P�b49�{�����]�.��n��,�)�RT?�A�}�S���}���	��"��[��$3���:H9����}r�bx6q^�0���5����M��HL���+1#�~��N�T���.H�����*_��s��4�pK��/��n��Y�n_f��W6��J�U����'�L#��q�h�t�0O���}�	����"���X�E��5�c���S�jnm�������!)j�}Kp�UA�}�oN�'�O4IR�c%����rw��{��n5��|/�ft�.�:=��X6��.���\���JV�t��lO����T�nRP�}�[S��N����fq�������SCBX�������U�{MN�����
��~��wX��w�-���Q��"��>�+5.�;��#����DI��!7��y�)����u�c���t������A{��,G��x����XuX�g���;�#�`�����g�A~Pxq�Ubt����}�5��������An�
�nt�������n�o���2VU���,�zt�����|E�~��������k��F��q�k1-���Y�����2{n����}�����R��\6~��$�b{v��������"���LOr}��IylQj��MLM=_p���|��aA�uq�r���]��0\O�S�������;��u	��p ��,8n��#Y�@��������V���h��\GS������u���}}GB�8�P���-n��/D����K�Q�_�)�� ���u�X������[���y�;��)O���_�hR�i�s�U=�T�(��o�v����&����f�����R��(,��xP*k==f
S�8���[���A��.!����L#�	�������+����S����~�����]xM)��S��IW�����k�,u��\���|6�p
��H��2��q-l'�`��I����s��|#vI�/jh��
��d{T�W�]�:���	���	�ZM��h�|l������&Pl�K6&vg9��XRm��;��*_�'�4�_x��L���Wn�n86R���/�q�����*�@3k�+�?<�������F���b�-GwL�������w~+M���|��������]�G�����~����Q�}�5�[gT�-���c�#�/�){;H�������cF��������s�c��#�v�����*t!2�{��~S��`�H
�_��z�d��'<������?�����y��R�Ge�kd%�%@�f��J�o:U�AI�Yg���S��1~��6�m6�N���H��h�E��"��t&����	����U����l�c��
��bk/���}��;����W|D{��5KQ����e����/{gj0|�u��K!i�`O��Bf�VZ�������gZ�@
Z�3����=iNy;w�b���S�����D6�����*���6�����+4^�n���:c]5�����p��i��X(eT8����,���jx�^�a��m�k~8L�,�^���G�����{/�����.Co�K���}��W�pP:%���v�v������(I<��	���n?��zn�,`7!|��*��f���IE�
:�N��.�/��Dgk��5s��dd�[�F?
ts
�iq�?��l�ef�%A�P��U�{�����pO��h.��7�9�~|3��p��V&W�e,N��d�x��>��!�o�$���D�A������QOr�gm����ZW������@mb����(R������������������9��BK��g��o���9��?�8�Vg��*j�uX�$:]o�0��������c�I�mE��L�PO��s�As���5���ec`����M���j��a��=�cm�}��l%���������C3�!8�6��������>Z�z�'qA#��#3�?A;O{�� �������t����������m�z�fyLN{����o��)����1��c?�	4��1����c5gG�M��2���s*,p���vc�~��l�P��mJ�(����:W�����W��f*������i����������b����(3��s�$�B�}�/D��@��5n������?\��F���{F�~�~La��D����3x\63��I����a��8b7�A3���&O���bKe�
9L| g����+��~lQ=��9����C��(�y����n�}���7�n����l
<^����'��8|tf��6��_� U�,�x���4���O�"�m�?9E�hu������O��Lg�?�?���:�?*�L�f6i�����:�\����2�M�Z�
u�@�����.u�|p��b>����^��������WQ��"
����D�����as�B�R���4y/ �� w!T#�A��������>�=t�����	�'����e�����6;�T��._���1+���� ���u��A��}WO	���/�����L����4��Q����������J?����j���]����oR���2�c�/	���5%��O��X���G�h������p���������k���a�����8k������8"Zf-�9'A��#v���t\�7�������h���/c.����[�,W��K�0���(v�}#�9A2����`�=',�`���]���=5cUM�*���+�,�e<�����1�rt5����X�9�����N����r]���rn'd�658F� ��=5
G�����e��i~�������1��F'�a�b�.�s�P7��
�{����7F_�N�%��f�����Fg��W,�yP=�ZCv��k�����?�P�V����������W������ko��$yls��$b|��Nq��;�zf:��������[��F����Q�!>�<��<��������u���<��'9����zb��U�������x��R��s���<�5h��B���;G�c���!fLN���c�|I����+ �C�C�G���GQ��u�z���l�=��Z���7
I�2��=�sO#�dw;��#���Q��s����Q�~R�u����~������zp�0��Xm����R�����P��"<r�3��_�e���um
���~v
9Mn"[[�9��/�?Y����+	+���
z�l���:H�aJ����(2��,)A����6yu��*����� F
Pd	�d)�����
pd)��� �S� !N�aJ��=N�z�Q
pd)���@|'�  5�C�l@@kN��e������#
pd)����82MO*9Ma������!�Zu�>�z�VA��S�.f~��S{�1M��Q2e��xU�	���UT;�,%�x/�@�>�c����O�d5�@���R��baJ�;�u
:��C�S!�mWY{X���k)#��-����
�����5�����pr�P��*�%�x��C���J���D
�@�1;�����Z`�^�*��&@�d"��d"�xL�����}�`�,;�	xU�	��+B�:��Y!�jx.���S� 5��a.�K�V�
��W����a.��\h;�(��XD���&����N�d9�^�+� v��me�����	��L�?ZA�am��w8=X�Mf��/�bms_�4�Go�u�����~���tXe��T?
�����O��dV����6��������c2�e
��� �v6��u�`;���~LN���!�����oO�����;`����d���~�o�3��7�k��X����<���y;v��
Aa��,L(�}����f;��oa����&��+���j~Q�;�2���a�����-U�u
�S���l�s��I����:s����a��-���'�$J�w3��?��_0������Go�Z�5�{����]��������T�������������z�����k��BBsp�����A�����T�G�hn�������,O�J��B���=�6�j;���>��0���Q���n�Ni������S�z�4�������k@B,��J�dX���0��-s���z�BW� ,��y�`��x���F�`�"��,"A�E����[]:�b��A��Go���U9���=�X�E�Ni�Y���X=h;���J�d�9�Au�@k@k>��C�cC\����<+y�u{Q�x�6�J��
|���s'6�'4���~��������Zsn�j��
3�����X��ba.�	��9�u)��;d@����x���Aa.�	P=/O�)��b_j� :�PXK���l�b_f� :���}���Jx�	P<�xL��!2�a.���9�����y/��w�_��c��;d@�T��d�L%��XK�{�O����p)���eb��o���x�6��R����b}�5<�xL��!3�����?<s�9��������2Z�?����k����_����@ub�!2���LL%@�_}MD{�V * tba.�	�!C����_�����
,L&@����J�����Bd	�<�x/���_�Tk�@ub���� z@�"'�@t	��
��\����"�v��@T������<:�l	��
f@�����	0>� xL��!2���U�s�c�f�����o�`e��(�����g�x����&>s�����hV���5��Y�3�j5��mw=��}��X�i�����!�����{����G�$->C�<���;����y�M�k��IO����{��C�<ki*���K��B�����|�nx�������I��cX:��}7�~��Z{i����_��_���)�B���s�����O;������1��G���?����3�=������w`��:����P�K����m���Y�}7�����@7���O����
w�|���;�)�����O�G�{9J�A|W�	���c�'�����`�~k��C�<B����)�������������_�_��|)����oc�=������
pf�B�g:�p;����h��mh��S� 5�P��������
�u�^��L&}��$&���O��=u�S��Wl���@BdK�������?�����NX�L��XK��!2��\�^���^e_���U���,�}���5�i��g�~%	�Z_�X���T�/�D(�������`�>���9
�&'[XY����-S�����vk��y_U�������/��s��9�������;h��_���������,/����Z�\��=agV>p��*�
�kj����Z����5?=>���D��,,���P�Z�Z�����j !i^K����:>���B�H
���10�L_j�����������#����P�,��>��/����$AafB��3>���"<B���U����b_i��q	�����|s�?������q�����w��}���#v�����/����?�����?����|s�>�������1�">�?����~x�|s�9�^��������#<���h��#����d�����������q���i;��H����x�:1/��<G������@S�������s�0�������r?�����F%���[�W��>���������Nnt;�����}�s������ )�|9��>��x���un	�f.�����S��vP�o�]�Q��.��_.��"?�����=8f5QC�x�~�G}��a��'�x�������\�C����<U���w�������T7?�_���y�L�����_�8�f<v�����|���(���kB�<����v��X�;���}7��x1�[(6���\~\	��g3��O-�<�2�
w�i�F�������G^k<��s�c�����M�xeg�b�{0����,$��q��=E'{�f���J+�+�5U�2�z|��_��_}��jup��U�����G����`��F��aK�
cFqaK�G�bM�:	�tIY�5����������UKZ�5�e�����V�p�5V�zZi����c.R���`�����cA�P����S�Dk<��G�*��?�{F������cUlmg6%g���8�\���r�q�����/�F�F',_�����i�|s���|��j�;J�V���:� �Cb��;H�T��
pX�����$j�L�������k���;X�Q�*��F�P�U��}�n��x��3��H��Z��y�ENz��#����W%���
��TP�k���$� �`p#w��7�{��@�E��H�!�]�\������mR��c�e�T�z���Qb��XYU���a^&r��|�W>�~�������������Ll�!S||����:�����G.8���t�a��@<%��=mh>:������<�)r��F���q�TX���}�g���|���`qK�U�f)����9�:�(yc��[W���=��s���������+qb~R��+�%j�k��o_"����)�����\oT?\��c�'e:�����p����o�=2�V=yI��u&����%����x�sMYVXRJ�^����=6��V`������|zjY�IBs��n�
�o}�=cIBwr��c�V�<'�g����!mq1��g.9�W�{E�_�mJ���o]����Hq`T����P��)������7��S�J����=3�5�)����nM�?��2�M���*IW�$�@����F�0`��0���D���3
x������>�:��<{��@+���uX�0��"�~���?+�cw�JkF����z�������yT�J�	?��^�M��l�gRi.%M/���},R�_�w�:��2N��P�!�8Q�%Lt��;������L����K�+����C-7C	�Z0�j�b0��L�q���Xy�9�����0������)�n����g������z����S��	s�E�T\h�7^�
�q<�a����U7m��4���7����+\���=���y������V	�G�-^�s��1-����_Q��!�yIr�N��3�4�g�o���o�l����U�����C�
D��T|�������&2�9���bv���T|��e�����(�����g�,�z&}c�cc�GT�B0Pi��!�T���?#�$O��g�n!(?��;��z1�<�o�h�"��~�[��q�"�
T����a�����S~��3������a������������w��K��w�r�Z��Ks|�A8G�^�?g�?m����~�zz�|`n�������x;Y���$����\�Y��V;������?mB�v�<�~���������1�t�n��zz�|4�>����T#�?md+'���e/G�������<���o������X*�/f�}�����\��y����o?mP��m{S�������1�-��0��R��/NuV�`��'Xx4��U��g~Tn����Y�Ri.%�|��<�����H����m`xuL��V[U�������
�����u�p���
w�u��hJ��u�
��G�&d�IC:���X����4��#C�P�+tJ���R��F��48gQ�n��C�uK��uK��u3����U���v�)��N%CEI��;�����E��kj�������'�8�`��}or{��4}n��V�}>��UA�7�I��jD��=��M�5�B���UQ�����Mr�������zcj7��*C(��}9�#V��q���pv�\g
�����8�p.}����l�Me�N��>�|JI��(GQ���uJQ����G��:�K���q��hbk��H����B��W�[��/�:�������j'�S�$������G�d�2��L����������q�{������:��nv�%l���n
%�48gQ���phv����Xs�J��?�B�'p�<g�jS����I�w�9�g&�ne��	�hp����������SG1(4��wa��<�:<B7�m�`�_�����l��8�Rnc������%s[��_������������l���7�Q��id���C�
D��To�&�c?����UIq1
B����>��r\/'��5���bO���j0��l�����1���d!R�(2�x4��?5���N��������0����~@�F|r?����X' �;�U�:G��|5��Jw����m�a�jC�5:�u'�:��l��?�1���'����:�zzG��B5���N\@A��)�<�b�h���1o���P�5CRI(r\C�6\����'E��1��(i,^�L����\b7�y5��6���|9���O��<�Z��`yIa�>%h��p|�phv���,g��8GQ��;f��4��pi(gQ�p��I[^����$�e%����C�����),:��x� w�9hy�phv����7Q�����|)Tp�������'��I]�I^�2�hhr���~%S������fR��h|���%U���IQ���$���m	�p��JQ���4?�!%8�)�9���|n�'li�%9�E9O�<��0���I���449N��<%�$�*�bL�\�V$��$��v}
N�\�I}9�v/�^��45����W�Y�������V��Z���,����Iprd��*��(�������\HX����(�449F��(�b\8O���%V�R�Lk3�h�+b\d�C��gbT��8o�T�%U���������S����O��z%,������%?��S�6{	O�+z%,���'��$���1\A��� 
�����[${Q�;�����w�J���j ��)������Q.��>?� ���V���������U��3�)`����CC��R4���T�	U�JX���r
���.	2F9<!��K���*���Z7����JX����/�is?��|}�u�Q*H|�CC����"RReP��
�R�$��K��	O�^Z%,������t���J��O1!`�t���K��iZ�/�q)&�9��)����r���x������tA����X
�l6�������;?:[�K�R��y��EE����%?����@l9M��2!������Db��H��5s��d&�	B449[
���$I%�������6��rM��hNC��Y���(�\��%+D��ch���I���449F��C��FS�����>�S�[��V�&_3>G!`����C�+����.G%`���q	�!�sV'�P�\��H����"^�Ja�\��q)2[},��K+�zR����%h
��3y��C�*����@,oC��2c��NPpmGS�����Y��%�1x<a(7�M$���@%�!����^������t����<�l!������N���VO�����T����F
��C��
P�� nM)4��I���L���
��9�$[�x���q��(
��J��c�K?)A��:d(�u����+*����^��l����D���P����:�P��S��~R�Z���M< �}���������)��VU�<�3R�.�!��K���P�~P���x����~[�3���4`c�{iL����$�O���{��i�P��?�R_v�
}��g���{�����A@>�vI1��*6q�kD1�8a��@�9F��5�r�<�����C7���.�Ta ^JUhTJ�IQ��rkK�T�\��-_�]��8��IJ4�����*I.N��'X��o.����T�~&9&��)����t\��������>���>>I������T�Hr�+u��S	%(�bG$���0����T���?����$49F��)������pM%+�x�J�R�/?�+�pl�`�/�
���
����f��E
	�{�7������T8����\����:G���A�]C��y��/����6?Cy������c�Y8�F%��:������
6\�0���~%�-�0�*���_�?������K�x���3|��v:�;�j?a����|��f!���i|A��$�q�pdRuc9�����������-����AQ�M�:�f�0������������� ���k�����h�������w�cc��MB��wk&�
S�~e�
��9;����t���?����<�~7��g{D��#�~$Nx�~1�K~�S�u[�1M���B�������=�<�W��M�����!��``�P?����C�
F��[���rA��gK�����m������j�����Xj�C����Q��j6��K�<zi5Z2����?;���gbB���|�#�?���:�����!�W������h���E�p��?m��2�{�]Q?�B/g����a, ����p��������?��b�W���`
������L}���z��p�����|�����/�w'���T�`�
��}r��������|�so��s�������Ku%?^!5������a�s�{��*�-5�����R,�K����T'.�pU���S�t����S��:���7�����N�P:����#�������*D�����'�T�j�]P� G���i�<A���L@���j�q<a]����l�O�x]Q>�+>�
����1^;�����/2r�?����|pn�6�����@�Z�/������o������&�t� ���g��2���\k��`d�*�����(�1k�9�����r�Q�W�`��u����e�{�1�l�7��<���xe$P&;G�|9�y���l�� +!���0
;����p����?�|�4B���������=��}���-��M�T��'���;���~.'��.c9l���/��f��B��j�(�~FM��O���
���p�������L�}-����e�
e(gR7�~J
i�Mq��oX�|���;�K|��6B�<<q~c�=��j��F������#�|�������?�/1�7{����#��>������c�����R��Cpt�l��h�+����9������c(L������O��>V���#�ep<W:����K1�
��L���x���R�>wi��A������|���~w�*�?��q�~����7���q^��J�+R�(��?]�c���9CL%J/8����R����m��&R�0��B�O��1P��G���4s��'jA�j�c?�A�1Q�����Sl�?6!�~-����/�0P16�3��2t���>V���t��>Gr�&_���<<q#��XN���:G���c���u+�K��w����N��
7����`f�4��r��.o�6�e��7s]?
|�cU�&��wOu���CM�Q�a�Q�!�y����l�	z�/A����������2�d��� �Kg��\�-�Th���i�I�0;kFu@|J2�v�C���>:�Z1��r5�����!���0���7�F,��u�=O$Rl��Y�����5j�'��n��9��+������QO���=��/�c���%x��~���4���s�R(u�]��-�������-���e�[N�����fQ�����56:%��rQ��n��}T����w5�F��[(�qq��m��i��C����S��	s��s\��������~p�\~��F�n�
��0��
wzO��"�4�{�� @Nh���[6�SR����q�N8�����w�R7$@�^ A�v�����-y7�=97�)'^V���F
�Cjw�0R�s����^.�G�%����H�
�8n$��u����`22��-t��<&�"
i���H���9�����~-�����X������������%������H?U�1�H��#�vA����[x�*��)r�U:��������K����T}M��Y�~N��`UTg�I�	~3T��uU��KJ���S�����F�5����N�i:�8��Q�:�����K���T��(������B����4uU��W�.^
����K�`8�����9.�^K���,Rx��>���uQ��[�R�CNQ���=�����.������
��5���4gt%e�����P�UTg�UTt8S�_d�����4��_�v���?��������.�*���5���G���l��8��Tr���'�.�&�N&�g�����
��Q$`�]����W�\;9�3�����4��a��&�b�x����;?L�M�=�����g���M�d���9������nK�{=�w��l?()����sV�o�������z]�x*7��������zJ�XD�q3�y�ly��<��
������Z	5���w���[$}��Y\���Y��
�tn����b�C������[�~T��	s�q{�;��**8��c��G+}A�C��()�����EV�Cjv����:��'��9n���������0RLCS�o�UK���gS��,�!����w�h�3��aQ�o�Toib��fm���?��5xuy�h���~�y��[y��L�b�(�������-�{v�O.}i����G��W�*�`^��*e��T�?W��>+��0
O��T����	�Y�X������jz�t-��K�'!������z]�P���J�lM��NJ�(V�^�>4*}��uFR�	����7��B�=�~�m,��n��#��)�
�_G�[��k��S����Z��	��"� >^��C>�%�wY����R��[P!�-�I�
C�b����	����X!�hi��U��K�D���w��#h�;���������>S��o������b[����-pd�V�W��:^������%����O� ��|��zU�F
������(�+)&������(�X\�!��:���e{rM�����`o=�\a�U��5�(e)��,�!����OZ����x�(��;�T����h�*I�6H�j0������?u��d}C>P���-��e��]�@��_l�0|���4^��.����t�����M|7>x��c�����7l_�!_��������X�~N�����!�p�l��!YT*��6�?���~�'x���R��w���<�Mc�d�qc�T�n2�|���:G�m�t���������:B�5����_
��;��;���:G��t�}@>w^{�����O#Y9����?���,���1-�<����t�����:G���a��<\z%���`C>Gc?�%q�\;��|�B=�b>��������#�;��q���I�?���|�B�G{�������(`�#���dx���iL���?��]����,\���7����p|�������k�S�^�K����O��
/�q�b��S��J�������.���R�(�����\�p� �5&�NC��Q,E��������@��
)d��L����X���E)�=(�P�XDf'e|�&�,"
���5���5��A.I���w_�����������m�C��5���I��%���*I���b�z?���F��v�Re�.��}M��x�!+����q��RT,x�sO�;��wH���?��C`�\��H��AT;#�
�/
��PoB@�����������r�����F��&}N
���F`T.��:�vi��'�\
�����BgL��K���;��p1b�-�jup�<xb]�����>�
�����\��)H�k��>���c�sG�}���t���.�����|}w���}�T�w�"��`�.��>�����n��4��n9W7|Q�R�m�s`j����ho
s��@��M�����;��3�p1���C���Y����;=�s5�AP��%��y�O�����`lB�;&�-�w�Z�'�����I��b���cX���v�J���gc�?�;��s��k��K����jgK�v;k�-!u��k�����?bB��n~Y�?�]��k@���Q�C��Jg�M'���`	B��C�s��&�|��<$s![~��~����8�������Y�6��i�����
����9g�i�J�?g�X5�6��>��mnu�?��^L����$��v�rY���>��PX�����A��_=���0��|z
SgbJ��+TP>GKk�>�=M���:��4>��I����U�q��j/�(Tl����������H��^�
�)1�E�9%B��[!��L����\yWW ����8k�r����GQ��pO$[�[���p�����GV���.�\��lv~��a�kX��p����.!������E��>r��K(�!��t�T�}�/�|��~t$8���nI��/A?�en�Xq��>Y�V�>Gn��,�E�\������������v�:����D�w�-H;>[���G�����v�_D���,�8��;���{��������Q>1��OC��;���B��i�W:
�����O���6��-��r�B��|�1��u��fi��?��Mt���|�/��#>2 �bG���7+�5=��{
h#�|��=������R�_jc��n�E���.I�������$��������cp!����v������0_^~�F{�R�
���]���`w7����$��^�#��w�7-�==������O�B�
����$����$����������!�88r���<��b��}���O��1
B��0r���{:��#!x<��&��P�0	A:�4s�g��?;?C�f��{5������<&��t��y\��?�v��B:�R�����B�[=�I�b��(����(i��*<�lg��9��5	[����%�lo�X\C>��*O��q��~k�v��4���A
0�3�J�4[��1�`fw�|�N]��h���g��:[���g�����)�?������;����(��?:G�:G����`�>*�xT�;>?G�{'z��WW�|�8m�9����:@����N��?��&�~v|~��p�H�c�$v$|��#��^e��;���8��$|�Z�O�o�Js��5(?:G���V� �K�V��;�>O��$���6��#�|��O�M�{�5�o�'g���z���1���M��]�k��?���u����,��C�_OA������.�9��t�����:K}����@?����W�����|�i�:������4l�GH�o��W��'�>we7Q/ '�><uS�L��v��'�i�qW���J�(^hxY <P�hO������o���f��L��W������E������8�G����~w��d}*iT?�SEv��
��J��{:�������<�n��_:���T��,���s�a�������Cj��\���$�����S�����;�J�:G��K��_�.�����R���~Q#��n�4w����a#�#�#��c�(���r��'�������_��������?�%�ct<�����yy;r�|����������?����e��
�dt�������
z%�	sk$$�3�w
�GKp]���#�v$|���g�5��jw���/#�"����U#��/E���t����s�/)Zi��At���>XqX������u�������~O�>7��k�y���*2?��7���oG�����Z����?E��z:�a����'k�8���Is��5��l#�K�?���8�P�\C�;3D�Q���p8���@t��$t���?���������a���������;#�� �jd���~�/�r�~1��/��Q-�=E|���h����>G{������,�y�3�t���|�2���|�T��t�'�|p|�����w�?v1�������\!�#���H�~w�e�|����1�'^O�@�c�1��1�{F$t����m�a�~$t��1����
����b[n������?���NGb������v�#�|��W�F�����;RAL�/���y&��(��\Cc>S���:���������_*] |���;����F�F����G������x�3?���{�S�A��&&������l�2��L�b������f���c��6,�0<����,j������S���w
��C�lM����,&��2������&H3��`�2v�������O���pMs����l_��#�y�/g���5M���S�lN��l�:�(�t���sS����{#��F��'���N	�|#��8GQ�8=N�����a��:��t1��}%$��F��:���:��R����uI|m���g�noEF�����uI���sj2f�������Vd���yx����������J'S�/d��?������{|���mhr:G��c>GH����b���dx>&�r�_N�N85��|#��8GQ�p��%��<��*���uL��G��:���uJ�xuw;s��A�p��C�u3����;����QJ�?��>���}�[��\���<"��u����-zmO�U��|)8�Q��:��G���G���=�p��8aqh��v��%*7����M������.3�*�����5�b���\C�����V;���c��eTP��^%�Pe��0�1��x$���Ue�z������}+���B�{���,Sg��a�?K�������:G��K��T/�����(�#�#�����p;��_�g�r�'�� >S��k�������u~w}>��0�5����f�-��/{�KGNs�)�dp������X���'�N���=	�T���1��QWC�����w���p��Fg�����������3�~$t��w�u]A�bG���g��c���1�K���j���1��c�s_d�a���t��j�������g��~����,��v��!��-��@�p��`�����nq�H:ZU�.��C�V��Qw�i"���@F
�����E�?������H�g�D/_�8�>�~�$Y<�l/���>]<}|W����jDmP��;�g��<>������-�7�CU��������6���cZ!���<�����N;C���u�����|�UJ��m�|�ox%|��1�b^���@v1�~v�,#�#����m�����o��W;�����#����@�bG���g�i�;�+������0��������A�w�j`�9;���?����K�%���:�-vj6|�bGH�#�t�V�@�bG�����$�1/A����|���t����GG������K�������L��Mv����?;Z��[\�#����vM�c�;XY�v?;���v1�#��c�mf �#��c�%��Y� ;�$~$v=��,���u0�h$-��	��>��6zN�{�-.�mI���t�{D*��������|/����<��H��h��>GH�/�����#�������|��1#�v �A�:[u��G��GbJy)!0v2;�t���������R���m�|������������S"�DK�����@�fS��|���dv1�@��F��Tm�q���W���Y����Q�*��n?���P|���7`N����|���k��Nr��������A������?�#���^���H�)�p�.���~��	���>F�O��JM��7#�;��^xW�}�H�s6����RZ�8�O������`��,�/��A��w�[�gv��1��I=h�3��z�
��
������P�p1�,g���{�mB� p1
�(�;���=��\C8u���k�b�(7��-�`�2��g�X��1��}�����kd7O����$t�������`8��R���{�����|�*����o	��,�n��#�j=2��t=��C���6>��������}���������t�0�����b���g^���Y5��;��):��*<!�]�l4��"�����2��d�g�
�^�mqnL=����������r�/��N����&��j��0���d�bP��o�y�p�����c��^Pd�d�:����jRt�+������F�������(2c�{FK2��nI(r&�ipB?N��;Z��?���c�[�e���C!�'��w���|�:� J���W>��K�����|���[���#��:_��/������>_�;��M���U��:L�yx������1���D�������T�����
|���g���;�$w�;U�D�7dA�,)����v�_���|�~$t�������r;������-���^W����#�#���P ?�%���hS_��8?w�*�p�A���p��wY;��K�#�g�S|.!���zG��+�x:�a�j"��H~�y���,e��% ��p�@�b�px
�v����$�.�����`
���5�i��w��5�6�!YK9�S�5�x}D����w��a�:G��bga��V��b_�])0��M6��.�w���ie���4�B@�Ax�5�����<GML��j �Mp?�v	@>��gL��;p��@�����cI�c�����K��������
���>Gr��d|�4������t���?%�GbG����;S�~�A���:������������^3�t���.g���Q���#��]�~�:��c�}/�����|�H��H�+��oc������>GA�;�������#��K[�~&p|���>N>wQz������Xv�~$t��x�����*GL�8�����Sf���!��J���J
x+9���>+Qz������c:G��-C����;#����J2s8��?�1#�~%���h��:G����Q�GH���|�13��H�>����o&��?~5e����c���t��bG��J���a��c�3����:gb��?�1.���A�>�=�Gc?�/�$�1�bGH�b]��e��c�$t����o��x/���j5�>GH�c������^�@��1�#���g ��;~ �b^����b^��kd�>GH�o����'6����d|#��bGH�H�J�>%���;~1�m�Y����:G���Yj�|����1�G�i0�~$t���t�z|�v�GH�zz�.���{�x��|1
���7��BF����x8�0t7~wY�A�:G��>GH}�����#�|����������h����:_��r��m�x����g�����E�
J�<��9M[����'������O���d�f����k�����?�uv������oU����������n�K�E��)M{���h;����N��}��r����=)����vu��;���������'B��v�C\���n������x?�Ja�;�Xg�{W!�[��o�}�!t=�����������-�����r�"�a�a����lCQ0twn����~O���rzF	�Stb�����Lx1����5
��6���`)#�������:[�S�������1������0�.��2��Ra]C(0�������b����I��z�j<�j��,��!��|cg���@=���%)���v����O���r�qL����X�9���<�����_���lvm�m���2S��������D�����{m��|.j��1�����D4����ib�ZS(��y����q��M�g)�� �������)���0t���C�P�v�
�H�e�wc���O�/����^�q��H���a��H�#�-�i�y����M�������{qa�y���a��������<7$~V�3�����`R��e0��y�?��!����u�������f���_�{��k�YK����AY��-�1�L]8ZF#�i�'�<$5H�e����J�����i�W�t��|��F�kg�Uu���g���Q���)��=}����������/�����=ss�����A��b.2�G��c��������?���Q���^��i���@�`���U���_s�LN�DA�?#���*�����	�"���$��������O �
���Q���E���z�X��U���[�g�y��D&�,��&���_5�����J5�-�����p^����������%������Eb��])�}�����%���N�]E_S�?��d�����x���v��;5�Az�aZ���5��zT��(���e
����dPK�M�z����m���/U���]���������1Au"5�����l�u����GN�o�7I����j�<�w�0K����7��V���U_,�[�7��B�UA��:��}@A���,F�`�+����_�E2����a2pI:Z)�L*�tiRc{��*L�F��:}1���km�;�D�[�	{�u�.�fr���G'�P����K��EL�B�V���S\�qkr��o�V����B�W�����sD�Wz}*����mi��>*>c,4��A<!�|����htG�5N��Z�U�\�KJ���X��
0[��{���[�9DvR�_D���E{������6�Y+C�}������Km���c�!���r_y�I�W�W�Rzp����O���)b�%)v�����m7���4��W�*Q����Z��m}Uk��u|���U��clQ���L���sDn�_T��[���a5B�1q!i��������
jA�1	���j��C](����,~����n�����=�'����#Z��w���������kXk+yIC������'�{��Z��w_���._�u���;�ftL���#��T?��9�����qC\0��aI�l���pJ
�TS8o&�C������H��W2���T��=������u;^r��U*d6\��X3r�c<���E^�t"���
i�\V���LS���\^���}����1��6�|;�������_���kb��<���������@��?�`���pG2JG��F���JQa\tR+��p�&���r�+�<�}���K�+���O{m���{BN����J��NVw����&����}>�B���R���t�YP\�R���)�"u-<������
�&��T�f�
�	�U�#v���*��V���{Y3��Fj��aZ�����_s@�?�1�n��T
�.>�9�������
�S�0���y����5&S'��
k�R/�������2����G�M���P�(�w,T�d��0�f�Z�����q�!)'E.c9X�MqklZ_<
�	��az^������3[Y��=�l���a}Md������
�*��M
�t��4V����c;��@�G8MJV��3��L��B2�Dm��^���S`>/~mr��V��0��7v�Jn*8���P�1������hE���-]������GvV���ecyi�d8���>��]{�mqN����u����R}�����t�XHN��*W���;���5�kJ��sr��p���}2�.:����5B��e��e�XO��� ������(���G���V_�:��FStb����*RRh�B����)n��A��	+���6��O������P�;+s���(����W��aE�]���k��i��������3�
g}:Yv�'����p�+M���R���WzUjm�N��]l{��.T�G��q��3���QH��dgyU�MpW%���)+o�����w'*��y�	y2W��g��c����}"s
6��=yj]^�[kF*����/�<�D�J���EzS�����{\���e����������c�4VYr<��s��iR�����cF�Mg�U�e/�)�o���:L<������*C��A����]��9�t�[&��DDb*JZ:E������M��������R
��^E�4�$��������U"�tx��FD�������-�/��R�%[haS(���$���T�X�jR���s����&Z����z��d�;g�DqG ��%r=�6Qh��/��R�d<���c{�[��D�	��Ko�:�6�j�uo��;UTBM����
��h�2�]��D@����w!4��N�+�,�K���Z�o���#p���M������*'M���(�9�G�8���.��C_t�[�c���"��{�|4���j"XN�N��0��;�0eMk0��XR��+�#���Q[����)L��h�5w�1��w�J���:���������y�e�r/U!�b����L ��R
{��\���2/;�9�-��'����Hj��@�2���-}F�?(�k�<cQIQ���D�Dz������(���k���f������E�e�ST�NE�����s�W�V��VV�3�z��7<^�$H�'{��1����8Q.cE������Z�lL�;��j�yGA�� ��m��8k�O2Au�Y0��=$��&�����:������U:�Q�L��D$��)N�%�e�U���z�Um��5��wka+��������6.����Eo��B���+�� 53��*��V�+K0�,A���f����UG�O��*l�x���MK�T��t�\�e��Qw��e�t��]�]�D]m!��`�;�U��K<g.��{��\\��
��L��]�r.I�
w[8�#�LF��N)2������&=�f|s0��;�n�!��zkz�W���70W�I6�r��:I��`�c��e&Iu@n��������������H	��������2�+$�3��%��ed������?�a���Z3B��
�G���\�U �L`�H�s��OK���m	�`m�*�l6��[����i3f~H�
��(�����q����R���J�
��8���6�T���_�p9��`��X������g*��Xl�SS�)�b����U3v��k3���3[��z����X	�(y���J������+�)D�;N���FJ&"�����r�f�4���oS���7��w% 
�����O
�}������T�~TvWf	�&u�N�5����q���Q4�*E�o}o
�W[ ���g�q��SO�D+>u��g���SQ�C<����J������kfM�xhQ�o���mM�]&��S����^��X����fSQvR����!W�^qOy�GU�I��o�0���}���:+"^�k.�Vm�R9!���9�����OZ��I��c��l�K��K���sC�����3���l��FZ�Z����!�k��1��GV�c����F����������9t��,�/6�P	.AAji��.�=�l���S����e�Fr�H��n��d��V��m&cUIp�C�~���Md'[���~�d�k�.�X���)��N}'J�*XQ�&x����2L���[n{��O@�����%��a���y P�~��-���a{�_��O�I��H��X��I&�Y=��:�.�+���k��m�65+��l�#'�|����G_%�**���*��h��q�d�2G��NOy�X��"��Pg�������E�,��-!l�U??��9�U�1��Z�X7f��*n���q&i=�r��������U�}R;Y���������V�6NP�����w8��';)��8|����f������v �V8��Bos����[�����.~1�����C89H��<�������KnG�W��c���:n,KwT�>x�U���N_���r�jO�kX��!�3|�u�������m���z�b������9�>_5�~���3:-e�B�h��9=6����Wr:�"�����S�g����d������s� �������L�W?�GUr����N���4��m�h-V���G�aPZ��+��)�\����7�D7fG-���������x��r����o_~�8�.�����zn���e�����fB��j���wM�����(�&%Lb�����������VF7�U�������W`�?�N�f�����n"����q;�fh�W�[�,J ��DK�d(�R��RD�6'SBX���;�yN(��bF���U�=>Y����HW��U���R�|O���������/�R!��e��Klt~�j��0k*��)j�6��QZ���\�?hK��@����Rn��v�����B4k����i����x�u	n����J�Ktzc�����w�>W�n.����{le���-���I2��������V_���aL�s��W4������v������s�X*[mlg�4v{�2>D����Y������4@��;S�C?)N�(����h�����X�uw�n��3��7��.)",���z<�	W�x?��0���������#��+����=�5�f���>LKfa&R��(���+��c��I��y���_�
� w�[�)�1��#�r�q@%���X��eDO�ujlU�A$�w�y�U|�*�7��m��O2=�����f~&�J�������;(Q�7��w��a��t�k��	f	c_kW����QN��Cw��;6S��m��0����.(iM�����z�e�_#Fw&�U���nq�I
��=�f��)k��b��
Kn�-�[���e
�����E���#�7�l�a=�X3A��k�l�;BgC��\~�h�"���{a�����6v�p\��*�/9���GK��e��m������!D+Y��O'��+������������,��;?}������yi�[�J�-.d���Z�51Z�D
�,���i�s�2��.&�Y�aI��jD�������rj4����^E�k	�a*�O�~U�^�:�o�0�Q��Q�I�E�wO^m�e%AX8bd�X[^����M7"��}�H�D���$5�r��;��Z���E�l���9l7�����D�D��2f���Z��X�}e�u�:���C��d�N�\����`F���J����J�h��'�
���]�����(�7Z���36I��ZU��el���J�r�R��v�p�����W����m��RD?�m6T��#�w���t8LQE�U=Que�U0�d��8��ee��U�C��%l��8w��'M��h
�q���73���w��A�K���,���,,�q����{����X-��&e�����xJAt�����NC�-I�Vm�B���j!��YQO�����2���\����[�[���!�t���ePqV���4tW'��L�S������~��N��R��,�*���I���I�c��E���Ju;T�bDZ�h�}mK)nO��Y���Mn�_~wm�2���GMX���X\�����2	Uyu�N
���{�����=n��1
I��T���R�NkB�U�ay\I���0ov|d����C��7���@����p+��9��4����{�������%]��b���r�+G���<d���~��/�(�mG�4�E�����y������������WtWv������= ���n<�Y/�D�����v������o�o�����$�WiqD��Jp'+k���>�>���zw'"����vl����W�������?:U-�#��a>��B��cb���Z��m^���IX��*1R2:���fiz������8,Yc�9��-�<�
�Y���f�������'�%��[��[v�P3����$2��d�n�S,\CN�������m#��u���������N/��m�J�by+7��Q*9������N�hn������)V���`���Pf�B:i��Wzg�����Z�����r{'����r���N�Ep���T�����rlm��w������^�ve^�iE��>O�
�z(��JD��f�w���y}�\O��*��:�G^�^iSr�W���}����2*yE�8@J�&st����%��.���	�Y�������P������=5�[��2�%;��.X.��.�4��v*c���e�0���8��I��l�$�L�
��I�iE�&em1K2E��,RF�7HXq�B�c��Q��	9�5Z��w*!�-��N�$�1<\�=�mV���[Xt\�H`����p]|����r}������_�ns���kQD��K��$~�Ms_LRk3o�����e���l3|�	P����~f�%���h��~�#�"��f�sl���?�%��a�Jj��L�}Q����VZ�^j>
u������3��RH��&M�
K���~�9NBKb��f�+��_8�<����oCW����XY���1N?�Y��H�-�b�a�M�2�!T��sQE�y~�I�RD��e�[�[L+�4���k*��/�+��5����IG����un+�����^����c_|<K��Y#�vkz�L�eP�����5�^��fP�1g����<>��h�JYDou;L����5����o,�]��������.��^�f;��o�O��NYj�����ic�t�������^���`��i;K�ASRL?gL�j�Ad�c|��KF�%������+)>Y���n����s6H�L�l�����s��������"�O���� ��'~�m|-N�������j�)?����E�C6�Eo����m�UQkd��	%�V����B��[,�U�����������'���!���-~r�����n�64#C@u�}%r�[Auu��V��`�������;[�(��56	aV��$�-d��.R9D�����"O��VTV�|�=����V0�sK�}o�[�q?
��0�����a^�V���}	���l)lK�ht\
Z�Q���b�#�����09.+�������D5�����)�*Gh�\��������2��;�0��������,�m%�
\�t����V_���'�2q-��������j-�o?�_����f\AU�����zG�J��C�'_�*3�u$���.Y�qZ�Q}��ki�MWn�����q�������M=y���o/�U�NG���:N+���D�3o����u������]r�b��>k����x|������$��Jo����p�������(��[�,N���vJ�;1l�Z��}��.?������2�9����,��\�n����
��?M��V4v�%��M��_`����'u�����l����TG]�9�������cus�1q@FI��annp+Yx�jf�wg�S^z�r��K!9����%�B�]�
�C4�^
��������O����!��O����o���p���������K�����$u��+rD?��e��J��[K0�����������)�0�L�P:�6K~�����QMe��S�8_v�N�������v���'�\o�����}�Y�??�y*\L}�[H0I����m'��iT�5[L�������-���s��~�h?��K�O�������t#F���-h�����UBJ&��v�����XU�s�u�Ip����;��R���(�57��ql�j��
�X�J�E��A�t�M��w�����+<��v��<��a��v�$-��E�;��r6e�d�������/��,/��f��L��
$�s}Y��I�}��KO��B�oy��<�Cf��zA���o��ot�;U}:Y2�0��dR� *�%;�HdF�S��C�H���IZ�rS8��H������D��Y]�<%���jP��?9%��B�f��oRUP��<�������|�v�����V��W�$�:Si�A�Qgm�����0�r��E����b����X�+~��?�
�u(�c��h�$;���d�h;W7B��g���J���6���������n�U��+���<0��|��.Z�����?��h��I�7����B�9�R�������e����e��V"yM��k=��MH��E>3��H)n���E�'����!�gD��{�K[��P�c��C7*�:]a������P���N�.�c��d��X�r��b�?�M|�G�,\0�)muE���ed�fd��3d��_�*��2�UZt�)���^3p�o���V'�z�U�B��6qQ��9�e��~s���������k=�u��,Y3��Cke_@%�0��������QZC��jQ���^��<�e�������K�8%���a�We����y\�A���F"�3+���P�*�\-�\+F��{u��.������#:2������vv�G(P�l���n{]3jY���/��+:���;�k��QS2��s�6�_�.��Q��>�GR�E�*��%k�n�f��Mn�|�����
���p�ZY6qQi�(��r�A�
4:N��]��Z��Td���E75�y���kB����V_��
��@�f�
������Q���f�V����X�����v���b����=�o�2���(1�S���;���U���������K,b�s������cU�f��,rC�������wsg�%K ��]��2��N���+��F�TVDs�>��Y;u�X����;��
����*Q\���4������KpK�R(
0X����s��6C��?����	,�T�gS%0�����p�.};
T�V_$��mW�9�'�aw6������p���m3��~|�q���mL%�G�1�F����F�_e�����b]g�����b���H�(�mF?�������>Al��ja.�}�];�����V��^$���I���3�u�%NLM�x���"%�.tT��w]+��"���|�_�Wsp_B�*���kn+�ec�N�����L��6	*����z��.�~,<M(��@v��x��.l�K�s��\�	n8l�|Y�)�+V��Vr�c���{J�8��n���%�=�}bT�Y��:lSQ�x�N�n�.?�H��J]7rlU���k+���t��l��8�e��mD'd^B��r���z��K��4�R���U���K�����W��e-��wWD�l�����?�+����K�J-������[���B��4�}C���!=L:��&Q���U%��v���&�uzB8��b��%�ViPx�H]����x�J���i^�����,=M&��R�s�_� ��u��!d<M�d&lr�����>L�����BL	��B���+�7��x����t�@�6��e�2�J>e[Y��6WK�(LR�!	`������hZ�f�2���'����sK6�NMX?���N53�p�o�����D�QT���I��t���JQA�s�R��?g�uK!
z���	e	`I���3��>��T�
�"Y\����7s��%+K���O�������2���
x�������o:��i~�5y�tW�JU��y�H6� rMM�N
��x�D\����mj�:\���Um����*�t9�}
as �8S�u����{�Q�.��
w�����m��Q.Z���I�K5X>�Z�n���;uEx-HMI�z�D��.Q�U�r#���t5�������%1��7����YA:�*���gJ��
�)@:c���UXB�z����-hj4��Ui&��T���!hYA;
Iry�Y�	��0Gp�_�(��)�n;�����Mz�7C�z�Y�/S�$�t��+����hI��Yq���Q��h���aBX��H�2���b{-�kuD$��O=���^z�,0�T�r�5���g����{�n'�����9U+��:��%U(u��q&��3%er��C\Z��^�J����;h�����$��g�P'�$g�T�J��]���t��>K`�����fZ��j��#�/������V���������l�gs}�k�gi����`��(��4�~������g �a>�����NZ-B���=���e[�P��rN�Z����F����#��4_BM��@���+���%Hd|2��<,�pI����a���>�*<������b�%���X-����������u�>'������_WC��p��L�y��X*E��$Y2�e���vU����&H�3\W�Io��z�����>��>K�"O*#��S:�K����ukD�U"����
X��RKAO��L���.g2Y��7�������2\�[��|����u���d��4��+������kD%C��(I����P2��*q���;�O�����S�G�	��8��hF�����������t��$1u�~R�-�rI����U�uej��h�����%s*k�k����|M����FlW:D?
Z�Ka(m-�9U��	? j��8Z�3����7�naVBb�0�=_��t���5%|��Qs&K�hK�r��KO�&m���� ��B��V�t�E�L]�5�������b��j��V����/
�>k���l�A�O,��^�A�B������?C'��|�V�SUQ-�k���KG�_�t)2��u�}<����-�q����[�03s��9�y��3��"O��V(���p�����Q�y�)<��H��^����8��!$���W����l��;]D<}M�}Z�:�fc��V.��Q
s�|���>�zx������y����ev�	�"��<��������5<�A���'��L�E���T�' �I

r~�L"(��N�g0�5���@�z� ����r��T���
�0$�"2�aMt����z/������{�j�:�e���ms�5��T��z�����@��!�T>>���X�yXqj�.-���.��e����w����KeQS`��7����3�{R�?]���V,:�����}O�����5�GD$�6O���T�u��Jy���bv��f�J�CRtb�X�+Vb��^�T�4�j�x��-j�i�.�a�����q?_����c�1��T5D�r����N�S���m/���m,���x��:��~l�� \������b��]l���T �y*^+Xh�%�K��	�s���v�����\}R����u�W$��m&�� ;+Y/����L��AuV��)';��;'�z���z�eTB�(���Q����MC3�f�1\�#b�=����1�I���X���]�����"���I���1��u<����C�u���8����Z9��r��K�1c��h��p*v�w�|�o�����%3��.�z�[ J�#�������>ua[[�H�^�@�je�o�R��'��TbX]�t��ml������)[e�~� R���e;��|���p���]l�KHn�������������8.[�.�U
���������C*�'����0*b��F��s��|]��u#���7��������r�������u�qn���x��
�t����7\�>=f�8����/2j�j�*��>�����WeP����-��<�U>���*�t�������t1#�y't����F4��q��1���C���������Ut"�8t;�d��������p��|t�Kh^��*������<p����nt]���LB\�����^����T����en�F�"�%�H�i��H�d_�ni�����Z�8�f��1�J�dfH�N�A�Lho���n[Z�f��+K���Ee$y�}.����d��&X���+�?Q ;)�J���*�M�$�I���-c�&���&v���9���4��Q3�T�,[�������������Y�-�|;���L��E�����Y��������Z�L���\Yf������=�S!N���t��B����T]}A�����P�:�#
a������Rr��8=8��yV��[�79zZ��t*�0��%�������u�	����:��o�����������T)�;C=:�����VA[
���Fo�	U%nq<�
\2��UK�����NG�Y1T�A-�l>|o����a3�7�l�����m;�NR_�b���P����Ml��m�x>��>��S���[�(y�=geWG���
����SsT������^�k�/&k
�jG��.�G6��.c�>�b�W������R]s����Q7����n���/����Pv`�������;��
�����l��+�Efx����d��&�v��3�[�+�1��1r��TH���Y
�{��V�Z,��\E�'�9��q�-oq������w��������J��IN��p.�igm3�W[�o*�����n������E?W�K{���G%��~g}��+��#P���:�s�1��|���sc���Q	7������s�h�{������X�mN��=���Nfq�����~���V��#;�����	�>wH�����K�E��Q�;
���KP��F�h�(g���
��zB��sPAf�������/"N�Jv-@�-C�h�3��Ok����\}5i�1�v.�l�E��\FT�����":N���p�c��fD�R�%Q��r�����+��b�
������PgF����B&�%�t~t�g�1TI��
���.���6J\�y��������B�-m{�IUd�%�<	fn+�TSS��,2���5��R�(W�9�z��������\5�O�`�uHx832F�*�Qh�~��u�P��B%g����"�� -rY�LeD �X�J���3w�����Xf	<Z����q��uT�ni��MHs�L��U����v��X�u�D�1O�Cpu�"M,�!&[s�oP,6�K��.~�S����%{~�5��'����}1^)���T}J����>��tJV������l;��3���������o��}�N�B�)
���2%4p�)�[+�4_#�5���P�t2��-�@��-���d������5��"m��Wr�����������N��n���+��u�ty
��%�s2a��9YZ�X�\?"-9W�]<�bq������*V�<64�jEQ"��5V]h[5�^t�d���(���ZZ��q5���3��2A�]��+��Y`*�<Z�7�����/���v��&��1yM����\#_st���
~CV7[���M�Q�r���!�^��Y���7j:��C����Q�	�s���C�j
�ZE"�
�������,�T�x+��[������1*e�V�O�t��M���7���}0�H i$�G>v�VD�/u+���g
���.x�K*�F'�]�}�jU�"$�?���?����J��5�!FD�s��H�����5��M�K�5P�K��
��0W��ul0���A1'4�]�[�?�X��q:��-����l�Ee������S�u�<h*��UB����b�7�.���m�K�%���P�-��;F����r�?����fS�+���������*��Y��N�����V:5dk�9aB���g��S�<|�
>t`[IY��/oe[�A������N��*$49�jv�]��(���{���,� �u	��f�����Ni������M�+E��u�i���,�u���
��Z�w	��BN���������-������/
��f�4���l��43"�^�����F��bS����W!WN�d����J��Qr�����-�����e�S�����k`�3�����>
cR��jZDWa���#+�X�V@�m���zN�y��d���T�h�T�V��j�.J�������
fS�l�N��'Z��o3���R3�*L��ak������X7�L+1L�k���ZM��,���3, H9���_�`�gJD������R\�.������%���"�/�D�0����������s~��z�ml���;���YX�4 ��V,
`?�R��[C3��t�q��ZCSs^Z�)jl�������:��������

Y�z�]&P�_�H�V�E �����t��&��T�1�v��bj�����by;~�1^����W��*ul��M����}m�v�c�Q6
���ru�3���9���}���L��i�t��4"9��;�{���{�#�9R��M3zW'��+n#M�9Z����t���.1�:����� p|i}�T��U�K����2{��G��9�.s���nS4��|7YQB#�6��'<	���'������g/��y�@l�v��J�]=}J����`7��]Y��]����!�t���~u�H���[@-EI����*����oK�����= ��������:k�����D��b.���n
�l��+���E��#���j��\k�&�'�\���^�����$��#�O'��;����;��p��{g�4��8}~��:_b6;
�i��C\�L~�����;Z�����i�=����6x��r���������8������?��<���.���l&;����j~����L���5o�C���
�W��c�BcVE7���]mq��h\ N����������'������e;��X������<J��;��P
��R��%!�F,���(V�);�W��	��E��B��aS�8s���0�@_}G<	m��.x�V�?�n�+��f��G���ts�q�|7.���T�g.-UN�t@<W7������7-��tz����R����8�x����7����C���K��Y{�������fvz�U����������g�F���+�v^6�s2��+�E�C��?�-sr��d��~�% Z��`v����:yQ��6�l�I6�P�2#������8�^�/��K_������bB'�S ������d���	T���G����>]�d�<��B�x�-��TC�T�����sl�i�O����>�]=�0��q�0�|�	TP��S�Q�����
�����1%0%��B��0
�����l_��W�B�������v�������50���9����M�<�	�~T��d��b�t�����U���I�-$���a��JV���0�!+�3�F)��-S�c��6���$���#-�#jR�[\���������^��\Bj��Bt�4��"�P����,=vr��e�x�����Zj��0��C7��EU��_��Np��;�c�YF�h�QO����� ��e�'�9�U����N������Pm��6�W���D�3�����CH*�����N�Iqf$_	V�	z���`=����q�hE]��[�Q�L�S]��T�zC�q�+��8�EI&����p?��'��K���:�Y%���J��Y5�W%F�8�FsL4�3�5���3���4�v�	��)��o�o�_ �8a�����HsS�jiov>�5����<�[��u0"��S�Y��4����~�9ZK�I�:�S7^��P��;N��t\
V^����\,���eMU������|����3����K�Ky*&g�h��h���1�U%���M��u��B-��R'����Q3���g��(�������'�����N���p��^�&2N�_���������;Ns��������zN�����O��xsb�?�"1y]l�$�M�:�[���XD0���S<
Y��>m�F��q���w�������Da���7@�������$��B�����`9h��_�3^��s&�x�cI��.�K�43e���}��R�U�R��zU7|�Kb����u#|Ed�|E���}&J!���p���j5�$1���t���qh|��X����+������Q����p����2��?�;/������e25��7<1�m�yl���W��n�W�H�oR��>���2��^5*��.���@�{�����2�������o���:\��P�|]����/����7f������p��2����y`="/����������$n����&���%�����1��~�[�t�_2:�^��Z�M�	V�\��7-���~�p�P;93iu��VNw�U����*U{�R�E�	�U�*��j�/V��;fE�i��_��[����&)=V��k����;P8x�U���.]:�w�"�U%�U�=y>��V��%*���/w�Jo�?������%��k����Y�IV�1Z��������-�/q%����I����-������)�����3���[6�1�$0��C�$lh�T_�6���W�������#��7�E�����f�����&U�"f�V�����/���<�z���Z�
�`=��mw7H#���wUIVQ��� �����;O2��9�������otwJa��#�I�X_�B�)����
������N+m�k
t��|����d��=�s��������u�o
~(U�c>RR����.�o+-�	r��0�)O9�2RF����)��
��:RS�?������nm��U�o./x�j��}�s���&_pb�� C�4��q���^*�`=CvC�	���|�	|�*cK���8�n|#{#%?S����L�����d��v��Vy�N��.����T������G���u#�*���
�w��c��K���w	h���������y�RKJ��:���
�l��=�)������5��u��o���?�C}d��Yw"��}���^�����������t��}=w� �|R�X�[��:���w>�j�A�_��U���e�<�]W�� ��|�������VDo�E��pN2�n�>���X���i���o�U���u[�%<,N_���W>3B4������r5g��|7![���D��D�u���x�?����|��(����B��
�m?�S8&;���v~��&X����<��\
�D���\p�2D/��[��bNI���6�"��*�
�A6��/Y�.���>�~���B�Yn<��g�p��%p):����]u���ZD~)�VxP�F��.�8��p�Oad)�%��O�����n+��/H����.8�IHZj���������sVf������,x��y?�Np�j}M
����Fg��W��,<@�5[Q�����8+���z�s�P�}.2U������M��T��Y\����,~����g,4���M�J���eh���,��l��.�V�=��U��XW�z+t>v����.\�6������c�����:1\����'��);����;���M_�+���xM�]���_S�����zu����l����md��j���9-�o��?��y�\��r���g��G^�����
���	����]������I|@����f�>UUT����F��z�V�9�-)�W�X���;�SI)]��]���=mj%��USB6F���u���D����y�E^L�0����|�\38���0����$�U���K\?� A
�5�4�MI���V�l�2�"F�H�f����k�6��`>h�����&��-�Q�	��������=�P�6�S�2Se�w���j�:n�_Z�qD.�k�p~d�����[�R�2��j~<����7WjTa���,���,�<�[�I2��-7yz�z��mo�y����-�`3&T�1v���W���\��D��^�����=q��L�� �S����i�8Sl*���{u���,�;�Z��RA���5Y�,��T"F~���5
)����{@���S��2�F����u���d�����l�}�5����oR�J�r
���k\��/������x\�����/��bq�fm��]���YY�=��!m��?}��PmUt�������D��w��d(���BgWC��Q���Zi2@>��b�^*=O�]E������f���]G?E��/�����T�T����a�Z���8�����o0�`F��.K�b���6��k�N[�E���SP�����F)��[�2�u�kr��������/f�7��"|���^�0������|����o5V��d.v�����:]�:3	�T�x��I�M��x��`�
��H���eS;:R�'aV�V�&~������K��T�N �Uf=��7�C���WU��zWN���g�jv}G��������H��|���#��f�?Y���nY��9�u��$sC��O���:�L<�(	u>�^`{fT���%��%��M��5�v�B���x��F���i�)#�H����� j������G�����	`	�DM���)����5Y��~$��yt����:�!����,_�?�`
i���OR�}��T��xbdx��r����%j}Z1��-6eC��Uwi0��������6r�d�����W�>��;}s�%/�:�K���f�Z\mWy���t������L��yXJ[��[*�Sg�oS'�*���� ��.9�i�K��:�-Yb�&��U�-W���n�\(b�p���xl;G#��=�S�2	U#aSV������������9Jb�����Z8\�M�v��z�����"�i}���Wf����a"��d[������Wq{wM���a�W����9��=	!z+
��� �m�YDMM�� c��7 ��mU���3���%K��:i���I��~{����)������^Xyn��M��{��X'(8eJg�(����e�i=�
.:�[w+>Q�2�6S�1��>e���9����Y�<V�0��Z�k�rWf'�{a�Uo�2��C����*���mVU���?��6}E�V�K	��wX���N�@SK�D!�
zo�(�������D�yp�d�	w=�6����P}k�D���'�V���W=�I���k��ms�~���`n���*���10��g����~�V��<�*^��a�<A����Y�s�q0�=V�J,m�*�-eU��-���kpOM���|2s���}Tz����w-���2��jZ���������>>�SXy��b�SRv����j�r=�Z[J�:<W$�+�����'���~��,����On���{�Z[��J�i�� *[�Q�Mj���sKv(I��,Bg�%�����������������Y[��P$��.�� �}:5m�F�w� �au_������j��<��n&�m�~�'��r�u��v�]*>���t�%U�l���[F��������Y�	zH�4��Y��L����VG?/:��B�j��Q���]4d��v�H�\��*��ph9W�Bg=!�Y�#z��r��rR�!P�6z{�9!��&�+=YL2���z��&���9x����=T��.�/�	�v��@V&�9gK}i���N[b�'�`F4�L�c���3{.����)���%����l.oC��c�����k����)���8e^��	�E���c
����&J�'mQ�_�L��4�7���L�m\�x^�n)�s2�4J�$���Dn=Jn�K�w����z�xM� 
Y�e���[��������9,k��l�;�|o�VR���{gW��a�����������j�T������!�E���8��VH��oi�6��}���s7s����Z���[�WT�y�HZ��\��y
U47/a������>�zWD7��q	�t{�����4�_*Zo��ZV�S`��N#e�V����8�oUl�2����]����M���?�m��ik�|-c��|����. �;��+MO�s�Z������,@.���i�H`�Y���OK;'H�tV��}�>�MK&����#�Ut�(����U>6^�� �K��U���)�Rq<���U7�juu]��5[	���(�����kL���;���,��U�y�@�8��o��.�M�?���=��z�
��D���[4�;�I���;�c�/L#��'�(��=����tj+�z��39W����n=�A����3G��������Q�j����*+�5m� 7�E�U�Ij����ri�G5����6�[6���U�f�!�>��_����'�����#�)cO�����smC]u1j�&�a=��Wr��}��^
���b��8_Tl��.�=�1�dO�6��������U��p����
�OM��������e�k$v������}��B]��g��/��|8���=�m�Cv�{[Jp��_RyB_���%��w%|�T�N�~V�=��g�3U����$7K�������w���2�����0v��� !�[2�i�L���c���Y���K����,�����r�w���X�W����+�(.�k��I�-�kwg��FT�EY�H�[�Q	�B]��|fT�}���j���x���?	�������V�������m�=Vi��n�^_����~UX3��"������>���96��	�h>�C��b����6�Mr����l��>�^����������`O��U��]&����R�SC��wn�UJ��0j
�����}:��c
��[��beO)U���p}��y���S�]�������o�F�}�R.�}/�zB�"�j���or�m���z�h>z�R���~-���l���
t=5W�%C��9<�R%�L�`y+�j�����Z�������j�+]�(;Azk������E�s�Y~�z���.���p��E��\���7�>�wK���&	��.���1	iR*U�y;���pN�O�U������7����tt����Qiz��U���>���2������,�a��r�������i�K��*�5�����'|DEW�I�k����;��[���u���y�W��f�M66��T��3d
6M��l������xA;�e�I����*�%$
~l��yW���q@��u��]*TbJ<N��/2���k%�v��H���T��J7��T�T�T�){2���,t$��P����O�z���N���v\�b�����{?��	�{$����{��A����][�{��i T�K9W�����.�_�6���\���x#[W(~�E�i�G����8K���H�a����z}�	�4?q�,���z�8��L?�^�|�cZ�xk�d��q�e��*�SU��hG�g�y,gm#����zv���
=��G)����V���������YUn5V�I�$������;�
=���4�=�6�0������l��z��%�X��j�0����`�����i�Chj�P��Pf-�
=�?
�x^|i��*��dW�V�.�%���]����������`���������������L�'�?��I��:�L����i�cY�
�,�Z�{�6�����_f�`���3�uh�������!o��]�r��������L���:6�1p����&@:��q�����>���f;Ls�5������&�+Bc�K�a���yH3rZ�G�Fj����]b��
�?��Z���JQ
����]�������>{���H4SL&z���G"��npi`��yu�����dvS���4���U�����j��?���x''�a�,xt���X7�p����lW$w�R�|����n�MO����e�5�����w�|�k��I��Tw
��u5Y�o�mw�X�|��f�����^��T�.�G��fk5+��S4:��q�]�f���Iq��v��4�"#k|��t���nJ"1�	\T}�]e�9X���s�����_�Z���)�6�;�s�5��;�J������3uz(��]���+�"��aOO�VEZ"4����zn���>a9*��1���D�����|+e�Mg������Q�!lP��h�}�UE��\���U�y�����.�l������D���EA���"x`j:���ncF���GU�za5lXo�"x?����OR��)`I��;���H����j�I���N(��L�-UG�F��/L��~�#�g�l�U���s\�G�A���y�p�8�=}D�^��yp��,gts��%-
X�SoR��3h����\W��Z��b��(���h^+�E@���Yo"/>TpZ�ok4o�B��rV�#�{��_�)�H`B����'Je�����Q"qH��������n�kwU���Wn��SW*��I	�EA*��k�R�b�Pz*Q�c�n�q=��Z����R��-��.=��n
f�~r��*�d�o2�r�+���F�WQ�����F�����+��D�P�?En@o?t���������23K�|�������'*���a�F���o*�����b���c�?O[G}*�?.�/p�i����kU�24�c	IH,����L�x�s������W������_�?���k�i	�x�����_a����^�?��T�ytn��S��Pv�:������oU��S>�����
�=*�-s�9j� �2uW������U<����*,����:^��+�����<k*��}�����l�c������?���.��'i���7S28��~)��i��e�����d�;/)������,J���5,����Jq�'�z��2:�:�d�s��L.��C(v*��:��c4�?3$�-���e�{[7�~Rm�H�����~��l|C����L1��$�?�i����ogg����"�sE�%v�_�|�V(i����*���7R�%��Z�Bmv�.��uw�*�~>^��{�^�b�5�g�F<��:�Y��G$�m�OR�QB(@�2�i��atk�����U���e�}\���bo�
��F����fs�N��gI�����:�:����>���4��j��Q��:���*���qN]��&���EJ/��R2JL�Fu��p8�"�s��[�ern�<�O��&�����{��������1���l]U 9"hJM��$������*�G6�;��wL�W#n���&	�l*�_�[�.N�?��~�j��-T3v��$~�{u[����i�������P��ZozE!6>]?��=��'j�T�����K�����O<�s�Q�U�������?��L���T;d�5X�?������^cs�Z��x�����xF�������3s���}��Ax��b�{�C�����~���OU�k���2��V_�5\k���?�C���}z���Gk��`�=}N�"$s��t�%`
��b��~�����6����M����i���|�y�d��4
��c�oS�Y���������o���
\v������������[����:�)q�q��w��)�tR��m0����^6LBE�MO��L��\|�o5v�^����w.�^^��p%V]�B��[o�7�'l���k���@��4a�h.�K����ej!�_n#B���s��g[�7�8t����	�9nu3�sm6�G��f��8j�X��:E�/f�oQ�r�Z[����-�}�r�����_~�/�==}1���,|(��T�1M�s�%3M�����Q�@/�6�\w�ht�,X�[i#���R����f��#$8;�z9W��J�\�8�c�4���z��\
M��9<�)�bLA:���Y�����X)g����{�/�X�%����C����U����c+>WA�����{4�K�������'hBy �����mW#g:�y�q�i!U�p��5�zk��(~~e��&�eT�@�_Wu�������_��G�a>�Z���_����!��~SZ� �gy�v>�f�Rd����|�0!��l����!�}�f��~��r4��T7mw+;=��Zz�����Gx_���z0���Q��[��/gIu
��V��7�L&�z���\���w��:+� C�l �M�b�
+���m^PH���0�|6ntp�!���
����0��kl�)��i��d��r���]�gm\��:�1~���"�b�9^��+�X�/����rq-�;>����6�p�8�E��j��u^7J��_|L�����6�7F�f�!w�q�S�Ij���Ux������:����x��=~��|�0�k��jl{��;(���[���l(�1c�U�b�{�:�������w��S>Q?��[L1w%�yb��%���0�_�<���r���98�7a�x�z����q��j��5W��Y,��D���-�mh6/���<���%V���-�q����2�����tk����Q��-OZ��A.�]O����Vb��vG
�M�&�zYX�=����9��Z���M����q��R�������k���~!�-��~�����],�zm�LS1U�X ���j�N��!�������n�T��z��0���Ay��#e��a��&\�7e7��7z�������uiP��T"����T��B��yN�R<WN<��o�r)���l�D�G0���Vl�u��>���=����l�~�4%�i���
��T�rS��#Al��A��B&���r�-�������M?��-�p���w���h�G�ns�v�k��o�T"�N�32m�p��^�����C_:&c�f�?��	���UB
d�J!�D����M&�~6��' ��<hj� ����E���+�����;r�e�P�����L���l�����N����O������ex��vDS�9�����Y�j�Run��K�Ct��O]MuXn�)r���]/������4�Q�rwp]%n��U�6��B$��~��Q�>������?��
��"Kv������H���]�~�g������g�Z��t�8��}%B~�'5f�8V���KC�c��/~W��o�P����S8��G�7�}�)�l�]����R���/�U#�����U��8=��s��=kM�������-�V�.��9�;�H��ck�h����p����:nq]���&����#�*�}��|K�0�L1�a��K��������&c���S�J6w���%)?�wCq~�z����wK:����o4��7o<�U��<�����y��n����������_�+0���9��c���G�p�R�!�<����7O
����KYM�v�:���$�:y�p��_��+�~������j�w�_m�m^�T��Y�����]�i�{�=�2s�j��&G���5��/O�/����8v�u�S\�P��U	��N��������,��X	���
}Cox^���w�;���k6������7��afg�Q3`�z?^�]��
�7�]@��	��`���V�{�t��^�������t�}Xc ������S�b�|L����] �4�[���o���/�������t��=����>�
#�uHa2u[WuZ�m��m�+�;�H�s�D�2���o����7t� ��	�.~N�`cE���	[��e���e�\��bUm�\e1W�����4����'������������|X���Rv��:bV���U���x� ��M��b-�`U�Y�_�D��E]L���{������V����L��t����O~:!����~e���'����XJo������aT|�s_�$=����t�$x�$���,�?�B����[��zN���a/s�'�m��b�g,�^��B�����z*� �Tx��c��=<�w(�>�-���mA}�k���w�������:��#|��^����h���k��m��_��������V�f7���Ph�j�8����l���h��}�
�8}��wR^YF������E����}k�������I����w���f3���,���)��>gE����0�U�	F��Kw��d���eJ�q����~ ;��b�5Ddz�E���%r��v�|XD�L���z��l+$= �L�-,V��#sV�m�i���H��������p\� ���o3^nkcbW-�n_��	�)�(@]�v���S�oD�ttwf�{����E�>��H�EW~�5V�'
�K`��(��?
~��7Y:g�E9���=��=`�@����]��M�}�r.QW.�F�Z�&���A</������lf���>�t';v�,�5������is�����������uwY,C�wD=��"��AW*z�<5��H!��{���+U+r�TT�B�3��q�1W���Z�������3����ho���M^0���i�f��Dc��?��l\���/���L'x�1^N#����/��]�sW�1�����p�g�TS����FN����U3"l��q��up����z���o�������Jo5Z��V���)��y�����X���s���*J�v�%�~��:g���������u�����Hj��OQ���9�j���j������o7�r�������*���T������V^o�z^�=\�(�����M���Wi�O#��.#5�s��3�\e�\e�Q$������g�����N&�x��00l�^5o��bQ7q�O��������D��hz���@��NNo`Y�\��t�b�f���:����m����Z�3�O[;�v��mY������l_���������=���V{8��}���"��E3M�v���������`�FT�fMpcSUH���-_l�zZ��M��vrR^��������MoD�\I�$��4OD�P\t�h�Y�T"1�-}�'����p�C��?~��y=�P�������U(O�\u4�������k<=*���t���2�G���[���	����!��C�=�2���4�RVb"�74=u�O��Z��Y������@8�9�P����MV��d����G���^�%7����_o
(�Qm�b�f������s�/�3�`��)����6�^��X�V�N������B�����@������j����������/e��9�;q��Y�v#��0�eL���gd��>-r��\���d��d��������6x^���Y�w��c�Z�p�J��v���:���Jz^V��3��d.�1S�l7~Z
����r�x!o���y'�
��%�c�.9�^�o�_����[�F{�%e����O�@�|.�j�l{"��r���r���
9z��D�N�W��0v+�N�
�h��N�Z$5Y
NW�"r�x]_n�����Q<<��������Z�e�R-��q����\x �%u^��c(��XW �h��R
^��!��
�C��KC���G�^�&O�v���c������Sq/@�=����+��b�iM1�)��4|mz�[��_������}��T-M��)��M�xk3������y~n�����-�#�x��gn0S�5UI��<Ua�a�x�k��O(��������!aS�����<�����������8=�!��F�c�k'�����������&�V�XK������m�`�������/����8���L%h�M�$�^%���c+�r_��C��;V:D�ln�)�if��jp����jp����������g	t��@J����^����<�A/$�sf����_&Gb���@�3a��63a������C�2����p�����f��)�W��.Iyd��9|5���|6�'�l58F�S�l58F�S�l5�~���c�Na�oc��~��N�.��9��+D�j���&jp�:����z�P�%P����k� \�jp��7�;:���4�7��6�#a��6D�D%��|�
�8r�6�'J"�o��� \�jo�=N|$�&�&�=�|>��'���BmP����%��+��64�
���hp����jp����jp����<C�j�F�C�l48f�W�;�����c������
N��pwZ7n5<��2� �v��9��?3tv�S�<M���9(sQ����a���z�1��O0�i�5<��S�6hk��=vO�7� Cz��E��������h�pj��ch�;������O�����65�
�W�#S�w��
�W�+%�(����6������(�a�5d�=9�I��O������b+��������i����6;�����{- ���4����^��1��}w��n�i��^��GS"���c�]��ZG3�O>��J�@ �]���g�^�Vh��'���w���g}�O�d�S���=������G������z8W�~����T����))��H�~����V&mH�"~;��1�:�e�y|�5W�_���J5�������:�������!��u�Q&��`4t�>a����e���v���z��MW�T�}&�
�Ja��T�a�<�*}&��<F���_�k5S�<F�eQ��8k�G�6�T��*}&��x�f��(��8��� E\�i7S�<F����}��E\�i7S�<F��l5~a�5~|���p��_�48f���O���a�5{��jy��jp����jp����jp������0�����4��W�k��v���
�V�O�:(���C�l58[_:���3���n�������}�!���5���X�Q��1f|XiJ9�����{l��7S�������-�h���d��i�����V��o����Gr�	?~]$��{w��>t@��3���1fZ&`�L�����K�v`��=��3^�+L�s6�<cL��r���o���e;5��gYTm3G��������Y�L�����7Ik��f���v���7e��VC�3��6hs�H^jq����$��$�9&���;|��M4=H��c�9�����)������	&�vw��t��=�abK���Y�<�^Q���ho%Ljn����}�]C��J��
|�$f��.�������������?��5}�xjxO&? �F�c����FS�������^gi���'��<�u��Mc������5W��R����h����7���>]fu��]\ Xgb�c�H~:�_��]z��H%��6���=h*?��+�y�������1��>�`�C:�OC��t%Tm~���������!�b��=�Sxn/�:'V��D��PT�����v8f��.���x��ub����� Y�I��
���������}����;����
�4�k��{����^��6��S�}^���t���t���58.�;p��4��b��3_Q \���_ry
Ts�?��6���|y��B�2Gw�Z�u�|^� x#ACM@���0�s���fZG�P���b�����wv��2�,��L��^���� ��5|���^U����V��"��;�Y'��s]��HKc������}����hj��	�^J���_�Ks]��{��'�/�����_�Ks]�n��r>Ml�7�������c��<�S���O�����yd�[�w8m� ��N�:�2�:�����[A>����B=����!�9bU��r������:C��A>P����B�Y(}��i�
�d;����?lK:C��w��#a�]x���a%����l58[�:���&;6�����;������]��Nvt%=�$������`��)��%:C����!��r�F�5��a��ca��*r���h����j�2����-�=��c��w����������j����%��s�9sa#�<�=��)mTB��f8�;����������RM��r�����Dx3d��� _CU�}v�'�y�)G�b��(

NI�+��7���G��
�|�~=�t~�����:�GM�%=�Q�$��HuCa�8R��9��F�^J}��5|�C^��f����p4�
y��(�s����zt��h������������?,�IO�l�]��2v.�������CS�hjrM
1�5��������d���]p�R���T���n���n��������x�����~��O������!� 
=�����+��5��%���D�1���+����^B�8��2�m���NG������G(�6��	��v7��T>v�1����(�1�@fW�nR�Y���f��bY���Zk�����gD�����54!ABP�!��~�/�T���E�����8�P�!;y�M��(B
�����������(������CS��_=���?��$w+g���;��g��_�t�|6V��`��T9:���z
�'��E#�8O`�mM�O�������������`��k��7���9,�6�	?P�~�)��%}0��$���=����Y��V^�S�hmB��8V��z�H��wDC������r�\}�6yJ	��'�����9&��$���@a���6hjr[	*
�h�w&c���=z�
���!�S�{OS�hjreq	�!6	���[��W�SG�K�����j��k�O�a_��V�~]���#��&�����(<��s�%;�w�PT�:������������{�]o�����m�[8��CS�����v�\�����dw6�%m��)tU�CS����o>$@$�1�9<�����)��7b���1�<0�/d�9���j-��$������xJ��o��r�[�BV�tK����$��]K�E���2iKq��]�����	�_e6|��\9���7���b��{|��
?T����.�H����cS���#�|���mL���T�������U��4:�( ��
�� �&>���*qaDP�!ABh(B
��XQ
AB�@���x�����#��^�/��!���+��
��_P����{��B���<%hP�������-���:%H�b������#���0�����@� �!r�����B�@���Q���[^Q�<�:6���{c?�gh��cB�)�5��{�G���C�aD�i��#�yhcdd	cG�C�'�r����+�%�<T���N��7�j�P�����$Hl��W��d���u#4d�����@�$p�%�����U���(_� �t�����}�73J�0�'y��oC_M��{�B� �(B
�� �	�p@q�~
��(NP�
� �(NP�
/�S�����z������������yd
�	C'�fR�k��
��s������ p_��0�+���r�6?W�y���s	�hr���������c���1��_�������C��4{m��#=z4%G�@�>���;�c�>��1�M�� m��"S� $�Y������<��/�3�1�a��rNn�{W�`lH�Q�q��C�jh(^�=C�����#������1���������K����J{�kh~�1�i�%��q������_�$Hl�bR�E�����i��O�8��T���z������!��&�����?xJ�3F���?�X �[.��P�=��)�r�8�����|��S�!AC�T�AC�T������
��(~
� ��*p��0J_NP���������h���������r|1�����(|���>,�\_�.R�|��6@�+@����g�
�D�5|� ?�?
��+�����]�y��@9D���Xf����o���>�:�>^?-X)Z�@���D@9D��^�%;��P�(~
� �(B
�� �_N%
 �� �(B
�� �AN����v�����������b?k�!����Kj������R�s��R�uM�+o��;��w{9?�����^~������{�pI�$�^z��lz�)��>�%F�Q�V�<4��������.��@&G����=4f��T���D����w(C���/�
�	\���8�{>�� �z
��4�x�#a��6_�K{K���(B
����4!ABTw�d��Q!O}���8�&�=��?���PT�:�}WY<��?�?����X����=�����p���5������D��T9��w\O#�����=/�;�<3A�e���hti�#���r��M���?�����|;����U��g�C�T���(~
�0J4&�����P�
 ��'����9�z��~��2�33�Dz�_�Kr��O}����:G�;������������Cg��N�~XABP�!AC�T���s�'|�}M�~�nMO�p�`G�=��Q!9D��eq~�P}��O�b��<���8��Dj���"���������G���o
���2������X�9	�,hji��g��`Y��M>��r�S����N��s��vL]��a�������B����a|����F�_�71C��K|�������W�n���;~@�����}�z����:l��}C��:��d�������i��.�:�>��H��4t�O8<>���+��|�=�a[�>?��b�l{�t��	�h�����.��z>���@���w0�:��A:�>Ru�=���w��� �[����k����@��
���p�g�T9h���4�D3�3yci�b���x��!������������f����@QO�������T��l����'O�?��q�~�Kf�P�����~l����n9�PR���Es���[��Ygh�������N��z ��M�x�V6������H8M��C�����U_�1�}3`���>_�
�&��>4h���?W����J����SD��?�����J���}n��������%?^�Q�W�����S1>��/+c���G�,��E{��|��I�����R\�C���|������3����u��&���[��3�7D>���I��zA^�����I�'�|��H#���
�����.��c(f{�99���r�5����F_�;���H���g���I�H)������q�tw�'T|��D����%��|L�A�8��g(x0t��Ey�#4?<�\d�����H�|�������G�}�[:���~���.T�$+�B��������=���{�&����pP~�Z����1`�A�H�o��(�0.�������U��Qgi���#g��~F�u!���������[��|��Q��1�[���c0������eY�[8Uz�w��4�.SN(���C�e��m����	��@������}��s}d��
�n�#���U��q�Ry����}��1E��S�I�4"X�(�����j�����i��	�(x�j9�:��{�?�����C������>8\��K�5a�����v��N�#�*7�wu��v�t^���������B�)��?o%���U�d�^��#���C��&��}X�cU�nf�XC�w�����6+������Y��x_���AW���Cp>�;K���G��q����w��������/n���W��G�7���z�>�:\O��9\L���?i����N^\��������������(p$��9�?����m5�C�8��G��5%��]KCUd�?�!������<s���w��O��tg�?E}�Fh0<Y�7�o����+0o��C~i�Wa��;����:G��8�O��8l3�cZw��^�kO=^�+2V�?��%�A��n_�C0x*�p�s1Y�y'�l6 �<����4-��'G��:n�N���oO�H����?��w+/��|�a�{��#�:����l>����1������S��A��e�}�����#���+������|��)����h�=A
N[����|���3���x`�q��`�}3���x#���I��N��!�@p����O!C��Yo�8�� FF����[�c���?a���h�{��`#��`�8/�G��<�:�>GH����>�8�-N�I�����EOAE4���t�3�%����;x'�g�)�����u��
���I����v���p�:
��2����r]Pn����I�����8�GD���������	8N��q��}!�4IK��B0�)=`���2Fk.A8�)<��R,�?�6n��=����6��|�h����$?
���%:�??������i���}���v�O/��^N'�Dn���ke�����FmM�;����Hu���n����X����?2��Il��>� |}��gA��x����5�����M���v����#4|1�<<�'�=N,BC����;q�p3�]�%��*pk?�8���"8��3���3���`�"�Bu�{�����#�L=?������m�Wz���������e�aPN��t�}���w��pL��tF�����P/�������X��z}z����@���w�Uc�
t����v�GC�{�nZE����\^
��k0�<���+����QN������_�m<�x=}W�;�4:
���� #����PT�:�$~g���g�|��J��{�S[���N��s�����/`�/�.���������8�gO�����*B/������������������|�`\���gv�z�H&T�������qq#�s������814� |�0ByLY�d�x���DN�����6{������s�Q>}�U�����|Cx;�?��s�+`��������_��,�:�i���������?���\��H������;U����>[����J��o��+7����������q����>�R���U����t��O���/}�p�s�G\G�iqw<�0z����^l�d��\�R�>�����������9�#�}�t����J�|4��&!��=��u�}�w�w���w��>�\W����#�#�t�����E���t�����s������s��e�k�����8_���f�}���M��R��n��w�wP����9/�����.����d���s���d�	B��%	���L�g��������A�u�W
$���7��O[�:��q���7���e�C��7�|�%P�y#4_|A���K�>������n�T�oM�%V���D��A�3��J"M������N[D\��_�����%���NG
[����|���0�1���F����qs��a�d��8(5�x1���|��8���`tO�#4v�t��=�����	>z�zG���@o��o��&��sr�����	F���}��.5���y����>?N+��"7	��@A~��f���4tF����C�6��}�c��/��e����8�����9�s�.s�GH��q#�#�#�q#�����?�O�����Wl*����,������0��;+��+��A;��<�
�����]���8 ���S��}���o��;���ed�A����?��Fhp9���F�|��x��=�{�:�]������#�0���f��3���w���"{���U#�����6���~�����M����_
�)/��;��w]?>q���%�%�~;�U�c�< ��C�_��@��xc>^�~!�����|��XN>��]����o���G#��)t��j"b�Ns�1/�S�!A���W��g�R�t*g3�}&����i.�8F�C�l48f������@��xu��'i��������
���;B1��}���r0+��O��0 ��c�e�s�?�g)>|w��*���`@t��'��[ ���P�P����7�i���������;�G�6
��K�����/����������c4~��<s�C;��#K��d�#^CN�F|���j$��k�����u���������������z������I�p��������h*sA4\�
����IH���0�����/`�,(��N��.��[����E_������O�^�^�����$fy���P�^��z��z[�[�x=uu�/]�����e�s�������#Z=����y^YmT����B4@������,�O�,)��t�y��w��V������)���:�>_XW��d��/D%j�T�O
�����6���j+rv��@�����9);Rxg����l7���1V{G��\!��:�~���"�x����}�r<7��w���t)=��=*���=4����V�������@���?�K����*?�[�~=.��(��C:���\n���I�{~��|��������t��]���~N��=.�@|��e��������)}�R;�
��u��u��B����������P#��+@&����e^'_����k���{H�~���vtg�������bh:G����f���')�rx�����Yc�4s��=~�O�2%���%<��������%����'CU���Y�5��8^[��K{�c	+�T%�Cx�����o���� �(N-�����ABP�	�~k_G��!
y9�q[���m���
zi#���9C#�%��}�`��4���4��@BI��&��x���j'_[�����G�+.0����n�_���V?���8��
{t`��T�j�����O��u�Po|�;v}�������UaR:�^(A�8�D�Q�d���QXH��Z7(�z��z��q@��Bh�1��>M �4��{��L�G��A�]��(����'���G��=���'��n�h��_Z~���qs��:�>Ys��_����g�aJ�T�;��*���j����k������J�"�w���8Q�}�2��P��;���u���%����/�'eq��>�;��_k����G��Yr;���\���������NE����?[�G]���8����7#�q/��xR:G����A/9��W�>�����2����w���b}��{��f��|s��8��7ZFv���.���N��|A@���p	�{�!��|����T���������'�x�r3�\<Fu7P}�t����O��{s3�q/
�{���o\s��s��|����8���.�F���#�|���:G��u�����0#�t������?[�G]����8�kq��AB}4�����\������K��L�a�C��1����N���a�����0��1���nY&�����w�9M3�������W�;����9�#�}�w��`��3�#�#�q#�PHq/���^�}�s�����R:_{-����q�#�s�&��~@��i<����#�|���8�����#��S�����s�����s��;-"�t��A�~\G����9��Y:p:��>�:G��#�#��>��$}�#�}�9����:G���8���t���tq#�s��s��q#�#�}�q#�qq��>�:���|�����t���s�GH���:�G\G��~H�.#�s��s���G��s��:G�����GH���s�_|���>GH��G\�\G��:G�����GH��GH����>�8�����q��|���;�*H��8���9�s�s��w�.����#�}�s��:G��9�9�u�#�q#�u��dq��|���:T��i<��8��#�}�q#�s�GH��GH�e�������z��������a���K��c���=O����d���@NZ!����Lb�������W"��5����w��YY���`����q�AQ�Iz]��p�gF~�����'�~,*�py�?�=�����Md��_~9����wW����!/��N��[�?����qaT���~���+����DI�$/78;�����A�>��;�^6^��#��0�����������������tOr��a�u��~k��u�����~���R��s����:�Y�w�������hwW���x����P���>\�tOr���f�~!�<8���8b�u��
}���U5^����c����H�����x}���0�q�
g�������^�����L�w|��>��{�d��q#�Ehqx���t��J�
��u-	�
��|�B���9)�?V�r�6~������,��@����$��������C�d�8e���0���|��G_��Fp��%Jy�|o|t��aP���!���%5�����:�>G\�9�#[��N���#�{����8��������s�./|��{�����#���>GK%Y ���:�>�~\GH���������4�v��>��S��������l�W��y�u������8!�;����G��'���C�������6�p
��!��g��_y���o�%V���5���6�L�~��O����t��;?7���{��\|3Ca�4?5�
����z�a�pM���6��z�a�pM�����f$;�����h����`0�=��xl<Oy��f�������C�c�!��[����1Ow��0�o��2Fh~8�m���Dx6�����2Fh�=�����{�9G��D�����x�JU���VFx����xw�qIw�xjh�����l�����GN�c~���<G|58F�S�l58F�^������B�}z�I���449F��|(���\��|�����k��b�}?�9����|�����.�����$�����&����@���f���s�<G|5|�M�����_%�jrM
NI���k���������@��������"p����jp����jp����hp����jp�I<!��S�����R�a�i��p��S�ll�@�t��6�/�_�Z�}R��O*�%����(D���]��|���H�P�t~��k��L0���|�B:������}V�(:}x��H;�?_���;����8�}���s�.q
��p���������r�6�#:\�'��:3���!A���O�F"��Hx?����GXy���������$�����1c�b�$P�R\�N�p)��%0�����hv��s�W����
���Z!��C�m
~�����'��S�m��|q}�Mi��O���8���.�:�#����W����i��i�����2��?���9�9�t���#���}�s�GEx:G��9�q#�qq���0|���>�}�j�.H>GH���#�tq.���B���;�������;����|���R8�@���:G��{���>�L�A��/�H�����d�Ro�9�� w�m0�}�s�_�����qqqs��|�����#�}�p>�����A�>G\G�GH��������
G'zt����V�$�������a�� ��y>+
�������6?�~�\�s��;��w8}��
�Jc�m���\�}��G\�>�8���	Ux#�t��i�l#�#�#��od��^{.v}0}�8���9�tIl�u�#�s���#��8�\�}����P��>]k���qs��#�u�p>GH������OW{$����k0�q��L(s��9�t���>��>�ts��9�#��>GH�������#�#�t���u��s��:^D������>�8�����>G\��9�t���#�#�q#�#�|�������#�}�qqs����#�v�>C�d�|�������>��>�9�u�}�#�#�q#�#�#�#�|���|���>�:G��9�q#�s����>�:^��J9C���:G��L qs�GH�vQ��8���9�s�A#�s�GH����>G\G��9�t���9�q#�t����i���������>��t����8���:G��:�>GH�����������N5L'���sc���Q���`F��0��G�{��i�����'�����b���C6{z5>���?0�������c�r��#�x|�G�F����?G�r��r���5�c��8b�O���@�t\����gK�� w�{�_xP��>^����t�G�H�f}����_��]G�?0�	��w�t������?H�9P�����;_�C�8~����������>P���}����}�����
��np���{�Y$�	�Iy��`�AS�8f���*3���8��Y$�4��A�^�������?��wo��1���a�����aNs��^-0w1�U�|#����;��:G��G�hq~��A�:���V�D"��Fl)
����
�*i���q'\�L���L.���������~�u������MW/���_�g.#{�?�����?��<&}�m�����&�����Hi����������s�Q�J�4b��r���8����X�x,�kRs�$5Au���/���3�`�)��L�	:�BN[�w<���BQ<|?}��� wx�>V!W7���������{�9H����U�k]s�v�{�k`��CL��u.���E���u�!�X_��q��rGj`�+�����c�UC��d�c�k�v� ��_Y��CV��cS�rt����~��r7�?D�oA�������G����a�9������A�����[�k����	��i�5"��>��=���������t�L1���`�YZ�1k�v��O�>E�����
"���t*_1
-�Z��Yt�9l�:�
=�q![�D�'B
��
	�"�$�9�:�t."q�H�G�t�����)#;u�6������w<��p��L�g	��dRe�$"������|0�H"�d\��dF���	��a�VV��4@$�$J1y��\�C��W�q���?��^��:���S����g����LQ����	?G���v���k��`�r�H#�d_���"
��K�4��c��
j�j�Nz��k��K�a�� ����S�U+u�O�
��������0}����ik��f*��J��:����=��E���/}�v:*~�������3���>j����W�+c�X���oS�?�xl��w{��G�9Xi�*�C�O|lgn/��U�����3��o��&��R��+�>B58�5��I�
<�R�M���Fdg)���&�����Y���[t������>��p��h_�M�� ��di��S����T���V�sz�E�����v���w��g��m�>��HU-�� �M�U'1
����E�Y��?�������C^=Wu�]&�����y�#m�T������J{|���������������p� �����:�
��ie��A����<>-����V�a�����JR������C_���}�S�:��-\_3��0�/�>r�<s������%MJ��������j�nQ��#>��y��p�NF}�i�x����%+N<:D���j?~�1�SV���1�hL�0�\�����8���v��������cD����r�,>�����A�ng��g�&P.%�ab�S6���Ul	e	kHR!��\�� %�a:D6�������*4.��\�S���(���\)\	������t�?�@�l��Ul_��V�o��2���w�s2!2��W�e����fLT�#�R����
D]���D����\�+l�H����\��5F\(u�v�
�v�(H�C�d�H��~�
��t��O@��}��v�z$�.�f�R�n��MJ{2�f����G�|9>^�%ix`e�����eX�kU����������y��m�w$�W^��4���Y�w]�R�p�>���h���!/���~����|$��>�������`�&���_�$�L���Ez*�m���o�����`xg���_)ZOZVI���3�Y������zh2H����u���|*Xb�Q
i	J���%������+\�����z?^�9�0b�N��R�>���H�]����;'�o:�gk
Z�UP��I�s����.��A`C��P��
�6�����y�I�Im3��z"�m�?�Y4�"�!�J��$_Ry�^>2�S��Q�I��4�U 4�C�����U�~"Ds?�ts	XVA�-T�Q��A����MUm�I
~����Z��z��:D���:�=Nb�E���.����iw�5��K���0��YJ/��������8�<nc�%,O��G^�p!6t�����!������4�}de�^v�M��?#��2�O�7��-7i;Y�</�H���E�����"?��5�lh��G�C��H�����X����km��pO�TOZ&�_N|���`��
m�@&��b�F��j�bQ�gMyz�"�FI4���?��Y&L����J�[>��8�������x��vG2AuR�(�Wu��0��Qu�r2���t�����4E�'��!��UA��G�-����'��}�uI:�@N��m��v����H��+�����HC�
U��sH{������6"U}m��B�9i7��L6�Mg �������,~���2��������O%0�K	�6&Dn��(�JR�B,Y�:�+�G
#O�e��H�������$�J�z�3�������Gb�$�7u��Z���t���������G�
&�$D����Q����-=�l��zE#H?J2��FCE�-N�&3�>P�p��~�b��p`��(�����S�i�nS�^�k����R���f����9��b6���a�&��s!SL����Q&����m^���D�Q��������RD�8��8�M)-_dF�Z��2wX��oS#Z�^����2���U}L�Lv��v;�8~b~Q�\��fJh���,)f���� ��4����[��:�M�8u]�T��eT���3<���gC(��`v�����%�|����� �����PpGi���A!�����F��Huu�)>�t�q:�)Y����JUA��j�|N�����!nsS��EE�k�{�7��	�*Xg���I<����G�j\�:F��kT�=3�DtmWh)Is�;)_p���>�G���z����+��$�-�>8�q�R����������t��0Zc2i�ju��=��z�*sd�M�`����$o�@d_����������~�9�kWxY�H�����v9�
s@�|dM�������	�xQ��s�}�������?JmI�D@�?�Rd�"W8H���0�Ij��7���\�0�Z1�d2;����<����������ZH�B��<�(�#
����;m2�C9UX��T�����^�JNJ�Hm���D�����PI������z��C���$C��r��B�;�V�����v��CE,z%�t6��t������"�F�,��D����z���#RQ�����?�N��QI��g���P�F�#5<%���a{:G0�x�Z�A�U�����%��\	�y��.��p��H�)��SWb�l�y�lO*����f�j55zd�.Jr-th��SU�U�X���
���A,����p��h7��w���BLl�v�k��Cg�Z�I<-��,M$"o�6�F�9'��e�u?K�dp�d�����W�L�&�J]_:�{gO�ee]Lj
V��R<;]�j������1`���
���]���Y��@4�{�����9�rr+"{�>�������R���az�����x��l$�C�������ad�4����D��#�	�~f��1����MJ�1��13�u:2[)�kR��B=�K���V�h+0��r{/#������J ��v�%��]��=�Y���(���������cj�������SW���SL4K����-��^�I4�4����yb:{"���q�&�VN\��x[[H������O1�A���FsE��d�U)�A���a��li
6��Y��*�t��+Y~��d�s�M ����$*�?"��NseRn�����C�6�]24�t�G;`��<zR:�@b2�1'{Mi:����T����R����
���e	e��t�����N���r���$1^*�G��o��&�����F�3y��5�)�-Ix�f�Fy~������t���"Q�a�f�V3�eXW���5Y�LFhY��������7jV_rs�(������`�S�_r8;b��h���@�*'y5�%�_S
���,�,uP�$������Y�Vo�V�KL�
����g�A���UL�3�N4����}S�'������"���M��D�+�����W�����h �� ��B��X������y����4��rx�PE�W���%���mhBt6$$`���h������������&�_��Oz��zJ��]S�1�dnQ��[��'eG��*����&��{V���0�~�[:cj�B9bnhV��9�N�	�3�@%��!�!SkN���+�������N�#�w����]�0\��@"C?�0�e|C2�R��!��O�Y*N��b�r
l��G�b
�lO���
���0��S}��H���K1��T�����#6�
��|�D\��t�} �)����C[����������<.*ih(}��q��t�Y��:)	�tz��t�M:!"��U����re%��5NbcD?��;���-��.�>Yw*�����_����)��J�Oy /a��MX��)�mUG�ro�c#!��)[�T��������8~z�Z�.��$`]�3!�
��r���A����$X�V<���Kt!h����6�/����p�&%��33��ai�������g��+�&��M��;������;�����4x��X�IF�������~�s/�qnE7�R�Vv;���d9��y�;.�B���QT��<���kV���Q%��U2h�1�u�Q�d`=��������VV�X�"�R�;B��*�Y�U������������X`���8�B	]����'u�~���D�R�������� �Bi$@��J��*�m����qb��8
%j��'R%!��br�%n�c�[_�#}%>����NUr�H����*�r��Q����d��BR�53!��77~e���5��/�P�,��$C�xT�'&��%v��� �|�H���J.���%
�MJl�C������O��� �t��3@,����	��
S��N-e���2�!��#�YN���J7����f6u����d��Y6�*IX+'>�?�<j�d�dX�3k�SVmU!�v8r�����@{��s<�b^���\�����V4�!�aw����rB1���r4��iv���2�0S�c44[c������b�&=��L��^�O�����"uK
���i���%rt���IO������A-�%��)yB*��
������S��
D6`�#"	_���99�T�M�fV�k'�+�K�}R�����r]*�7��y�{D���lH�����������EA+!�m�}�Lh����	���\~�=qM-baE����V�:����W���������0��A
�(���6�7�M��%����IW�X�1�fq��T�>����RBZ~����;�>�]�KJ\����4�6��Z��g��
 	D)u:���A�r����m�.y<u������^i�1�P��/y1\�e�fzBLP�@�%2W�lX|����2����NchJ^�#I����c(r��O4V�U���[N���
�)���d@56�e|C�YW?/H!�I8
��������V8#M�i1���#������)�*��l��>�xr��
h�`�jt+���?z�*u��U.����I�%��/���g:2���!�8�o�i�t��cj<���SA�!������A��.S�j�2�0Q�V��A5�z�/�$e�:�&��]Y�L��Q��fPx~���������@/�Y�t��i#kEzfd��Vi�Q�4e��A]Y�Hq�<�U�K1�N������	���J	���B�^����j�<��y�.����_���K���2�2�����d�L$��F�&�H�d^���u.I��K��Z�L�^m��6_���G��= ����er�o�f�Gj�Jk��q��R�����h�j������h��1~�>�I{�R����Z��[�����6Zh-���K�k��gX�������)[K��Xj���teH��d[����R����$�K!�("��0�����=�EA�+:������b� ��L�n	<L���E!�FA��P�l\�g�����'�oAI�]y����b/��Y�;�^�ESc
��H�,�U"��<���,Z�(*�26N��i��d���S2r�q�_E��"�������&�T�VT�+�~^>a4��/c^k��]"�k�I�T���g���'8�*�
R��i�b����lSq��&�D���4��%�^Q��m�T���Q2�j�v��wt�^����iUz��c_>����	�#G>�d\�U���E��L�t��k��]�Y:�D���j���d
J��,�z��v-���B���?����]j���c�V�#z,W�]��<|���Y�X��a��d�XNG�� 6SU���L���W>�Z�w���~����b� �,��:�[�f��"���
|g�T����W�@]!U+k�����Y�cAV�'���������Q$>�3I6vh:��b$�W�K�u<�u���2�A�����-Otl��Z������Q�6�]|��E�E�)�@;����m��1�����B�XiY)���c��k���x#�d��V�����:����H��qZKi�+Y��D����.����PN���6?�X��T����o��ev�2��������h�B�W=
����2��z�����5!����-i9���_k�c�)�?������������T���2� ����'&���o>�l#��_�9cc���k��A
�~+��������
2��S'�+W+R-V@b������� %��z�	�o������)x7��������'���#����l���p��E{��V�����q�5��q5g�+ (����j{1�������1J��Ft�� YTSS�q�Oa�5=���cN�s��~a+��}F-����vHR�2U����B�� T�����	����g��c[7mvu-i`������������������n�3��N����p�T�����v����|��^��C7���N�
2xpG�a��	�^������%��U�;t�S���
���)�o��<�P�~�w7d��� �$�7Iw)'����������8l�^�*�����(,x�u��gd�$��mWa������	)��b{	c_d�6~V��������D�m���/~oR��������(��?����A��,��e�C�M�+'/�@j}�$h�ZE�^�Y�U�Y5��8	mr,�*��$=-��c��"���� �I2��F�O1��gQ�����c�6�\���{��0���c�iq�����B�w�V���~K�o�2be{����"&}�z��x*�x��~y����[QU���T��hJ��k�V�I�x��Q�U��M� ���� o!���L�d��Q� ���>nr3+&���?���E"���l[����@���"��*W�a�� n�������7���e���_<�NS�._���W�d���S�U�&� n&���.��I�o��7���3��"�"��k9���Vl��lx�	�W�����O��	�U���ge������A����d���T��V;^��)�5��j{�YX*R|�o��-�2�
V6>{d�Z���>d� ���� o�\���]��{�Z$l����j����q�cA{M�L�WC�����d
��������0�#6�j�	3iUs�R���'Y$D�s����S���t�1�K������*v��|���4��
G��vA(C��b��B��@j�)��	bm�fM�omKt#����\GE����?O%ui�*YM�o���#<����0���L��D���86p�E:{�+�+���u�b" O�;g7rO|����Hd����U��:p���s�Q����d�3��3b2���*�.���z"Y��)�U�<jT\��������ck�>���h�Vj�N2��E����T3� �;H�[%u[F�_��u����lV��Q
� ��w�����?(��Zy�8f���1n���yD��]��0�L�v���������J~��Q�\TMi<�1$��~v��\������iy��i�f�/�mW=�b����,��9�-�d��*~5�����r�d5�qZm[c��l#'�������6,�$[z�Gk0[���u�����5����n�d�
46��`�k���YN�%Q�S�n�'�Y��l������$���!]��*���V�2=�]�C������j�f�<�
�kE�2�ZV�8,��� �����/����]|������b��[dY��^�u�5��D��x,�_���5�{RS�>�9l��U}i���mx�Co���q�
rmy������G�E���b���d���Y��*��"JN�����%C���7��"5��
k-�-MuU�#�"k�2j�q�#cV��������&� �.r�
:�"%�U�D.��3���AYN��L��r��cr�)�b�5V�q,��&���R�Z�Sc��K�;������i���Ga6�#+}:������ ��
<�eM�nD}	o������T���� �a��2��~��f�p���xl�Mm�u���h������q]�)���6"������(lN�F>b1���&�ZF� ��_l��;�0���hB�|z���)@��l�G��F�-B��?nFC<6������g�]�ov�I�Z�)[�K�������C��[�a���_�^o?�P�����{�W�.�-�Ow��_z��z ������ho���]$�-�l�8��.��.�	8E���
4T3��^r4�~��J���rL�[��4����5�4��Y�B��Ya����S��"��6�:H%d�D�0��a�t�#G�rS#��<ihU�� ���2o�4t�l>�e%��~��wrE�
����E[��l-�e���5dtK��}����~�v�g����+Y���f}CZW���|�Y��A;.i�-vAm��}'�i�`�f�R�MV������
�6*���)`0�mUth������7sS2&�6Q�&�.�������L���|����)��!�=
��b����� z��>G9�w_<��j���A7���^�`��c�������4�0VI�W����C?s��@���!p
e�Vg�|�9���iuug�>

0�����^U�d�����D��*���;�Y�������jK0�������/-p?BC�Z�21?���H��Y�!�~��Lcz&6��"C9��Y���d���������8�Q�
���R��?��Ka}$�xAr}����.$��V�4��W�n���X��d���j�B������k�.^cw3��}�,�w�~s
�3��,�T�Z���ae�����`b�l��e
����~�����%�xAr��1I��+����
�u���������zl����qa��o��v&���������}xF��<4�w����Yn�]����|��mb\�B�(�������}/��`^��@�C����O��D��&[�Hc���z����/���N*sv)�E���8����4���-���\�3
UG~�Ff�����^'*J�~��h����@��������[Pav���������E ����x]�' �g�����5���a�����Kv;�2u	,����I���HB/�G+����6Q�6���Ek���Q�/`����{�X��1��!���uvq�����g~�����5	�c���p��+C8�x?�����{�S�>������	�����?x!��fj, ��O�W(��5n%�M��M4���A��v
^>	Jh������
k�f&�a���W����gP�P����L�+z]�
J9Y� �/�HG�:zd4�}7�VY��0���5��FD����hL$,�������)��Jw^�V�\���Y�N:��4?e/_!q���� ������v��P��q/1�8��U�����W���1��y1�`)�/����&����G'y;$��Z�����s�5|�a�,-]$$���y��5o�,�.8���:C���t����e�k_�{���Gvs����3�5s��I��������5��s=�c��g:�����Uk��o�gF
���#��'�B��x�L�p���2�b�����:���e��H��E# �������Q�$��n��w���j�^�"bl�=a�-v��#a��������m}-����\��9�5_w�t�vv#���b
��vAVV����/w�����F�����YT���m��>�������4&0�5����!-�2������j��}k��]���5[y9����d�[����9���=�G�>����P�u�V�'S��Z�fq�["���0{ ��4>�eu��%��E��I��W.�A��V������7��1g�� ;T�<| �������.�H���������k��Q>��Q�����=e�w
s��'���H��Y'1����v���z�X��om9b��7k�h.�R=�����1�M��]������e��������mC����W&��.��jWY��'}xA��������&6��5������
i��_��/��aQ�����D�� ��x�p-;[�{j#k���G��'b ���7gl����?l�T���0�wD=��NT<������������ ��vX����z��;�V����Iw�e����\o��L3"�Z�+g�0
�
�X$OZ$@6���� ���"�bj�Q�X����l�[fM�?R��w2��>�7o�}�2q������������-��}-�`&� ��D��Jdq}
E�%��������6���#��s���]�s��j�%,{&��V\C!���+>�s�$~��t��p�;0��k����xX��a�����	kS��ef���L&t�c�J�l ���u�=75�Z��e���EG$?�4U�$�9\�9"�Ob��H(�3�%�g�*5Z�<������g-�H�H,\%��y��r��?�qN_U�#�{�3R2�e3����b�-�3+��^��dd�	� �a��3�����.�~���(�����&ma�Q��r�]�tZ�p;:g�Q�E>b�b�.-�Fu@
��M������F�+Uc����t#?b���l�����C�N���cJ�q�8g�"�#}��8�����y�eqVb��y�E����g	�b������J����L4�]X���d3{3j�;�!����~��2:��	��j���t�"�[F����k2�Zx�#*���:�)���U����/���Vc[djY \�I=r1A|�+*��F�YaX��=����9-���s��%Zzd��&:�8�.2�f����j��9x��&��5{������c)�&w.�����������u�x����������G��3��:��v���nZ����%�`Sd��X�\�G���/�?��m��K�*���W"�����
��������Q_���,��S��t��d<�7����B�����kT��EWOS�X'#��'���IAQ\�"zd6�h��U�w��!��TL}*�v� �I4�����K�����l�KW(Em����(5�����[=����/al��[�dU��sL����e��v�mO�}���VmV�	(qfrt{~�����\��el�V�e��v5��p�	���Z��B�J������J{X�,�t�D#v���C������Z��d�.�T�L`OJ�����!q������;�f{e��q2���j��/��A+�1�����F*qj�f����Hg�������l�n���f��E���="}��S�����,3��!I�����"8����r�aqd�vV���\��9�lf���W�,.sJ��'����@�����MwX��sl�4��HaCU�����#����6�`�
D�!�iO9,�.6��&Fg[���%"����8��?n�(�T���q�\��[��3
�$���c�D�`��Wc�=��Y�=gp��8�Y�����nw�"N�A�q"�ME@�3>��>-yW1d���
2L�*)�m���l�mP2j�"�!�i�dy�H"�
A����~�K���rv|�}�����g���PV$%<U23|M���l_I�o�u���^�G�[ZB����2{2�~�F���2C[�jX^'�g^S=,�b��L����b?����\���J�D��!�e�`�,�0���u�:�<0�P$jZ�����	V�e���t����>[���1�������N���!�	1��]Gd+��p�cJ2�,���Kv��k�:B�H��\�[lWk%����f&���;�"Q��?�G882(:�:�����"Q>�5.V	�}��^���A�~��8A${����lzk�e%��k`�-m�92����J���e��R�l4���^���{��S�
[u2���E;40$�(�;>���5����[�+���G��!\�\}���3���yw��y�F�����|+��?��<;T���*�:]Fm�L����{7����}�����yx�8�z�T�y���}�8�����
w���	����y[�������+�/�K�..`�I�ww��W�o3w���.w|uo~��oy��v�[M�9=s���������w�Vo�V���x��z	������{����_o�V�)��v�d��i�i�����y0��^����z���_:9��P��d����Q������n�YR"���N���{��
��X�nf��{J^�����L�����Y�*��EN��������7}�	��7���dVE$+�����y���>��/�O���}�����<����-2m������]H�����S�V�O�>~�ezx��.�J�����}�3�����Z�*3���>�?~�4i�;_����U@��Ec��9������N�^q�{>������3���g����V���4�iu���������s�<������������H����d�N�}Q�iuTK[�]k1��*&�V���o���J�
���f�2���pvbu�S��������?V���r�[������h��pq�j$������|
��+�zR!�����
�/�E����o:d���D��^��o
�.��g����|�{b���������q1�W����qs����w������I�����5G���+M�Zz�[��?e�U<J����g6�,���������S��+��@�c �[�dN��I�2���6���S�������KU��hHg��|E�fs{����v�_��m����=/�m�
���^��k����i8�&FTp���������d���r:w?�'��l���j�	��+��O�����y}6o9*�=%��<��������+~!���1���'�W�PG���s��������Hr��g��V*R�Y��R���Zsn./��y��z|�Vq3�j���x>���7�����������=�~����=+*5$F�G�]G�<�{���_W���C��X U�@�����������^�E)'���y��]�� �w�;�D��6����
����XE����y����������A|*�w��Y	r.����\����������{�������<�����__C^>l{p�Z�����m���;Y�����a���u�f������[�1�/���������w���7^�
�~�
}[��\�y��}e]
I���s��'ei�k�[���le�����eHx�&Y��a[�y�T`
j��_N<�i�-�����j�����^o��P�����o}�����"��k�T��V'o�������5*z�X��)���C+}}�f�m����]���l���(4���}���t���{��R�t���
�q�i�$^�T��F-���^����f�����W_���k�y
[4W�K:���d��O�i�i�c�)Y�����)�[��*	�"������S��U����P��v�{:o�d|^w������;}�9��.�U��d�X���TOT�)��AuL4��������B� ��s���?�f�{�PkR�u~���}c{qS�<{�t�����*�(�z��o* ���\T�eo�o���%%����k�u�=����2����������2��>Uv�J��B����?�^i���w��
��W�Pa�U���v�KnfS���IqN��E%�{���/e)u�����;��
�f���u����f����[��7T��}�$���{�Q[5C�{������"�����0�7����,��N������H����iN�������u,�7�.��)�t)r�i��a��)�Z��@�\XT�;l�����m;�T:����Z���n?.�mI�\g�Uo��DpQ�E�EIq������BKx����4U}����9D'�C�H���`aW�������R��*N���:S��%+�j�������<|O���<_���d���.n��s[�-����?
HH`�Rqy�c�p{�{���f���������pSN~,�N�\�U���z|mlB����R��alw|0���=�m4��������V��$�X:�J*Egj���W����e�����������ES����:y��#��3��u����aO�o����^�����X��B������sWy/��u�*�H)���Z�<bY�*Y���UcIEE	T��exU��J/c�==G��,���E�7Y�\�B�b��qu����?��}_G�������|T�jZ�NJ���yw����
����Ls��r������'�����D'��.A����4�H�R���:����g�9Xg�_���#��R��#,�tG�}i����[�s�,)��~���N��7��v���}u-1LtT��}�����?�y�l%PZw�D&�O���15;�e;+�~!��8n����OT8}������J%&CY{��� <m���I}�8�6��/f�@��)��$��[$�h��w�lm���\z���H�R#*�b�+vu�<�ff�F^���}��E���L|\���
��������W���&��t���}O�{���S E���r��nu��Z�Z:�B2�Vn����Gy��G�������C���2��-��G��o�[�z��<_�d[�r���W�q�R��E3y��@�DJ���y�~O@R���^���x3�8DA;�,jTc5O��b����z��	O��]�O������2^o�[��J�#Lw
�+�2o���U���q��=Uu]�d��
]�����f�-�![��iD��\�}���!����=T�������2wmQ�g:������U<����q�������s�*�vJr�>+0,����O}H��P��T�?�����R��J��-���c�dC�������U;�^~_��&�$3Etd�^}�C�X%�����*;�#j�����~����W��|��w��Q�*����dZ��+���T��9����gA^si���d����V�;�����S���+B���u�]�J���S������Yu��m�����.D��TG�4n�4�T�v�+�.b%;�;�Q������M(jy�)`5V�p�����rqVH�F�QIM*������)L1l�����e_�\&�8O�D6�t����aWX�S��v�N�vm�1�+��K����V����-N�5��djh�rI��Rwqy ������\~J��B�����
MS��,?��K�J��?h���6��SGSd�T��R�-Z��<�[l��O�tNt6t�>�O�rl���'1[��&��r�Lj����1�eJ�oU����^�>f��vsvT��������v������0�h{�A=J��������r�������}����y�xi.�����.��;�;����������[o+��'�d[��^�>��gc��NB����UO���
3����������Y�����m,�i4�Kp"[�Q-X��
7�0S@|�Cs��m����q�c��;t�H�u
c�G����}�9�,;������V����{���B��fr�����
��K�5B:�����Mc�����D�5����?�BpY����7���&k����v��p
�|����E|;F�4/U9������P���9�o}�GXI&�Rg)�C��`4�A�V!E	e���;��d�.s�{���������u���j���}q3AjRKi��!�y*�,Q*`�D���B�Q>?v+�)�:�"���p2	���0U9�����^�s1dR��z5���>��`�\����j�������6�	>���g�w��s
@�<="AE/��K
8H�e�f�aJ���@N;��M����12����%�L�Q�����g�0W�kC 9�B_x2� PD�b�^����U�%��P)�J����;��`0"�8a&=@��	���%Y�(Tj[�+}�����������je�N�v�~���\>�55�l�4��gMK5�.���p%�g���>���b�B���0y��������o��X�jd�3�$1q�����@�..m�A��'�4��\�}ONH:����K(2Rj�Ti�������K5�R�)x�&�4�
N��~1L�"��+5t�X7��M�����M2���Pi��%Pn�w��G#;�$��D�Cl	$HZs�q�P�H6�$��n�4�qk�&J��c���0^|x�P�<�;:}�����@Q*�,=4�N�����d��TMpQaz��U[*�b�9{W�R��4�.���-�i�@�iV������\=����t�f�1b[��%�s{��F;{�����sU��)^��MM:�vvL��.@��]u%�
�!��n��$���7D�a������hE�P
�l��x��4��o�\���~��Ap��r�lBg�7A
�`���	],G=�%S)A�iz����R�'y��;��:�p�I�������Q
*��5������#�)���7D%F'�l�l�FH�Uj�jX�G&�mx����,+vV{c�J`>��������Y�9��oB������zH��b���=z�n�����V���Y�"0���0����V	�`�:�3Q��/P2�x�@$��*�A���	e��������&��)������dj�����e:��^/O�����j��o�l@Y:��=#���e)�������������/�;��_T��6�������o/s��TD;@Ly�����r���	`��Y�L�������Aj��(�m�9�0e�0s�������MT�a ��Cq-H7����}�A��8@��\�\Y���Xj+�eZ/EJ	��#+��l��%\3,0��[V@F&C�5c�
H��T�xUh/��D)s�6X�O�0\�����K|���
NC����tG�������3F�v�#8g	 D�^�{����bsx�bI3d�{�9�_�;���=�����x<?��qh�I7��:�[��'�_{Q��-���������}��}c�w/�L�o�W�@4�V*e����,E���sg.�K��y`���i��f$
�;���l��D�M(:���}	��kC>���%ay��t�~���a�1E+@������n.��r�����D���+��I���������w�
��t�8N�*��������<���%	�
Nn����W��������b8El��0S��	W�W��wiz�b��t���W�Y�w������������%����o#�����/����s�]��#��.K�7�����M�I:	���������&���m~a[1�eo�����������<.�&��N��I���Y=�f<}op�g<�)i"P+�&���h������iJ��K�D
����������4g�r��!�8d�t&��������-�-IX#��:k&{���8���V�R��_��{�����g��o����{������������E�����dT���o�������M�W�_g��*�h��F��i�M)�Al��O�����;���#��KWX�E�&MI�y�����L1�IS�`YZ)������D�����O������
����H Sb�&�-�#}�+��8��HYFM�����lm1��u`�PI�H�Z�&�D�wBQ�'��-8Lq����7����_	5l��SwCJ$.��}D'��c���l���y��O�F���38Y��tU�$Lu|ty|�
, 
�AYA')��|
0ElJ�LP��l����X E�`����P�A�PpJ'��
`������A�ZJf*��HEmV��-�y.����[n���kT�X����Q80�ZN|����@�U�H�G5bo�U3g~'/��Oc�m�&5+��T��kg"�����#=��k������n������~������0�C�Mg����Rd��~��o���hL���}��?�w�������-;Bv���FJ�������-�����54�����7������QU�����[��GA����U�"��a�ga�W�)��G[�y:�~.>G+���_w�Xx��*�4��k�j�m/�^O|@�N$� e@]2����,!|�m�$����D7�����`���&�$���?-�����\�B��spX��������QJ16&�}�x�VX���W^^�)>�#a�E\�m�������Tg�m��r]�mr3�G���C�b=�N�!�0����i$l6���^�`�$�����	m`0����� w�	6*�.I��A�&�k�Z��s�PJ5S�t0!�'�:�B�.>��c��p��s��.���V������8;����}R���2��3��X���6�%�����[��P
�@4>�v}jo��pA�'�jQ��D�t�O }A	2C�����P����x�5�e�6�s_�^	H7�P��h��;J����4YPQ�h3��[-����O/����<��mk� ���q�:z���u(	���I8����Mi�*��RS�P���G����2���i�
�(q��1�G��)��$�e-DP���FEf�&:+��R������J�N�O��h��6��d=�E%q�R��Ne_6����sf�8���*��)�m�*k��i�&*����D�j��V����'C�3;�7v��A($�\e�]Q�������"�#`����
��
��tA�����\�(V��F���`�����W�-�f�����E�f���D��R��%��]aJ��X��#����g*tU����,��A��Q���$yBJ"�J��O����xB�kj�%��m��~c����%fv��*�C���oNp�V�al �����	L2�`j-4����-Ox�:�&U��%��{Gc]�����'d�t���9<~m���6��;�#�%y�n�{5<�bV���~��[*����	e��D�K0V�b_����3���`t���^����`�I�C������;4��k7(�a�8��m�,��%:9IR�FWbv�+����o��;�/��~�����7�����x�
1�5!f
���4��<`00`�"^iB]d�y(�-��UK�$*Q/[��\�hJJ&��%�d������W���1q����J�W��@L��J$
�M4�'L��&C�:x2�N9�gM�/g�V^k������[ �\����NHZn����_3���p�M�����o�������3P�m�|�e��$�I�Ts��_(����Q]���<�B����|��
e��N�;+���0��HF13�@���U��N��T�"�S���;�h�c��?' M��`��z
����^�y�L�E T�&z4�$R�J�>���������/��y���,�):Dp�	e��<:��p������d�$��,+�����1J0���g�3�f!���K
�2k��w)�
�F����:&j
��yva0�S����&��9� '{��~z������bz%K����!?�����J��N��I:t?��oF�����HQ-�4J�����8�J]>M����I�H@|��N�(���3:OH����������6D_O���p�( <KtQ:t���d�.0��M:_���
t9���	�dR���A���%��[P��[���&5���q+y��0S�%�(L�3��(�
v����f{t��*�q��/�|)��J&g��n�B�~�����;@�D�������U�)cB�uy]Ro�����`HR	��]2���?��(�&.Au`<���cXX���F.��<l����
m>!yI�����}~����\�����83���������k��O�
�P���y�����3H=�T���������hg���c`
1C2,.���rB�ZG�4�����0*�R�\r^�����nASk�9	����r��^w�����O���h8�bku��a��u�o1��
�XP��N�M��H�q�������q�����1�l�ksb3y��R��b�W�����lW��y)�Z�UX��`�����o����;�����>����v�D}��y�"c�NQ�P[�&�B�`�K6�����l���d#s�h�&����Q�2�U�^��4VR�=\]ZsF(�C��#<�����4*�b4i����J��dVD�(�Tv��r9��!�K�gO�YG��R!:��E�ul�8���L�����R�5�����D{?nQ�1V��{Y%�\���g�d�]����[�]�h'/��0������3-gm�k�
�.��{�7^�Q��=�+�(���.����f���?O�T�����//�xv�2�[���l�m����m��t��`�HK+\���O��QY����`�q���>����	p:�/�C���L�������a_�5�Wb��Q,�'���F#�]�E�\[�Dh���K���F���,r):p���r��|.���a
aa��$�k�J#I�a��!1�L�p��cD�jW�"���V��e�l��
}TJ�]0@5���blH,�F�������\[)h��_D���Zg���������;7lU�]��@�>�5�V�B�s9�`����h0����
f�P<�q��K���Dh�0x}<8�xN^|������v�������r��N��:(j�YZ6�"�0W���`$����b�8a�����������2���'�����(�	�5/H,M��
�.��|(�3���<���R�K��>��[Q���fr�%�6�����F)\�8q��2���P���2�;S�u@�^i	�������j�����v<�}�Lyu����[OI���|!88���_�R��3L�2�
`���fb�M��u����P�����������p��y��TcP|��k�)�������Kyl8:�Y��]����
��P�5�N:����c\��=8~��T+������&��l��}�5
��!VwB���3��#������q�T2�47���(��>X�����j��PZjY���@�����
eU�BY��M#�n�3���p�+Ms���3i��W�������������VWC<��y���V�q��q�3c��)�z�qz}����J���Y����<����ww�?b��7�����n�
��yd����g8EeR��F�V
�0��L,.���b�}^�@i�1����\���W���_���k�D�2TJF��&*$�B�#4�����U��!�>�\���$�(��
�� s���.����-��'O������U������<��4p�}��O�\�z4�]��g�R0k���E�J(��B��}T�d�
��(0v%���$��mG�D�2>A?)������������]���gu�� ub��=��5I�]���w������^WZaJ�,�����"���}�l\���F��6��Q� �H
o����h�Y�����xC����}���f���n-���J�-�����	���mA�3��7�����zu]^u������������//���|��v\8<7���b� .�Lq�^Q��x15�������'R	d9g�"��s�@C�����$�M`2���
������y����������S���
�
j����=O��o�Y����������O���[Z��a��7�UD����
�&V9BXeN�id�?����.�
���iU9)�hk�YKO����~Q
���h�(sp�d��9������Y��	�80/L�[fy�}�=M����|�e��3H��2�'�=����\5/]q�u���q���-���%�+2����0nO��������I@���?����l�o_�`���TE��O���n\�9��������q��v���>Tj7'�N��Q@N�j�F�����l% �:�HIK�7���c�;���p_��O����N�.(������� :�V!h���"fsgY�����#���~$\��
���6pi���.;����p+��
��{i��2jQ0�������)Ok�kq������X"W��ni��*ibs��;�SZ!����������,���&����\"}j��$�&$�����%r3�mG��".N7�mL�3G�-���`2��oO�PG�]R����D���S?���j�����LU��]m�,W4
��v�\'-��b�UV�����~����WoZ�_c�]�6,�@`�� �io4�&u�!@J5����0��s�����Bz	���x�D���u[k��'��Rm�i5�����H�8��In�I����q(+���OW�A���Q�bY1�U�<�Jm~��po����`��e��[���:��[,��!����J�auJ����������v���&w�������	(�P$96m�W�8>�����g4�Jk��$���� P��o�P#����T	
���p*Z�x���.�����)���dA���$:��F�������E�'���m�f�{}$��V�����y
���a���(�j1l���l����.`2�������x�&�2g��:)�������"��y����#��k,O�����1g��{�V��s~�������m�E��	�"��6�!�{n�#m�^���w9�:3�������m��W�����n3���nJ�;K	�����e"�#��[����������q��b�b~o�����9�J	vS��o���
�@�]��;��y/0yQo�����o��;{�ZU�G���l��c�=�D��c��y^X�0�'ZR�Ob�R�!ys�P�����>@��L	F����^iB;KpkB��%&.f&����6m��09�
��$6��HL)�8F�[v
������J���D����z���]�B��J���<����
���I����UdLO
��K!�L@�e=#�I��c�kJ	���`:��� ����8��<���?9���`E�d�%2O�;��z�dvu[|�����f�(�I����K}����(����F�I���4D���t�w�����V'|�O.���F$�n��B_��x�SK����*EG!B$M������
q�H	(\�]�Gd�����B9A'�p:�ub����AI�.�w}�~$�&q�A����y��/e�D���!���	%q�����0�����X�/����x���([5{l�j�u�ornq/�7�z��s�z
]}�^q�-6������k~N*~m���[���o�x��|;;�O�i/���7�����-�u"M^O\�������X��"�W��i�H���z�3W���n1e�Q�9��C�,���+$���L��"��Z"��/Z�,w��k�f�L^�m��s���=Ux��������#^��}5��W�i`^m�"C�W������emri�GO�]��7�>��D�_���>V�5���^�4�a�_��Q0��k�����u_/]>�d�DQ��u�����J������Ir���������Vh���QP����DZ}��//<�um�j�qy����!��P/=�(�D��O��{H��l>���U��tx�=�y���������U��$��������<N�5�}m�Z`E��:�bD����_^�o;�L���6'Ii4 � n��1���P������P��$� R��G2�Qa���P�8�&d�`^KN���unU�����}�6F3%��z���6�����j�K:���$����k%�w����HO$�F��s�@D���NG�y�'�_�� ����sj-�Ta���� >[��K��$�:����e�����E<�	���p��Z�FVv��K�Kw|�l�?�zl�����I!-6!7a��n��XC���Uo�kl2��1������J��LVH������
@B�d<Z	�F�����l�w�����j�_����	jh��e[f�����Q�?I��s�	Ws5�7���v9z�y��'Y�'w��'
�i��03��S`	M��8!���0y���T���.�{�?HN,L���8`����I�F($�PJ�d08�������@c�s���p�7����H��(�pv���7V�=�z�H1j><j���W�.X�c-�K�:a��Y��F"z|�����y]��(!���DUm����]}��������Zu�_h�i����k��e[�n���pH(�j�Kp��Yx�����	�?��Y���n����`KS�B�����/�_�&��\���Y�_D�nw��/-5�zU�g��J��2���� G:�@�S�-�X�p"��k�f��4L����O'�E=���k{�m�>t&���Ug�s����������2oj�8�T�.�����o,'��������Um��w%�2��ds���l�$�o	��4�	�Q�s=��O�S[Z)Pn
���t5�\tw=��	D���
C�9�����
���O�jk��//��K�f���\�T���B�a�K��_�/�T�Q(d���Q6��ls]��"��KD���)������(����g_q�z\���Um[D���!O��yC2�8(&2�V�����B�ve��5�|�`Y�X2'@f�mJ�wA��P��'�2��8��}��'/s�)~A=�,��������T��3�u���/���^��x��j�lJ������U��`%7S��{�,	�A�"�����J�����4mf�
k������qm_c���V},�_��{<�y��&�p���;���-�q�LQ����6��I��<����&�I.z05��E>�������R����#�&��s;H��u��w_�����Js��p�e-�����J@sr����6�~�Q\���y=�w��_1&�*�v�x��`��A����w)t������>�&��U|��	q��'�9����P.R�5�%�NY9�8��	0\���~*I���V��3>VO~Qsk�4����mz1���� :p4d�B�L��,����/��!��G��b�<�2`���������s�w��:���y����.���dy��(���\����-@eZ!���*���H4W��$.�i9��������4���_�L�	9��)M1_'�Oe0|W����7����=��9
^��(:��������)��X4��HuTkB���8L�%�;���`����%7��A �c�Z��I������=�#�tW�l1�����
��1��]�4��,���(���P�F�}�#�g�-b�����I3��{�ao��%d.Ks��L9~#c,�f���������r��O���Kr*�d�`���[����_������\E�?pi��4Q���5��t���U�zh����1�����C���yj%A�tH92hdP5c�MQO>�vRt@I��=������T�z��1b�D�H�H�n���%���Cz�Q� ����d���5q"�;�!Q�m�����������7q4��!5�J�5�����k�01�O'�����c��k��������a��$LK��fP�F8.�\�LqJ����cW56_����5q$���0�[G&KN(&�^0��)��-6P7�<a!8�`�*�]��:@�kh��=W���t�o<S������1���]TV�����
�X{���! ${�P��"�S�]VD�����I�|�W�������k~���\37�h��9�p��O?J/k,l����X��g����P��{��n��w��b������5�3�t������F5�����;�WrNk'��4����1�\^��!�D�����f89b�Y!� yx�;�r�\7�K�+�<����I#��Y{u���*����/��{nn�iC�_N���l�`�������������V��=�qs��g�@F�i��s38��@���T%�%��6!�[����9�s�PG���4	e���t��)e��0s}
����c�U����9%%�r����p,����tI���
u
L� �O�z�'H�/��v��S�@&6�p��Q��'��Me���L �
�D��� �[A������2%���x%��r������7��}���	��Z�]W�lb�6���-Q�[�E�>������U���Nn��}2���}V���/*���Q����U���%���+�%(����5M<o��R�0$�sN�~��@]�aMj
+�r�@��Ckc��x������61h�[�Y��R���W�n0,��<u{#������	b)�Maa��G�7��m�.K!i�^������k����j����u�����?�1�����
W��g]X���a%4�KCo����k��1��]��W'��e�PP~iJ���b��Nj�����d
t4PB�x6<�6�q��n2����lM��@��
��	�j��d=i�t����?���kU��~H�Wn����?��$b������^8k�by����m�������M�X��!�5`/%����h�z��c�-.���tMn�O,��2q���!~�TYdXp�%�@e'	a��I�(K,��0��p���!z�;�(��U�����W@p�6�MV�6���%��8�[���?�F+p��=����-I��F���e^�������s�+����L�2�[,M�i�W������s33���
���[2k6&�BbK(VS�fLP���P����(�����}�q!�������FI����'GZ�J�S�/����T��$�� 	�z�������kG���,�5�c6�jEGm�Y��U�H��c�W�;.$a�Q��������������\�z�	xn�O���n��S�|o&���b���.���_��/D
O�����-�gX�&��y�`�c0���.5[���_7�����x��mE��U�,�Z%K9�d���������a/��n�c�K�i�eC�����/��B����{j�ym�}����L�O��N��a}[LE=����by��yU���3o������S�,������9�y2h�3_j�D���L����%U������;lD@U�I�C���G�y5�)���EW�"E�8o e��3s1�<\��]S�Z���2(�����{���5���@aF���o�b�i��&Y���u�b�$�#��%���>��9���"��!��1J�]�>�(65� �����W�N�����k��i$A����xSkF�{���Xfi��@�0�?y����
�<_
�S��.�_?��Ef�+h}��S���z��`���F��y0�K����r,�H&U���a��3��E�=�n��@�,k�����+��S�*�6[�>��5.{aMd�g;J����w�M=���BP������gu��(n�N�Y�>V�aOF�����.*�B�~�s��Mp�U�T�fr����n��pJ�*��y�[�k@a	S{�V�/����Kv2�v�#F�q�
`N���L`'�'|�~����]�a�
�:��d��]��.���������@/?'����f����g�k���oz)���?�P���Dk�����*����������1��U�\���@�}f�5������K�e��|T��6^5J����|*���}�����(�`z%>�
�.}0�8}>h�B+�%[������z�>a��@�����P%�`C�%�>�w6C�U���b;��>�`����A7��M}p�W�����kpe�;����C�Mt�W����cpe�"��$��(-�A�����htdxIg�O�2/e��.O�6�G(&_�m�>����`J�ol��v�cw3!3x���z���n�kU�)�=�{%Z��R�n$w��z/����6��9���nM#�v����K;���ag�,�	�h�(,�{M�	�����)���e6</�v�	>������
jVR�0��d��4�L�e�g�����voR� &l�+����*%�G�f
�a����]����,���Y�b�R����"���kJ%c0T�i�F��W��o������x����W�6�8J�<m���:�C�?]_� �9�W�:�`�E����r���^��G��oj�mw�Q�.��T�
B�$��2�8����EtL���B:���w		s������<Z�+�R����+����*r��3<��=��L�A�&����(����<�T����w��n����
h-eS��n��P���r�Zy_�z1��GH��R�k_���u_'������V2d]�����y�<��f�~���G�s�7�.Pmo�|���I��sk�USG��n��tq�|5�=��@�
f���[���ag��W���J
�]�-w����K�����JD
8K	�U[��j�<5���������jQ����|���P��AD��5��P3K���*0+��7@]��la�-�c����:�5�5��m�i��]��8��b�W�����[J��>��an��v��,�r���0W�Q��W���>]�E?�����t?����,��q���e�+������[D�Y�c��1�`�����d��t*
y9�W������+����:�z��X�D���}"�~����H�����
�=�5�F*
�Q�`%-����~O���
�A��XO�YEK���!dyD��M�A��0H"����k�~[������O���m�U�R���Sh��2��9c�Jc����p�m����g�w�]y��g�.ihc�%h0���V�
�9��P('"_v���f�z���;o��_��� "5�`���f5�c��3v�(4���6����_�E1k�}ItK�u[��A0Ht�_6�.+Ac!�@��O&�Bk�x���~C!;��P(��t�I0Cbkn���Q�s�~������>U��I���W�����	A��iA�2�7G�<v���E�0����3����(�_��J,g"�B,���+=�B���k�p[������K�T�u���,�8�O�l�KPxJ3�
..����h�
��������^���Btg�����*��:�v�t���aM�6WB����o0X-��U����/���P��n�������\+�_�������>�Y������mO�b�e�x��(ju�����q��@TX���>)��t \X)�e@[S����^p�h����{�X������-��W(�0`�x\��8$�m]�h�=@\^�
�qe�q���p�� 0&<6����O�B*0�=n�p'�@�pk��P��\��xJV���P�,�]�����<���r�.Sj��v��"����O�s����F����6`C��P�t�z���9:��@{
.O�|r�Z���c���9���>T�����J�.���K4kq�
���C3U-#����R5��q'�Z�����8O��U9N��`i�[�1�SU7
	t�X^b��Q9F�i����������{4���B�4,�<�.�����y ���u����5���Xut�������\�j�9���f/�u-.�W������F�j�@��F�@
�S��j��o���X\�2�A}�������� q���R�"B�^�J[q����)��:���=(z�$:]0g	{u`��B�.&�h�	v�X*��L�f�z�)�%q&�?
��,i�0c�~P�M���w{�^;���
�rhP)��Z��z���f��!E�O��E`�>*��)����&�7��zA�0#r���u/�_ @�0���p+�e��0����]�4�I������*��8Hcl�`'�4E}"|�b����v�W��hN��B�
4�������{,����;�k��r9������+���5��aM`����YY:��A��K��"�������\,�4�M,�.���v��9����SJ3,�u��g�d4���?�e� ��&J6d#��.�0eL��o�J0D)A���P������8�(&�^����R�)@�X��wdz��;����|k����
"�S�Y����]Z�������'����
��p������@%�~5@��5w ��`���]��X�M~;��A�W�O�X/z�S���rZ��B��T��'��38$��~-O
-�O���a���v�V�'����
�������%�/i�����_P\D
b�'�g��)��8�F������6@�y�]�&a~f��e���_~����N����_���d���>��e}�5Z��D�UkVwcO �T�6jC��.DVqs���0���4V�m�
[��D����/��������{�YG.K����~�L���I���IS�	h "?W&wH�A�����a�,�Y:-�@����L����A0J�����2`2��^���	E���O��&o�j^�>GsgC�$��!�{p��p5���:��e�}t��
�E�&t��wU���� �J�l��&R�,���(��j������Y�B����Mo��)�
�e��h 
n�5R��_O��$(��V�(!��"�PD���!
r4��{�
�Zb\�i!K��6�N������D�����
���*��U�������w��:��4��)��qPm���Ux��i�z7n���^��T�]^u58���+�������>L�D��s��������������V00R4�f�$��I!r��]��� ��w��y���?����}�i��S���S$���u�
�����	�1���,:�q������4(�����tP4H��Y���?S6b^���P�����C��F����-�Z��^>.�����_����.{x�c����5���,(�]�q�]��sO���MO������������+Z�##[�c�TQ�eD��D�@��"$?1�x��&
�`��{
$6�cE�_/�L�p�O�^@bc($��}�(�.;D��gB��v
����{
d�*�Zx��_8W���;�;N�i�X1�u�LR'5��d���/�;KS	Q�6��5V�]��;q�����}�+T�����R���b��F�Ti��^3�>�����X��"�`��s�C�T2i���[��F�j"m<�����c&v^\�����z�C��
w���Vl7��8�����N���|� }���w�Ad��l���#�&��$�u�o.|���p�Yd<��5��7�2���
��h�0���]
��Nn������<���N���}+��r�a�L����D����9���&�,"��<�U�Q����N������/��-��*|�+��� ,]<�fT�i:=�Y���U��hz{��-�O��>��}���\�����w�_$"�ww��$������Gn���+�����
\�����~���7Z�R����{@���7�JX�_�b�f=D73A�y�s��+�5>�Q�8B��`�?W�p\���5!?9�F;'�sT�� dH ������������������r^�P�PB��!\���I��t#�x
�O<����+�� ��['9�5yJ#����������F,�1y����+!��=T(�-=�v��s��8d��A{�c�|��FMqo,�U-����D��������{R����]a,�;w����qz0��
=��x�����-�a�{�+���"�Etb��	�����u���r�B!�uo��B-^�/�?��CB_e��s��l�����9�k�+"����	����]-����dMhwK>O���$�e�QG��_����Yb�M"��V��h7�5s��&�)w.��N\���������g}6����57����U��[�Y�C�����Z�������=�|��$V����� ��	w	�;\�I3��z+���5[�)"�J�T{�����k��(�P�c��
IB��y��`�{+^uz��4����������.A�8K�y��M8��}���PK������^���[���:�F-������m������0"�tk�`��Rhf�����
�f�E�S�jG��Au�F����i����\��*���I�g��Ea�G��}t0����C��k��<�����
W���_ 5��+��4�q�{�k���e�)������c�o	�a	}b�9�!�zDG>S��%���� >�������=�!���R4�hr&�Z������OO������t&�.�(@I�xT#)���`�g{������}��I&�k����?��h��i/@� -j�\�!8Z����DK���6�6�7tx([�)�@�����W����'�g1�{���f�
����k���o'}y�����U��v���#T�\z�y1����=���G�`��D��_B��L����X�Y1F���J���}�Re�FY0gH��z<�y��������E�n�.�����S=��g��4��~��C��&xL��������,�
*�'����7��;���+l�I��-�@����#��aZb ��#e�
��cC��{��a���y�UN]���>�����	o����5���@b�	��BR79C���d��g�*8&1�
AbD&6����N��	������9�������&};�]��	������m�&�],�jYg������b�tx��u?�@Dc|��h�_��N`��&2T��4,J���/	�O&�>����X��6{�K���� N��-Y�	�E�o4��w{����#�/5e����x�n��������	A�/=#S�o�g���������1���vl���b��yi��B��}��1W5^�!|?D}
�6Fl����KWi����^A��5!�� fs]�o��G������8��������X���I��)i�)�0{����O�����������tjG��S8a���
�Y*]P�^��J+����^`�������j]���m�q�;����	�u~��5?&�5���_����o��z������^��%Y�98���"���M���2�������xD
��m_&�����^��v�s����{Q������`�����f�������"��0/��,+����Z�����xG�m�a�6���4SMm�~G����;�������v-�������>:���
������������&B�-�-R��k3{�Lz=���V��T�&6SxT�{%���>�Y���A�O����8�D
g���sO���%�k-�{?��"����n��j�"�������������{E}���Z+����������'�����j��h��i��I@�6C��V-5h���@XL	��r���T��,S��|CI������y�<���G�'���U��[��|wk��#��X2�y'��HW3��|BK��������\���!yp}���1����_����zi���:hm��rK�5c	���p0/���D�1���xq��jQO�x�>�`���Y>�� $�Ji��"�^�T8�K�����&zb��r?Q��Xh1N�>�a�����?�d�*q�%r�U�8�Om�K���-�O}~���-%<_r�R<�|�T��o��f`P���/v���-�W��w��pF��a}�������]���l"!Mef��Pa��x0��}~"��p�}>/.O����X�]�A�1���F��Mg�$��%���H1a=~ztM�k�
��|�5�)���|mQ�u�~^0���A��h|@�6j���!v�;�LE���g�omY@���:��q�I8DA�#w�/�8��D��V��&Ql���Z��j��x�I��I�UXw#�$WR�K)�i�V���2���}�QA�e��R\ft0��������;Jxz��A_[���"�j=4�_���3~^6���J��'����w*�Y�=W�����<.���w�<�v:\	|6���@���4��-�Z�g�=FSB1_b<���(Z,�
c{�Vp�@�_W
������������kj�wu�Xk"��.�����G���zPo����Pq�RxH8���?�[;�&�5��Ryk���K$�l����0��|�'����$;�Z�G��Bi(~�H��3�#�B�&�/��i���_�.�C6������� ~��p�8�bmp�I��R+����	�f��a��/���z�c�����>�2��O~{�Z�I}*�R��{�0����
����-H������:�X��4�e������ [���/j���<�ky�'lp4g����tR����C�^|L0\������(��'���\1���b/XZ���L i��wM�Af����*Z��5�^��9YH�p��	E�1��7�b�*��������������b�a���n�o�+U��q>:���Q�v����x���
���9w����V���{��<�f�	{������ sZ���ff�	�z$-g��v{L����N����$_�9�H"\���0:|&�A}4
m����o������_j���,�q�%Z��D9/���0r,��J-{��O����n���P�H���b+W�����W�{�-k�	���C���#�.�mQ�\61Kt�q�P ���N�sGw|�n�M���_59�y��<M�U1�2N���R�.����L���
z>y��,|����~6.H���^6E�C����<������`��Z�-GrQl�-$�Ga�k��.��;�47$�]�'�j�y������/
�)]�Aq������X����_1:S'��z����MF;C<CV��z5m=��	�hc^������%��'����`��%��O�_J5��_?����Q���I����5���(eW�v
�|
MY�����)��:y���}3�cG^����Vh	���u�����Z��d,p�#������9�������������$�	��1Q?O�q����������H@C��,�1n�a=����%�Y��*��������k������.�@Y��>!�L�br�w����A��f�0P3]�]��l:�^�K�e-���![h:�q)���vq�h	3�Y�����:L�	��S��#8q�f8Q����^��4_���G�QSi��������W&{��j������l��Sw������RP4l����f���@�@:`'����7WW���@�=zi�4�����N�q�XAR��I�&m/O�\����\�0g`���P�`�L&�da�M$�zt��I�0_�q��CRP2�`M�;��Lw�0���1�&d���p��	
f��
��^fx�)}8B\�S��:faj�/�is  ��H)�OJruk���I���A6D�15kg���(J�	�	���������O�%L�����G.�A�+��z�O���.�J�������W���u�?��cy�ad�x����.���	��rH��z����[��`��uh�	oi�����{����4'�"���Z~�0�{��B�#-��U�HJ,��":t�/�����H�~�2h,��&T�L��*�m.��UUv*� �Jc�J����#S-�f%88S
'$��c)_U������`�b)_�Ur�pt�K��.�3{�Q�y����`�^�TF1U�=��=SI�j���i�("�ACA�X���W�f�`����%5���b�i#�t�;C���L�>��y�Cg@�6�:Jxo�07	��B6y��L���/���6*���d�_�*Id>�-�����O�Yd�P��<����wW�O�3��L8�oN�P�s��wB����ld�����*`0�V�LDJ�t�q�O�����8Y�g�	���>��(�p���D������������E(����0:t14�W�n��
V0�b�SQ�C��$���a4Z(��:-n�=���8M�&$�N��=����@��4&�FJ'Eq����n@L3
	��L�S���)�G3����7���a!<�1t��=�������`��k[�t��'o�0
����N��p�*�U�[8]�l�S'%�q�a=����a��C��E�y��_�&$���k��6|��E�+���h�a�>�,s�a'm��T����q\j1����h�i�5<�����RpI�L�"���>
����t���)�~��LF��~%��1�������I8w�������)g�������[�T�	�{F�9�6������/�O~��]m��:�A�r��.�� ���`8%�G������:���a�,P��^�����1< E`������B�B2kP	@XY���D�e��������>j�CMdj^8��#�0����#"��H�Y�'��������O;�w���!���-��z`��H��:��J(a\�<?���!u������s�\�$���D�+��@����
6�j�����;@Xh�x�Npd���u���O9	�`�@V��mXNJZ�}_��@��P�YY=������,�W�lR�9���E,����D[�k &�lS��#��Bbd��7�!�C���[������e���������_Hkp�k@A��3� ��Ne_�ECSj�rmt]t� ��[�.��v�����@(��\��DX��"Zi�AW��]n�&��JD�h����������T|������G���s,O:Zrt�X�����������_��?���o�gV���'���E�c� ���:A0i�CV&��������� ��S=�
>�M�W�x��3��|y:b@��w�W��o@L
�~��:S��LX�9��-�����'�'�wT�	�aU�/q��M�t��k[B�Q�lSR��2�P�?Fr	S��$A��V����vP6�B��FO��>8�h�p��	u9�~9�=�88�s8�c9���a{�I�
x��/�u�J��hk'.�E0c������K?K�������������E��nf!�M��Es�2^����2T����b���`��O7�h�M��#�ZD��s�J�������4�w�?���6��3��P,^�i�M��/�����q�6��6��{�j�l����M������:h��*{��W����w6*\��K����������z��+�����dP�kU�4�D�W���?�E�S��&���<$��N	q���{�$��}TdG��R�6��YQ$L�	�2�7�2�}���c�^��w��z�~��7z0�/�A��j��T{Ls������+�&��I_���@K���
�"h�(^�������d�N�����f$r�r"�|m��w��9�o���P�,	�����Ow��9�1�v�)�jW��@7,`�,Za�`+���_�0&G@s�����;�+)F/�d���2�����9����������b���7���C�bC�-���8c
��E��g�/k�R0����y�^�dNb	1��Pu���t��7* �����X�2������[z,�RT.(w1������j1&��}Q����-�lT@�@���!9s���$G�U:va�*y�beIM��/����p.��l��L�
�
/�q4�&7���G�Z��]=�A��"x�� ����M������2�&7���f�|�OsnY��F��-�#��c�<�&��� ������n~��%����,���4�P�����"Kc�������/Z�N��.�A,����{g��*]hT������%�D\����yQ����.��g1���Q��5& i��Y����~�,o��i#~���
V�������F�"�M��x��q�����9��rpe��'��u����?�((�k��CU�W[�>�b����1��(�(�x*C�MkC�s�o�Oi}�V�,S�pc�~K$(p�[�gu���Y���l���-���b;*����������f��	��������"P����
4����t:U�	�^%���&�qXF"�Hu�v����qN+���}�c��^��v`�	��OTc~�5�����5�<���R9��=���Sb~ ������Ig	�� _����V&J�e���E1vSM�3�� �L�v�8D���I�3�&����4�
jm�/��L:{�� ����^�Gj�v��}6�e�59�G �����z.��B���Q \�~�B��&7��n�N�)��#�7�W&�\�y�����\�-q���p��K�f�0��1��\�9�]�~G}x���V������k�JJ�1��g��J��M�q��v��b�V���o��[�NV��y3�{�Px�|M2|25W��{�`q�@�x#S�e�>#9f��v�-4H}S�;���:�@��}
 �6�i������_P;V�P�8O��	�8<S��*~��c���p��4�wd�9��pq�O}%���}���1�������v��O�.&�o��y>�%S���������j
m�/S���+�`���������LC�i�6o�@D�����P������->[�Kq�U��He����(j����%d��j��
r�pH5o���$Ad�3����=��x��%�HN���sJ�~&0�>���c�]/f
��[���]�x�kWqf��p[+�g�yR��r5@�\��Y��,|��1������HC�?~hV�EW.��	k��������=���D���D�g���"��Z<C_D�o����3�
Wt�V�j=4�4���;�h)"i�J����|���`k)��J9��@���.����`)%_4&�JY{���G������Vp�eQ�w!k6�����f`d�������>M������o\?�tp"�xKg�[sr�	FE��G^,�[�M6����/]dp5�����^�� %�s��n�0��q,~��
-fV�������r_T���$��
�U(Z�������q��+%{�$�_�����u$��
�JE�����<�|r�Piy�����p�����\��l|~>���g�1(-U�S�>�}�/���/��������K����q������9d��;����.��[��$�E$�5�j����������������1���5�R4Xg��2xsg[��FZ�
H>���a�����73��y�z�D���9�D'�6����tZ���=`(�W��9�����,,����,%���*�"�,�R�g�O].�$���Y�
�i�@��o3����C���)p���t!�*����Y�I�7Z�8��)��������)0�_�����p5h����|�+�]�L����66���~����1��x0^����� v{���]Dn&������al�K9��1I���,��:��U����6���\�N��,�zmC(�����8����� �"[Dp��.�RF���{��M����Do�OfV���@���8���c42>P�K�j�IC�B��E^��\%�[H;�`J���B�����'C���[/�a:�v-���Y��h�w-u��Y#��m���]��?�����u�zy�`�y��o���g����Z�l��=�>��!QQu:���" ��d�w
*o8	qe�Q-@��e���A,��<�;�����i�q������/J��D���(d���fGt��%���]���g��)c���4OF�`���B��46N���imr�1�]�=c�nl�iy��!�nIx#tx���.m�P7������E�q+J0���Z H�f�:H�G9�VR���S�����j�������N{�w�"}d���X;K�^]�'K����-����;��E-�l|�]n������y��u��`������h���s7K/�d�����>-��z�[��/�r}� �����7�y������0-9��j.G��d���)���W" -����BT�l\p��v'�|��G$�`���q���i�j|[���*�vQm�$�j����q�8,z#���9a�����B#����p� n}"��<7@�r����C5/�g�\\t1qn\��-����4;����*<�w����T�������k���7�������r6�1L�^2���S�qH�jMm������5�7 e@1��Je��4����X/��A7��+1������nm���6���k����Ye	��|�v�+f�>�7Hn�f<YM�O�#:�e(t
X��������Ic����V#�
�a����.��DC��A`	G:�[
��?@���K��Ym�����u7�3�w�*
���������6�Z\��n����P\����J#�1���,��rv��{�����+�yq�.6���W$�����3����������V��,E8
B�����x�����@#
'��[�.qv�K��@���p~�s��m��XO�q��� �x��yT�s���!��}Y�H/ ������{����Z��6���� P�
�V����
A�\�{��u{���a$��p�n��d
	#�1���=��%9���>���e�5�Ha%�����^{�n;cqx�q%��
�:~h0�(�;�.�y4�lN4�R_�DT0-���(�m����Yyo(#:3QR
n	���l�P����'�X���!���N�{��������-Q����i���S���C��G~�L`�����/���qe_0�"��b�0'�|��Al�)�����A���@F�V�x�9��j�Y�����dg'�*�z
�0!J!31������`��e����9a<����io����\?%y6��:����h���PQWtY� ��{	@.N�.�����W����/�J5�_Ut�j�=\J�� ,�i�����I&~("��+�R;�a�������y���c|#%s�}s$����x�9K��p.b�~����K;����+�Qd��>2�{�?~�}<�����N��J�k�<.e�����^�j�k�����k������z8x6�~fi��������i��q��F��~������W`��^�.�oZ����.����x\
<���L�O���j���=��V=5��~��5�]qan�[8��y���P��l�^����7=��]l�p6��Y�j����&P���1D���g�����tJ�FFq���T�-��Q�,q���zDl-Z���wRSe)����|�?&D�|R�.��Dc��I���!��&[%�SzK,%�^j�zP���
��z�l<����}�b�t/��PZe����L�����f�f���.���&�V���?!Q��s���	'#P���]q.�[�������@
Q�G�w�E�I��2��c�w��$�#��ny��;wbe���������s���J�w]1��	��%fI��U�w$��7�wUq�S[Dq�����H���l�����,$\i�!:��Q!-:�S��w�s�� 
�����K6���_���+��Iv�.����0��
��q����G��IyD�o5��]?�k��.�����K!�������/D�]px�����Aa?1�V�o��J~]���.E[yY=dyP-2o�Ial��
��GX���VS�B�a����9��?;��.9�d�����L*X�D�����-e�e���o�����H�q]�#�F����F*�������`��q4L�H�z�d<;��a�J2�|���[�-MU�En�dx�n��;Y�6-e��Ls8�'��I#�A������N\�j���Yd'>Y>')k~�eZ�o�]y��J�������3�w�������-���l]�$xv����:Al��fP��%�MJ��H�i��S�UY����v�
p�q�O�abx%�.!��J4�F�H��8��.���PC�1*�I���T4�-���8\W
�@��s�r	]�T+�`Z��f`r��c���@�F�sY�\��[��������v���B�m�l���o�����:�L���+���R�7��V�7����i8]�Fm�{H�����dq�MQ�#R��S�;�PZ*v#���5vZ����G4�=�T�]���.j�|�1��y�LK����y��/7O�T����{��	=�����-<�����&�tG�s����H�)�US����%����Zw_���m}����e��f��$��Xm>�����~[QDQS�_�$����<�Esvk$��)��P%S�d�(��($�6
[�N�*O�;265Q�#"U#��KP��Xx����D&�a�>^���rnr47�O����T��p��:�C�B�"V��5�S����h�r�3�~����������pmA(v�0m?(QP&?m��F��F�M9����@U��y�����+�7P����W��� ���^?��o������3����9|�5����{E�T����J.&���n-�����B{r`�x@�`�T�U��qn�P
=Ml�r����0G(-��o�|����������@j���6�bx�v��F�����������}���a��/G�����{g�3{a���������$-��`�R�Q����h�/�������_���\�W��z�����%r
zR������n�D����l�����e��I�tr�H����j��jy�2�3M�W��C���)e���!�v���e?Y)# ��2��y`	�9�N6F8�����j�Y�Y �RY�����y@V���
�/*�H��'A�B�-�B"�,��4���n��������n`(5`��� 6��t���/����r�m����o�k69��19/�V{Q2�$��#�#�Aq��f�����c8,��R��No�K�J`�Y��H�a�����%#�1
��X���]��{/���QH��>M�����p�q�a1�-���Y(��E��"����g����wV�p�Z�K]�W$����A������d0MC��RLD�N� wN�Q����~��b���V��Y����B��I�������@a���H��d$���i�����)��������m5=��c)�l�m��z�OX2�h��T��5r���l���.�Zr�`�By�X��;����^2�A�'����2�0<�*nj�i*��;����>�G�j���_���������W���3���UQ)������r�dnkR�^��`������������3���ck�e���:l
���.����������]���a�L@���My���_��|��HOqo��8������#�Y���R61�~P�d� (�1�d�a8�M|�������b20k�=���(���B9H�RV�[N[�������__�o@�r��>��m��^�AJ����4R���S��X�#���y�V]�����mF�?��P&^���P�.{��v��
j�{QBI4��#�t�%���C�F��U(�t�Z(d%�@v4���h���#Z?@�`;�LUL�$�������_�H
�`m@�����V�@���Dd�#�iGF7Q<ci%���`f~����0wX,������I<���<�8�j���y���VbXN0d��H06��F�\�������|�%#d%��g�4)'�a����th{���dV>?{��Z��v��P�'�@� 5k��t�b��$?{s{����#�+��[4���s(����o�ly�QTF�-|��h����R6��"�0�3��%�A�5���PAM�vAM���d�/�A�T>������'az�C���V!&&:DY�o�eL1��1%���b���d��ky����J���pp���h���f��R,����XK,�����G04�x�8,����?�PE�:I�3��kR1j,�4����U��������a��1��%���ZE'8n�>C����K�y}�'����s����zj�� ��k������B��lu+Ir|��o\VCV���(������bftz_jD�L(,�>�T}k���RIf�Ih[?w@�1�y3t��_@������ �/U��gJ#���p�h=��'Slh����Z�����}P3^�����^�����ztG�szH@HV4����PZB@�C��~��r�#mz7<k8@�'�w���d��L�����u�Y,��S���\�B��4%��fX��a����������x�"��0�������r����W���@tY��E������rq*)H���J/Z����j4��C#I��{�Pr�4gT8���|����O���k���f	J�GpE����������g��Q�k�*���x������^^�0�
�`/r�A��]����OI0�+2]�yxU&�qx������+�?���>>������&�88�9�gXW����E����
Bm�l�E �Dsgq�����y*����}!H-�����Z|9^.���1��T���P�9����N�4�'���q���|�u
A�������������J���;�������7�������0�q��e�M���nR1�_�������3�r�������{�N�\����y""jj��/*�C�?L��7��v��g��o
DN�|�caZ�(B�-r���Bk�����Fp��	�l�������C��/�f����t���#hL<i����
d�:�����A���������a��Q���mwE����w�CIN~��i�#����,Is2
p�~'������-
��~�����\=0g���-O��9�u���5��.*�5~���?�k#n���X�?T�i� 2��'W��`�:A:4���"���9�k~P��(���>Qt#��0O�
R����E�;���ba�#		u,P�������\H����5����@C����7L��R2��Y1'�]<��M�,8,����D�����o�N�l��1��f�� �o
�C���A����T:t�i'�
�p�/�A7�������@Q	�����*
F%��RH!h��XRfBJ�0\} F��f���H0>@����dE�1&[��[���2.�P��&������o�$������6%C����FZ:h��)E������S�������c����{�3�s���>�[��T�"�Uo`V��ZB�X�o �y���d�&�~��Ef�bY����e��kK�
�f�=W���������i6W5HH�BuS�d���"��(��iQ���|,q��6��:��O��LQ5�R�:��$'�$�0�D�3����g��-l�2g����FL�q� ���w����K��
�S����r����p���
��p3�;2���x��%PGH��,e�B�P��Js��e��J��FS�e�@��`w@	q�|e�Y�~#$#R��3�FJ�������(��5B��H�)���y�k6=�2�m���?F?���E�&�-���n|$�wm�������OD#��&�*)����(��$
g�m�������8�����9�<���e�r��%���T����F]*�.�������z�VH5�8F2f���w��],�d�e�2A)~�$��y�,>���X���Cq�q;�;���^�I��-�1~�����X2H����2?.����g5����%����l��VD�D���f�N�������jp�u��:{�7{j�<�q�R��R��`����(���*����;9����,N�{J�k�y��RJ#I�q��'h����I�U��F��N�y�O8���!K�cJ�X�����������t���n�(x9Zk@�e��������yZ��D�(��5K+&�x���8	B�`���x�d(Mv�T�F�:���b]�
����T��yR�%��1s�/j`?�a{X,���X���4ay,`%���'�0r:�����$.��/ ��:�_���\�he������+#w����/�](jl��i���
�C|�T��}8���J��c8+�E������t���c+��Y��W/��*tB$%[T����+%������Q�Q�.`K�FT�D!�[)Ak
a\z��*������p�H$�ggcId�m��*�	K���V����lj6��L\��*��<�M�(Q�$��n'���8�w�����K%#	q�2�f�`�s?!���\a�lFJ^���N�\9HS�v0�g1����E&<�V6|�H�yVFJ\���G�S1B\JL,��F����"|���X`$��("�KR�Gb�N@bs��bP���T����@��emi�cnO�g�GP.K���x�f��i���%T�M�<��|)V�Mp~��F�����Wd�~�g�oH���#,����������2yg ����5��)7#�@S(E8
g��j��}LE�����)t�Y��w-����t]�����/���8������_�VX��%d�o��o�).y)�>~,]oV\.����~=�v�,n�E����]�^��.%rL�_�������wx��I���#�m~��K:��,aK	�X�.�rM��
�[�l������N(�+k��U�������j����*<X�R��E��#��[�' ����F5�n���a$b�?Z~��rK4���2�	�����D�8���&�����I�#l���Jv����K�����?
� Q0��(Vog���7�9�c,M�/��+��	�,���F��'�����&,�E�%J��^�y��=z�W!��a]��.K;�(�w��W��`,A[�h(�R�b�M�������l��+����oI�a���<��;2���5	�����v���R|$��@�}�3�7+��)|hq�s��B<ZX���E�2M�U2�#�!�+��2�1q�Of`IC����yU=}6�l%����}?1�^��zKM���������?��p�x�<�������V]�'��/A��2G�#�1������E������#F?�.
�o����
���FG�(S�n�����L���*�O"�G���m�����
�{9����M��.�%��{�����M����f��������zY)�%3X�g�E�N���^���X�������y����*{����j��<��9`wbo�>t|=�5�ZR�i4(v*�1�=��hGYAI��j��i%��`�%���ycJ��!����!���{M��#�-�j��t�G\d�������U 5�0R	�RLk���l#4�$8���*+��p��$a�OJ�h"�Wo��q1��}�wU!�h�,?���`��9�s�_]l*��"�I�I.����z�BZs� `j0ts��9���V���K����Ptt��O�:c`tu�02��7s�E�l~�b�L�
s�!
+`	�l��a�������3���S���fGB�v46���h/z/��Yq����>-4�Q'5���J�q��o�}�����E�&n9��h������Es��~#�Y�^=���20�$l<5W%���/�%�i!,�Kk�d���a�f�)�R6��l��~Jy����\�S1��U���Gx�P<V8�u�:��&����5���
;�3�J2�3��*J�&#*++),��`��i`�y��q$,��� ��'(/��[����lZ�)�0�^K}�S��P[�v���L=�i�r�
E�����J�|�Pe�{_m�����
�z�pd^�-nW�@)�U0��p�#u2t�kX4Z��_t��]:Z�����!~��G�5j����o_3��J@��O�^�S���qj�@������6J�#���+�
�$��:U���
k#V+����)��4�'^5c�q����5��HG0
���A\�����G���-D8��cZ?k;�Z��ml4�-6����x�W��F4����.�=w��%����j�����X�Y�L�Kk�S����#$����p��V(����gP4����.2���q3h���N06�E]cTl�����Q��~:���I����-c��wt)�[r�������������1��T`u�;�{����pIV�#���6W-����0#�7b���-�t�n%y�����^��ZU\U���+5=����MlG�\�zw�~����4�+,�,n���92����P�5%���q6��K��)�-�z�4aN���xK����7�N����q�K�a
�O��m�6����m�_v�wy�[>6�KP%p�s�t37���6v���p2tS��
4u���BA����z"�7 W�n����q-5���p�(������Q��>Uz���M,��/�c��P[��Q(��� &yA��&=@������_����M���P�c����?���_���\M`�����@���K���G��#.�.�F��>�|���|�{d`+
�@�$?�@ca��<d��
k�
�i�=��GX��G@,���3�b��(,���O����S��&���5�+�����\1����l�N���5�.i�:����h�MX�k��X���~�m�fx�HK�@
�F]�����@ zH�h���B�P+��"i$��r�E��	�T���z�iRQ�c�x�np'��w��~��;�(0�o8 ����/��lS�&�U~��\�n�� S�k#?���~��B}��1����e��y6�
��wN�����w�L�u��k�IC���a�lJ�#]9.Ry0V1����@�D
�_6��;�O�a��i�w���;S!L�]M�-_��� ������{W-�%CY5��w�����>&����a����k�y����I�������F�o#7�yd���b$$�r�+;���'J�"�<�B��W��4�e�<w���pc��Zz*� ������1
�����}�1��D�8����i��UM=��R�S���������niZ5c�

�!�@RVMA��x�Xg���Nn2"��!�y�������@����eQQ]�w;�]t���P=sU;�;��C
 SHH�k�#���
0SL{^����+�*�=���/y�iAl
�$���3#m�^��J�-���4�_Y#�r�w�!01I�Q�o�A���
���+o�S��������� �����RG��I#"�z��f
i�����"�#��B���J>It�w�
�W�5��FE�_�F#�l�P
�1E��[>I���r���X,��r��O���VH�y6Dl����������b���7o��W��\"��F��2�\�D���(����%}��g��ZtZ��a�!!~d����&N�F'���Y��t�XbZ��E�������iHD������
}[/�zC"z4_4������	���k�AW����(�1�B�+Efo�vnd�`2my�vn��a�uI0-4�c��u�F�.�Y���OG�����|�m������Y�����t[{�i�+��ij��@AQ,���bL���
����N��N��l�+^=!_�
�������5�1����h��a����7o��%�O���
����c}
�|2���v�g�6��V7NYIUy��8� Ye%~�
����$s�YF�'{>$2�|]���6������/��
2��C(�g���U�&YIUxN�o����e%~�Mh��������u�I����{:�=����Z���n�����r�l<C�W��,�3b�z�V�@�H���{C���C��R;]���D�CN�-d�i��e}_�D4s��a@Q����R��|=�������m�if���ZW�]�uG�n/|��Z��y�o���u����_3}4����>��w����.�����u��E���(�q1�<����Rq�v��v��u��@G(,��K.M����;�Y��f�o}(c(?!;�`��17��c2s�����m��
����t]���s�������M��Zq�@�yiw�~n�&�W����<�:@�{g~B���4��������FUc�i����p������h���W'k�V ��K���ig����W��x���#	
5����\��)7�gj�P�M'�=;��^8�v�|��=9��:�=xY���d�`Pz�
�Z0�|k��\������=����b�����������?"�:B�����������}�A/��v��8
Mv�w7�����j�	��%�{�##��n�Y�\~�����Q���dR��=��k�%/�oa�\���7I����,"^C��Y���G����V����u�]X��i�L�9���~}��s���QGj�,��4�[����p*^@��3<7gjl�==L-�
�h�����kkc�[�%�%%-��-�[&
�L�F��i����j��)al�mQ��Q�4���i�H�0�n���'q0�S���|�f�j��xfu�]1�G�f�*�2t���g�n�al�-RJO$i���\�����J���H���T�F�P�S��UFoP���_�����`c��['�L����['�T���L-�$�X���ej�Ry)��lc);�+ ��Ji� ���RO%4��RN���+'��z�	��x��M8�����2��������9;�f��DcbW�rt�5�K����$"V������	����y�:���
���s���c54�$\��[2uw��7��@�
�	�`����=��D����X�M����r����!�+&^N��T��5(}DwEC��P��s�T�WI(���5��
uYeMT��d���7�u<,��k�KI�	�����Y�\*]:��q|�s��#��r�?T0X���g\	)�������!=$�z�tz/�OF��[do��qR-���O��}1�������o���
���F��8�?�A����B\	@�f
��EZ�50���TI���#���#"�����'mQ>�M��N.��d�Y�����+����I��x���s:��HN��1/�*�0�d��4�S<G����&�j��i&��P�(��G���������F�J�=�h�����Z�k"��#}��a��=X0��b���[�n� �bL����qq���N%)��{�i�6��j�Ag}-F-���$/����;t�NUd�p���;�������2��#X����$��
�z���[��$~CO6���8�)�D
�0@��
@�w;�al�Et���l��������$W<��i�P��-�w�yt
�'�����^>e03�����AD�P�-�|+i�9e��,���	ImQ8�3)�83�����gj����*T9m+�>�%��\j!J�w���)4:�eP���Y#|�#��*�Z7�� ��*�"S�Ff/�E���T�#k\��:d��OW�`��:��������n
����]�?��I��	�b=Q��u�zB�}!2�.�����`R��4�������m��8���-�x�0�|������|�!XI�����m�lLf��*��Y�x��}�>��n���YW{���l!���R��WK�%��e<T�2�#�f@�������w������_��������BE�Z����a�]�����(f���o�����r|�4��w�����M�������q=�-�>���uB�U��(^�s}Ryz%WW��&����6�El>j������gY�����d�����1@]�{P
���-�����R�n`��Fw�
���^�`�����.ju~2n��O���6��i�#��a���c�K���	�����w�����o�����,���7`���wW	Ro%��:�B���;Ms�#C5�T�v��3�L(��[%�7�f��Yt������
�	�[�=�=��S$�4�2S�L���~���C������l[ �FIx��M�en<=�ve��e���������y�0�?/3i������I+v���B"
	�����B��"pY��OBY(|�Z�#�K��_���x_�������{#��)����X����/��PZBC%t,��6�3�"b��EA�������^����V����#�UlgX�:�O���8^����8f���� H�W�I/U5M������G���I���s����M*r�Q�qI��������I*����H�\���
<rI,�������^`�+"��*�u$}d���S�mA�WG�������5��1���f)e���a��g�a7�g5���*&+.T17r�#�����0�U�Zmkqq%�<���&�S4T�	i��?
����mz=����i�i>$�]~�}M���������]������$z����	D�Q����������}%�U��E��5��rHM��S�3��D�����y�I�:V������v�6x�"�Y5Q���Y�w�h]��6b�li�%R{�xI�0-�������O*������W�>��"��rI2�+��"��s���
pG���<b�I�Isr�����}����h�W����~������Jm!-$�����Y����4�w�=��~�l��g
G~[,6�*[Z������	
e�"�k��4���������/���}Po������=P��nz�-o����z���XV���m�����h�H�#oA���0s�v�Y|����M�����:6�g@+�\�;�C�s0���"�u�k��^��*n���k�������?R?��03���9��pgH+����FE$�&������W��1<�i�[fs�L�0���G(-R�/�����fe $�Z�����Cv"�/�+����[����J���+�B>������	+�������GY<a����������>����t2�<)Hd��;R�������C����;��yS�	�@��*���Q�BO1���Y����
J����4s�}}����01I��&pu�N(W�W6�+��k[�����:�8�Y�����h|P�C`ct.K�R��$��4�r�C���P��Q�&��4=�[A��!u0}�&
15!IH,����2,���(���	KP
1E��Z����5v
	�k�����������}�6x�a�E�)�k�Ar�6��9�5-��r��r��.���]u�Uc�V�i����l��.����C�|B�.�h�,FTe���6�:������5c�+�6������0n$�G�[��xF�F<����8Z}��p�_�@����=����y�4�H
�S�Z�����E������L;0n�����BA�e�2FAD��w������2�}��;�;,��pM�x�Gg��? <q`������.I�49:w��N����lG�
��v�����`z����#n�b5��Uy��!'���]���3���+�R�:�6�IQ��m�S�E�03���| ��a�?W�|+�0#�����??<��=��w*%�P
�����gH����`m`,��/���2�o�H��Q�-���\���6)�g�b`��
��0��ra<��=#��`KV~��W<o��jY�x�f��0�������M�������m���D����L�������������2��.:NJ�t�:��q��eqA����=�gVIvMo��DnR	�b�t��G�x���!hj!�!q��*�]p����]{�E4�$����C���
�SL�FJc�Z�T�����5@��AM@3�k�y���X0�g8����:e$/`
�`9��\�����q��G,����Nv~K'���4��X�
�
Mn�KH��NI2i��K�2�Y�#,�>�v�y�4IF���U�B�F�����@���o��'����H��&-:6�b��
�{�`Bd�|����.�1� ~�XA] 6u�$K#�y}�-���i^[6_�_+D�/0�P���+[����r���.(q��qP��-�Q������-�q���X���7������`��h!u�8��cX�/�`�1���L���7� SBR�f�<z�L��s�������
C$CLP&�J�P����YT������H����u���~{��P��c�2v��;��vuL�d��F����>�s�8�{�#$u�V��S���E�#��GQ+��`����d��������wgI&p��"w}z`G��k0kUS�(����I��'�Pi��e���RP"v��m.��_����
	~=���d]�	��
��m��_H�T:DM�ws�S-��M�s�a���PYo��Q���k'�8��<)�w����2E.������Qk9�U��<��������rg<1��z�_�m���J8VTiG��<�)m��Pb��o%	�2����%|8�>��k�������-�/���]��9�u����ZH�,�3�2��������Sc��X.��/�W`�e�	)�y�3
�s�T58��N1���\��!�-L`]�E]G��	�<e'����j����!|Y�.��y��4RA}��ci����OJk|���(�nR<��I9�B<�������*����	�l�<�I�FL�����}��1P�� -Ug�9zh���;�Q���c��Fw�����{t���H��o��S�P�v�9*+��-��w+��d3l��k
K]C��Q��o`
� '	�_�j�!<��.�g��5HAaQX����p�Y��$'?G'E�Z`�i�@�c(L�g8N'�K�����	�����sK��3�iHN'�K�3���T����HL���X
�q>]*	�0q��8�	.����p�O�Sd���%�����H�����]~����������g<�Av�WKF�hr�0��������gy�VII�� �����0��%�Naa:)�E���2�!O���K"���o�a���s?��g��,P���iFx�=BAd`*���I��=h7�
@g�	~��{�%����'��
�93XS�����9=l[�k5�Z�+s�	
1ki9���O`,��
m����#��R�i[-����N����4�a��m%��vb��#���!��]R���I��R(��[#�����S�x�����
W�<a�����ui�%�QcY����X�x#��:�M0�Eg-}����S�v.;i�i��k����{�e1��+�u,u��gW��FC�tiy`�#?y(���v�
��q�7���H�2��q��o���T��uG�����o�h�����@|�/%|��mkP�H$Y�����oO��Lp��j<�I!����7O����RHi&ic�Z������`��r(�p���W���74����*�ls�8q����`j|�K��7�����1D��m�&���
`,�u/[I���0%RM���:^sS%Z���4
�(�Bu
�q�J��y����]d�@��Z^�
��
��P*����a�U�!r�3��>���uNse��:9�\�����U��kmx�B��(��8L�J)�g~�d���5�lL�$$�
rV�Dw�	��_��n�����j�1�w�<,k8�#f���vL��Ob�:������nc/b�E�!]�R0�����?����4���������'���~s���`���2%�=�p��-�m����4�g�e�y�����!�4S�cZk���q|��K�QW������T�t���E�UP
��W� �5��8�h_�2{*#��#%��H�B
�Rm���X%��>}*&8��U^{K��PZ���$���@H�H�o�� ��x1 m�vL����^hR�?��=i�Q��7�Bz���D�����B�&����u���rn�x�����* �*�]����m9e�g�/d��k����� �9��V���$U�e����g�mHv��n4�������^28@�� ����$~ro�����J��L���5�)���I�q�U��RO����@���������U�C�*%��qQ�����:�Se���������-���D�Mk��}x�B �P���^rk��0F�\��I�U�5sI�J1r�U���Z�x(r�^���\��4���v"zj�rXR�a0+����3��2�U�_Z�]���'��4��hF��N�V��=���+%#a+fc��Z��{�:f6p��\�"�Aj�w�2r(�uk�<���M^��J���g������`��
�m|�Cs����y3J>����Qn�����Z�������n�6[���������A�H,q���b��>#pHK�����4�o�K����2�������8�r�:�(`
��1�vj�g�k"Bt��j��������,T
�v���2���D�"a$c��5m)dy��E
����]A�����~u���H�[��c+^[L3��Vk�\vi7�Z����|5b�]���5��B����_�N�(i/^?�����������\�N^��(ikd���(4
���:R��Y��B�[r�}�U�]�S�I���'���vH2kz�H��@�i�����TFl)1�d����@��a�{,�?�M0^����}Pi��U��ov���,�R������~�����-^����2-���-��F qm�����Gh�h��������7#�'R�S�/8�
E2�.�RqQF��{104S0�U�he��7d���7'T�x]W��C�����1�������|N�QW�g�� ,����-�!��|�b�q�����"��l�g�@;�}��V*�M���Yo���mm|�:������V;Xxa��F���4=X�@`l@�]�#���Z$0���r�%#�<����x3���Y�����y�.x��VK�`x���i$��f��/�LWL�ml?F�u�j�����;]X�����V4�p�#�@����*������h�� �8��:�Xqh��n`�`WxP~o�@(k>]����~V���?E\��Dy�A`
%4��-��
����j5��-��F��`�)^�7TW��j1=R��zd���UDB_7@;���7�������,������%X+&��\�}���)x�!���g�HS����
�i�i���8
�6�?�2S~��x���{��Ufc�� _�w�C\�$���E�q���Z#��������iw-�UA�f�q"����r&���_*:?Gs����:,���h�������3}������s��q�������M��X������]����l�,#���4>k!��$u���%N��t��}7x��?��]���t�Z������L��,����B��p���/x��Y���.<�\��I=�l%�O�vLv�F0u������o��p�gX� R>�4��XX�9�Kl�����dV��Q��N0!T`g�N��FW��&���R"�nS���_=����w�s?�L��M��?��?�<%&
w���/��$���I����hK���B���1E�3��8�]g*���0�� d���Y��qkBp/�8�CPS|
�|��x���{ �����i5�5�}��k���KH3�Yk#h#��*���P�����3���d���;�
a.K��`5�������2�N���+)���f�*��9�V��Z�����{�f����w0��@i4�l��e�9,�����~���.��])0�����03�9������$s[Pg�^�e���,q�
`4�w0`��({���e4�t��h!&���zj��6�����_��y�v`�����m}���\r��"������P���V�d}4��HU�\��|����	r���$
�*i%�w����9�b���D����/���$	2������4�j�z�J��B���yO��������2\@M^	��E����-�^s7�J��J�z��,�z�:g��P<�I���+�}��B�l�w$���*���#���!	r��gD��sY�n�@?��b^r�v-�`l����G�"k�.�s��$��f��-
��-s�S����s��s�o�\��� �c�D������Pl{G��_=T.�>�]&M����}��
FN�E�3{/��?��<���L������aIV���������O������������,���A�:��HD�
��������������E+L���%�{.L���%�L�*@_�2!�����������8�!�5�2F�!�'������O���t,^9�Cp���r��h�5X�:tN���]���"A�^�����@2si(��aa��i���rX�
#�J6d�"au�0'�O��+��`8���`�&Qd�_�u�<�AS�����
�Q�Z������/c���V�-��Q
��c0�I�8��]l�������U����,�Z�!R���/���~��G�8E�/�P�Oj*�8O��A}~;��3�?�Y<�L(�bu�����)�� ����D��b~�(�*�2�vh�6�I�i?vm+F4>�yONR^Q��jf%��[�~W����X�j��e�f��>R�ef����j<;�������}������s��m�)|����d�$�_$�k)�~C�Nu���*�����h_gM�'�������*}�a��6�V��	���:-f�`�W�h��}��zq86����+����1x�
��7_�L�B����qqE� ��@�����Q7l�/^/G;���7&��f���3T��v;I���~BujaM�����r��6�q�vb�[c��?�\���!?�u�-7H�q|�hM�/c������������mf����TV������&	��i�m53����Z��,��_C-��%���UXez$8rV�/1�������JW�9Z�ZOX���z�W����F_�UH��>U���G����k��z���$�\x�^h3�_h��2�vK.q���c�bQ4K��v�Ms�9��{�w��m���l�������U-E��u���6��E����/�l��Ds��i�<u��=�
H�#�,�hu*6m�`�����|��*2�d�iY�5M;)N#L�xW��S�:���<Ww�M�����4��Mb���t�Z���M����Q���	����v�S���1����3�<�U�����]��0��r���8���w}��|�[3��v��K_��o�����#<�������y"FHR����A����.�_;>vX��64+�W���=��aj7?e~-�y`��;g+�rPa�-v8�OR������Be�b�ge��d�mM[���q[-K-��
��nb=��TU���A~�Mf�����c?�������B�J��eB(%#�q�+�(��\�Mky���-V��KNB���l��������/9G�
������c+�#���AD���{�Us�����({�*X��)u�����zO����B�[�nE��
�z�v�t��^�T����-��*BU���t�;��F��/��G�,AQ��%�������Nyk`�Xl��I
��y�hI�)`�$w�?�U}�����Y������_�I&z�.�_��'W	�u�8b[��d�,��b[��tY�������� �%bD��Loj"��r�;�E���:�o+"*1?B$���z��L�.Q����y���5~�����^������o����g��r�������' b����3���3��C?�������3�@��9�(��OS.c�L�3��9=���3���9=������3���99999=����3���u��m���
t�������������fI[�*�I�����5CW�����5��UT�H��W������I7^Z��Q�_�ey�f5��z�&r���tDG����i.��Wo��qri�����3������������'�y��eg!����u�qa�V�C �Sr.����y�i��A�Q�~l� ������� 39���'��~Jbs�����q�g���q�icHzw����2,����r������q��D���4$r���r���kw#x��X:S�������^d����6^Z|�V����<��~�9p���B%�9�x�����F��8��,hX�>KX�d�����sgLPt�����=����)Y�����x���-�=}��qd�7�v$��9���tZC�^15�p����?����os�]�^�=%�}{]��������}�����2P\��C�������f�~S8�>����5���_���*�������KZb5�I�K��Ed�d�Q/��~uK�"_4������
^d�`�����d��%��.�)t�������Mr��-o�O�� ��U�C�������c�I�3�z�{����4�>����I�r��r������n���s���x��������l��[�
�������[!u�����F_j'�����D_T����)��]�p�W�������r�������|����������]������b��t���i�qj9�7��\3*[F����u��].��y k�I����K��6��y���K��
AZ>��;"aN[���^<��p$(	�j^J���v �T������Y�ZK�7��
�o�:��ST}.�+r��I����5k!��/<h��@v���R��Yw��Y��X�`���x�}*�v�621���0�
�M���-$��%2ikF��%D����y&c�
�����`���~�c��JT�E�qo�z�]=~�N��-���&�X�)��J�a�k��J%	��I\	�|����e���������,����bT�&��a�8�����Y�~�@{�?�`���4���u<_�:.#�
���'��������x����5)NuLO���U+Q4���z:D���1v0KW��T�s'�j��S��q9D�V|�$+4����!O��A�$����������� �M-&�$�ZK*,����G_^8�5�X�$I�S�Z�]��fd&����[��Q��O��R���Q)!���W���1 17�X��?�]BQ�B$S����]d�t��6�!Wp�0��r��d���Xd��opx����;�~���
g���eUx���'{s�*5U�o���7,(�~�d~��ZY&����c���>��$R��L��z>��6������Yy^����gZ:�u1G*e_9������9�Z���!y���R�3)��+�����k�%��v��1������_���6��z8�N���>�$�|�W���#k����z=G2���)J���R���w<�Z-�{t���x�����gT����e���7x�T�
(�%i���g����o������� ���yS3#z�j����Rr�>m��At�
��"�:�\r���
����HH�!��%$�s���e�.���v����V�7:�>�\��+�su�������Y������b����3���q1U����l"9k�_'R�J���4�"7�M��4���J<F�W��RT��9�?-}v�1�5�����x��a	�����S?"��k���=Q���<��t�	�RS������8}���-����o*}�
K��G��V��f���B|"�#��h�������������e)67y))P-�_��u�:�U�<�2�X��m����)�[�����l�Cw�#���������%*H���s�ob�zN�w�$~!�,�?�����h�iI���mm�>��)eb����*	�#:�{�[h�4
/G�����F�&)�$���5�2���G:�����A&�v�(b���P!A�9��q���t_������w"D�r��8���u�@��@S�2B'�E���b�;�1ge����Dk<Q����T?����1����j�G�=���F��`�S�t��m^��������~���@%��cn}������'L���������$"���'3�F�3����������
�hY�;��.���7�������U>W�
{���@�#�lt���J?��I~��j2*{��]����W���_�I��9OX�a�������;���Y	|g��c�3�����"Px�N���RR�>�f�B�/����_�*U���V�A�w����,��s��f�X07	��`�Yi���y�;1�[����S;m>���� ���4�>.$�g8�N����l���}O��w��S��q'�:��b�#�Q���%)7�p�D���#�fL����T7�K�����w���{�2:V�u���3����U���������T0������yx�d�����9J�K\��B�.��fD�s�������t�����w
����<O�������x�K�0_g�x��a��%��|��~]�}��}�������Uiw�r��4�0��i���~�k������I������Fd�Oo\�O
�m��R#?�RS�����]XR�h�W��m/��e���e�S�P�e&��i���a!0�$���8�^+�2����g��l>t���t��c�f�S
z�$�'�$l��$�B�>�Yu���^a�:N�)G��:�	n�FC��~���ny��h�I�5��H�	�6�������fL�r��a�X���FH�{�Fl�Z,�W�3e�����z?��Kz
�K�����~��������-�N'Jf���"��E�P����,�w_�
��h�C�"0��4�P����'6��=�T�i���#��sj7o�b��E�����U2��$Z�bk��Q��K���� ����7�f�� -�f�c��fM�_xH�6����.:�����/~��F��7��WP���{�y/�Y �[l������c�4���"�V����v%�l�C�i4o}A��g�,��f�����m��C|��?'����DNf�|����C�3��o�1�%N����!�����?�>���YP�����RN�Ko������xr!X*�:�M�,����!�#���������#c���0��YDKz/c�����~�s��a����xLh�#�q��2�:��LC6��	�����'���$���a�����]����`z#��mz>�X����XxBg>��`3�!Np�].<��Nf���E��QU���,{ g�*a���z�z�"��z�c&��{a�U^:�;uFl��0��:N/�
��2@�����2���E��9�n5��h��n+��� �?Y���L�CT����|����	�/H�C#�e���*��1(��v(����T�c����w�����G����l�x:�>ES����z7�*�N���t�X��"k�����,��K��}+�@�����y�ok�_C��)�d+Q�[����u����"����(B'�Uh�gAw���>MOAX���R���m���}�<1([`����9S�#Z2g��I�����������2F,y�f������#� �E?�i@�!��\G�+�X�ty�?��3��6@a������ 3���Vc��t��N�F��dd��|��
�<��~&����dg6v�yhP�����GyV3,W��y�B���5���H|�k��/2���r3��P���X�J�F8�[����D���O!Wr'�f�^���&MO�B�&c��?�}O`@W��<O��s�g3�B��P���Fc�,�dq's��8�����Fy�������I�����~7��Q�q����~$�����x:0�,�a�*m�h2����)��&f���{�,�(8������,��,zh��/}����-4Nc�
�x���#�e|��)��[X�x��S����"k[
�gx��<yc�������d�v�m!c���<o������dZz��F�p���E
%�e�G�:��}���%��d�x��X4'{0�������*(e��QD�<��L����"���Z���z�gS�������Q��\��dRN�%�����b	���a����ZQ����MC��,y=���8��N=�46}�z�Z�+�j�O�F��z��g&}��6��j�����O�r5���'��T������&�<�$@��Iq��kpC2l��!�D������g��:��x'G�4�w�F�a�����Hw��G�KJ"d�I3�[�}h��;�#j���~c��O�Ty��n�������cX�����?Rg�+X���}����._e��-���P���E��B=��k�m���jy`�6������y���Q��W8�)��.R�n�w�����FV�<f����%r�������d
������V@����c�j��<���(�������{��C�H�)��'s��(��I��h�|��zM��>��,J�B��9�<{����x��Aj�<O����C������~�!��D�x�Q�g��<�JPn1bvc�T����n%����������
�����<0WX�)�J|h����z������7�B�!�z;�F��I�|����������������i�f����������AmI�����:���b8����D<y2Q�0��y��D	����N=Mt���Kc�<z��@�ly
�Z�����^f%�<����UD,y��X��"g��L�4�h3�;:���D,��	]����h���v����..l�N�&���{����c�����,z�%����jS�����
����o?�"q�LD�xIc"��*4�*E�<��$���������+'3��bE��C�mc�
qu'#�G��z�#R2�u��+x�)\4c���.
��\�Nb�YY�k	�v=���(/4}]d���HD��W��#�`ha��<�e:%9�&��fc�%t�����.��2c*(�"��su��_p��BMj:�{��.W%Nm9=����s����k</3=����&�eOm�����������D�Hb@�q�u#O_������D�X�Q������v��n��C|�	7o^#�n�yo.e��#��������x����M��mB{�<������Q��@���7�8�%P�;/D;��k6��d�|�.&��"F<sh��8���z$<�{���%c�~�c+���x�=���oJo=�N�/�dq5����������q���|�n��|��Z���}�E�
qT^>S������#�������n$���C�
��1�A��xp;�����B�+�p�kY�)��E�SL([����j��58���6N&�\N6�x���}�<A����;r����������=G��
������r��i���=&'������;�i9��JG(4mIKi������y��2�x���f<�D�'{��jz�j����;>Hj,7����M=7S�h(�w|�qi?(�&�����}_1���B����3�<6g�W����mG�|��������o�������3(<['���
E�n�*��4���:=�j;��*S.E��#�]�����N*��������X��[���Z�}������N���0H�"���5V�_@r����/���x�VD��������/�.h���v��]M������o�_��G
��E@w��$��tA]0'E�]s�B��2��G`S����������	�g�u�����_�4z�{>�9����)/�|_IVo���^|����y�O����>�s�o�����?�7�.�����4��6�\�H7�H�Z/��'k����N�G�Q'�����G�]�D�@�����]���7&��4��u�w�}�N;���f��?&�*��U�g����_�M�c���K�����!*'���B��V������r����o��I�T��h����f����d�v������;�'��dUI����d�=�����o������VMN��cz_3��/�����9�O���?I��<M��
���e=+�k�S�w�����x_O���B�4zP��@	��]_��_��o:��������S��$x�9�&0�����p�#�>D�@�|;g�C�*o���~�����@��P��l��������o���.���:��W�;��=/���: (:�o@���|��U��r�����'�?������=
���R��;}(uz������X;��j|����z�t����O��G1)�����5|j�����>��8%��k��������f&�l/��(~_�d�G}���KWu���'�����S��3x������v���sy3�g�t?�����;c3�A���XO����JV8Y^Ku�.6�}2HK��|d���E�
�4L���C�
I42���u��B~��cA�
4
�xv��3�(��s>2����2Hc=���	3�����<
L��3������ ���:"���3�$�:s8�L�f��f�Y��Fm��f�A���?sk�#4��J�!�Lf|?��g3��fYQ�1&c����f%A�`�z���3 ���/2L�)2��~�-��C���e�I�5X�\�)��Y��_��S������e)D")2����'����Dd�2D#&��2J4d�2�9��GSi_�k�(���"���f2 �R3 ��U�V�~�1� �����xi1�,�R�����s"Ln�b�L1���X�:�gH1����;��z���p�\'1j$��c��U���b�I�U�Y��F'!�NbXA�-&#��Lb$2Nz���z����>�0�0���z8I0���P���dO��.�0��D5c�s
��(�0����Q�|�$�AL`�:Ds{F%�5X`�Y��&
�i�gqF	a"N� �c���Q�LQ���PR���MR;~(����Qt6S��R,lA\sT`s��D�l��������57<��`:�zxi������#^(����M�9OnyJ����%����R���!�]���3<����id�=&��6R�pDq.�����Df�*i�lrJaLA��$Iv���*B���!������y���x��p�7�������U�K�X�2�����35����x���(�d�I*�;]����Y~f�Q�Y������c�7N.�e��
)?�K����1�U
��i�<<��6X>��������G�	-H�Z��k�z��
��_�U5#����k��
���u3��m�Af���,������8��� �������?\[e�|��R�+�s�IJ��J��fK0`v��O0MTm���Pc�O:��
�v�{�:X��s�]|�������.4���^��r<��x��&���&�EU�dc�e��/�Tu�[]M{�q�VG��(�n�����cBA�������H:P����e�� �����gx�:��G*��	�/��A`����M�����q�e^OT��R�U�z���Q���J�+���'�������Q^�4��2��;��|By�v��V�����B��(l��P5�������L�JS��m6%����z���� ��!s{K�2��O�
�J��~��2�1�����,������l~�D��DK}�0�+�t�h
�<)�P��!�t�{�x{%������}S���q�EDy����q��IC^���[>��������?��-��2}��f-�4U][|h���t��i���YXNp���<��w���A�q�y��C7��+C��<���Tz��!8��}�O���rL���'���V>X�><�PE�+��|M	�������{%������*�'e5L����hvK����Z�D��6��B�_����<��Q��Y��9�i����,�����H����z�����m�8z���_YS��#��
���z*S�������?�2M/��q�d�'D�����%�~����V�Q"���t�M.�j�����-��z0�-�-��� :G�5���(
g���sm((D2��cqc{��;LKH����iT��YH�^I�G{Y������=��9L�k6m_7/R���F�c�{t�F��d�����9G=fm�O�������pV,�T��e���*jp�(w���e�=���4(y�,�>�Y4�����9W��+c�b7��+��TMf���Ae�L]���M�^V������M��5��H�`��pn�M����6�9&�P��7M�^\����,�8���":l���	�t�Ed`H�����n�)��
������*r�N}�6@��Kx���n�t,�M|�0�[�9�9��K�59��UNx����]:YS�����od���s/��9j����+'zBb���$N.1�*�t'/���K��N�.HT�2}4��Y�����:���}�U���e�w�Q�����S6L^��&�oK�e��=���������	Y�R�V�}e�#SP�ve���X����#V'�2^K����A��Jg�����'� ���dR���PY_��h�@�dU��*�ww�`���1�?�\��M��W&Du��F�mLy}�x�a��\������;L�|�� ��P<����T��Mb��B&S���>�h�G���#�Kb58����D��T^��3����K��;FXO�Vev���)$��7,
����9c7�Cib����^�|��w����.�Q��`�i?o[�K����P�i�O]�b��$��
��G����[iD��:3��4����!��PnV����1�ig����1��e���9�&�?7�<�=������������"#`&�o���auD�u5���r����=J��\<�F�=�idr�B�M5���a$k�����
^�^�J�<ii��_Q)B�t�&��A�0�80�\�	�UC�����6/�^f��������{4�%/��N��^;�L�8D��M'e���p�l��<B�{:�(����h���Y����a�'hed�-H���v6�F���F�j\1
n(���l?	%����H���.Y��Qf��A_�SY5����WK�����-�<�Lco#2@�7��78�W���!�D�������4�|t�7S���w���u�;_KS#]�y�f���LO
hK'�Nq(��S��j���,��A�����?j�d�����#���\c*���E�dNf#�J��U����'0�P��`-^��\/�X�����-
.K�����-��/j@��j��TaG��c�7��Iq?����w���N�	lw�\!p|'����sp�yq������<5�Q�a�W�"x�\�n'��[U���\ ��U�����|�V������Y��>�����7B��_X���mf�[�$�D7�]�������&�������y7��#|�<b��o�v�q"cOv�=��A�0�/�A����a�X��M���G�yF��u���rl������=j��S�V��Kp?@�������?��r�����[}� `��u�i
�g��n��.�����l���oj�O��{�%�	;�{���'4)�/W_��I���743u�P����GK�b�?x��g��9�j�����?aJZ�7���lA�&|�]��1g���Ac�2�^��h�D/7gA.M�aN���%�ol�k���
,�_g�W�*��&�{����O�j.���������s��R�����,��u����f�[��{nn���N�"��:�W�w�J[��l�:>'^2�j����8�}8�Y��"�aW���J\��"�u8 �&��]O�A�,+����_>7��c��R�)-p�i�Te��}?���xhVhEM���$��!��*�v���*�|���~Y��	NS�������h�����A�B~\U���A�����Y��p�k�)~��_7(�7�	�F����N#��Ki���;���v���hK��@s���y4�����D�\!����k~��5�_Y��s��g��#��Y�D�P*����2L��"��IB���3D�5�'u�����/�?>'�E�����0���������u ���M��>���`�
��mR�������`�����u5+��j������a����#�jYb�3w)8�*��D�p����~$��Mo��J5u�T��w�oBl���5?U�Rkq����^����}S��]����q?"&�m>��3�9�������~��`���G��v�Q�z���f7�M�;Cw*}����WN���1?[Z���o=�����bZV��h��)
��K`4w���;%���_O��]W��2��v���Zf�du]������t3*��������TjX��=������RU.$<��!+���Dtc�_����<�n��w���hX�lb����kw	"��0z~���F�6�rw�}�\��z�W�U�=��S-��!q!�&�`v�@�R<qe@T����?���C{��e����Xy!�CK�������]R��c��<��z�����%t ���A�8��V��~������k���U�Y>�.���CT#F�!o�K�!�����>�,�6��e�����t�hb�D(D`�f�rW��F��j��eR4�����v*��������Rc`�?�(�<��!Isb�6,E!w�+����_��3y��
�4Q�B�OjV�S��U<����������>����z$����}oV>��G"�ZKG�{�I)�\��@O�j�>���G�y�@��#z�h�z����M�����L��yJ��k���dv|�iP���huA�"=���
�0��Z�g�!d<��P�!��������$r�o7�e�D�r��B}��,0T���������Y�����aH�.�����I����	0n���Ktr�����'s�o�����-���]����b��+�R��@����6�}?i��J�����b�1������;yz{�� l�s�� B�&=�ZX��J�N��'�@0���P��z��$��#��}=O��s������5"��lOaXV_��4�u^�A-<M��~����~�d`�R v��
G��`ip�/�����g�PJ�������.��� ���|c8z��
W���i������;��xKXt��O!�u���;:�P4o�J�+��#��Y�+���q6A���T$b/jh>+���
�u�����a����NZ��~w��S=��	y���*)�#����aM:����K�e��L��	�p|����:�Q���Q�	%B�[����Z_W���d���J=�����.����}�Z�X���_���o�i(����O)��p�v�op-��`Q���[8B#�@��d]"����u�3���^�\�f��_G��7������W����C;��aE2�_9���!	h�t�3������D�mY���tS@�v��]Y%���B ��������� �~�
P��2������S ��Q{
���	� S����:����Q S�?�~��?�z^�����;���3��i`#��s�K������z��y;������a��&V�J`�+���X;9{u>_�V�'_��P;�/������������5��k��@a��y���_d��j�Wt�k?8=���M�3D���x��t�\+E�'���!C�>���}\p��������<=UXuE�##��T���l�����\�F��KX����B��Kv�9�l����z[BOgpx,�����m��]�Tc�z��|<����k���Q@2D��������qqgU
����C�P��,����p�'1��	B�c�$9�'M>�ci�.�7?��W:(�b�j��X��N���?�>&Zhr��-���k���z�_)v����2m��K�����?*�j��H��\�t����XwW�$�B�(����-Ex��"r�k^
��C������Y�\�qK��N��j����T���M��5��l���l�����V���I��R�CMO(�//VzQN�a=1��[~��B��~k�J���:)uJ�?(�R�k��|��v-��/�+��E��
q}��(����h��a\�p&��r���.�rhTs1&"��h�=��s��	�~�[�o�b�=M;�PV�E��`��F�}������U����W�]�wh&	��M];���S�a��y��%�g�����xx
���$X`.�c*�B��92���	m].��!�@r����t��b]?�H �4�=E0���j�#��_Jc�$� p����>V[������wv��F?nAN��HH�S�~��Qt��_$�><���zE�k�U���G�����1��U���-��4?h��n���z��n�&��]����R�l��p������^F�Z��Z�{�����Sy�����8����=1��W���R�2tH��.�#�\oCi<K���o�b%2�������w�DX~��������m|��@k<l>�y������^�~�b:���a��I��e�����}��g8]T�R�(�eld�V�Lw*��S�Yl|Z���*�`�s�����n���a��/��"��b;����HT�#G�1�2��*
�@Y��K�t��mg��z��&T1P�$x6=����2�y2�{�_��(x|�up}�kaR(Nw�w���}0nR:&8M\�w61Iar��#���l�[�@;���2�>�_Q�����/�z��������%6�.�U��m��<z�mh��(� =�=~����}�������Y�^�����%@��bz�B�I����Ih�YZ��Y���#9������������bw��#�x�;��b{P}#+x���ko� ���t��h	��*7u��K�*���~�����~�w�n@��B�n8/����tUo�}hW�5�p���RTVh���h�#�\-�I���J�E���`n#����9�W--!��wt��v�!'vA>p�����}�0W�p�@������vI�����O_q'�O��rL���x~���]����?nW����F��v���JT�_\�k����v?����'���:0}�������V-nP�����5?CN��a'j���;����0�����b�("��?���_�Z]6&��Q[���V
!i*����a�/V�V	��"��pv�����H��a�X�eyu���H�>�������!�W/Z�s��z����sIuz
*b�����D���a#�.��a��:�_Y���'�����+!���!�6�=He�t�@��v�,���h���$i�O	7W�ZeHReHJ�zh�=|�+�f���)��W��!��Dd��K?�f������ER��X����
A�_������������g�2p�;��?��>z>rQ��h|������uO�����7Z&y��! dQ�j�
T)-�x���eIx�����k����}_���I�p@w��!V!{��x�z.|��cK�#��9����{�^G��`�`����1�1���b=E@�����lm7����9z
�7�+++� &�:�'��"���1��W/�����zFfT����Tm�E����
�o���� /���e�����#le?���W���W�������G�J�l����/W63�x�$�:'k�DO�I�xz��,�lG���"S/�����~����B���E�f��|����f�4~e3�3�
�W���������j;���8gy�A!�q+�����OK�0R�O���"�,*v��kGk^���?7����=v�/n�c{��  ��H���E���]�d��]��3��6j�N�5�
����_����/�d�@^��2��3O�~��������>\0m�y���r���D����F�����I�����6�V�U<������Y�/��<d��x�i/W�`������g)j�[U_�/8�7����z�W�{��5�]�G�;�nPZ�{����1G������O�/���&���>pR
��G;N�-�x�F��oCHs�@�;�-[�e���5;����G��'��?��8��{�!{���a����lZ����6&�
�?�2�Qt/������I-Uh���Y��Y_D�+�n���I=��)��=��	��[�V�wRi�O943�)]R�e-���6��T�
W ���S����x�PV��g{xy^�Ye�;g�k����� ���(Q���{�E�&�psp2f���OMS�/��lQY����������H���e8B�M������o��u�3�����aC�0�`��F�A*M��^i8t7�%��f���$%��Q���E$PK��GA"hm.1��,kR������RW��$���������P�Wp4�qF)I~����@�Be+�YL����������>��Ex�h����\+[$RL������P��o6-I�����R������vu�6u�-����;��z;��Ig�2�c?MC����"��~��3����j;�����	:-�|�J����5�BgD���E�6���p��V
��-�����U��da��YD��������\���aD���'hc`���l����v�a,���4�%��];����Y���M�!$���Lm��k;�������������X[7W�e��zW�V�f�B
S��X,@�A[�k���q�__�>���'������R��k�+�D�;�+�y�~.���O�7��vR����\ck�Z8������u��R��>d/�E��iB[U)�������|(��	_�_��ji
9N��`[�g4���lg�?�+�l�p���m��1�$�8�Zf��Z�v�ql��YW��8}�s(�12��,&�����i���N��Q�I{��aKvo�,���:o�%�2�D�Zd��x���#�[�2��L�EQ����D���&���%��=F�
�E��f]�7�z�w-���kgaqyU�`��?�����5��B���j:�vG\�KL������B��~�K�����L�o/�H��C�S"�}H�E ��?�c6���C�~��N����s���`�YP�n{
��("�����t�P�B��p�u���q�)���
���<�#�7���2) �������a!���E_��g����hQ��"�1�ChzXs?3�m����6R((���n��B�c���#�F�E5\$B�k��O�_x`�1�Xr�?Lp���
��@{�����n�����m�������i�2�����<�:��hC���}��������l��h~m�����`���?���+��*�\9�;���z��Q����\n*T����N'6�s�x����G�:�67��!��r��h���s#J����J�=��'�����8��:��?=����������&e�$��Dp�sshgKpW��7�����1�G@��������/q��	���)Icv�	`�x�2��^-r��V�=|'Q�������K�;�v�U�y5P�S����3d-x��c�%���`	��F{Z#/����W�QH��]�!�u�+��4�{k[}��.X�^y1�4����W��z�*]����$U:a��A��;�g�����[��:�x7^gi�:TI:M2��8��[>O�1���(����f�
�'Q�HH	��q��9�\tA�n���*LP��9"��L�����4�9�Z�o�k��~���H������9r�OM�.4�����O�cmY�����@�@B���RmG	�7������T��oO*���S:�?��P�������	�yu�zO��0��"�?�Z��B�V�y#m���?:���G��|5�k�e^ho�<K~�J��v�Bo\!�g��4`�K-|�K�_x]k�F��(�7������Fu��gi�lX�T�:�}J���ya�Xi@�>��=���������i��G�O�_��!��%:�����g��Y�,.�2�%
�bw�#;V�b����lu;�)d�m4-�1��.FI���i�lF�14�\�����
?�������-���3����^�
Gl-�9��[%�m��R��W��g{���U^�=�{����>����������B�n��W�.��z�no�H�=}��Y�z��%Z��������e�8Z�!5$K�������U�9o��gUODa�C���]X��~GqP#SX��u^����f�c+����r�V����x�2���X8~��y��RFi�����VO��P���_�2�RK�A�3�����9�u��Q/�$,��	G�)��������>��b�I������s)
�s�rn���uL�I��>�1S ����I�������%-_��\~�H�1���*��H�/#��:��8���5������t�����!I]k�r�\���:'b��l�3�2U-�?���h�%@�;]�Z�) -�n���+��HYq!j�@��<��_1r>g���k�7��@�j��T��]�7K6�&�uA�rS��~�S������x�H/��BJ<m���<b@�I��9�"rBFd������Rp���H}?2w��[�)�Ok�u'�P|�=x�cU�4���-��O9`m�u�X[*�d��������8�qt.-�u?�v����"�b?���%�f�Y.X
P�.k�~��M&6�������Ya�!��pu�+=�5���r�P�K�r��^#>��G�Etm���[E����M�������������=&����Q��J^111~�P.�EZ����Ey���R���z.h�d/��{���?�^�K&X�hk-�df����� ��U ����rgCo���C%���H�t�2yL������HQ�(q��������T7-�l:CT�9L��(�������V� �>���c5cJ����_�|�<�%���8����C��	t�^guK����(��@i�S�Mm5�m
���c��������_7.0nN`�f�-�7�!���D�)�����$OHV#y���7�������a���w.z|��;��H`�u�;�zF�/`�f��,B�/��y���2�4��yS-�mj��{#���f��:��+{J����u=������K����y.�v���g�Gs� �A��oO�.|���8X��X+�r��c�bM��;(�n0��{������yqA�/.pmK�s���V
���L���S�c]����L����y������Q�|�&����s4luf���L�Q0@���W��%|~�����4����Ev*|��m�@�p�kIa�b�`2/��<�L�����/����9!p��d5����,d�a?�y��~B-y����e��~Y��AP��~�_����{��9�D�J@D�$&G��h��p~O1%������d���=a�9)`}IP|��������	���[;����R�Sy�[��S�������U�R��A�����[�4�V(x��@jx�j:�G��%�fTN�����uDMMA�|�6�G=��<���I����H����N��&_�����i>�FRp<�P���6�J?P^�(b�� �$�L!������C���Z����?�
���i�i�!��B���z@��N ��d�_�]���V+b��*�g���� n�F�m���Nh��I��x���8�Z)�<a|����E��
y�ce���44a�L�c�7$�tFm�}�Wls����\�/�}�F���������xdyi����>�0�����"~Z#8��rBM�e&u���lN\��#k�%���#�z�=s�^�>���H����/�e:��C�/xmn�m���dd��;��H\tT�q[|]S�������
wK\�24H����
�GE��a��{; �<�g�a��3|�[��y+%���*���L��� "1�0��|�������� ���+n�H)��1*�&""�����N���I��� �:V�������*�YK{�D�H�������R�<�����f�l6����!4�I�,]�,��}�7?g.H��T�1B����F�"���F��E�!���}���p�RBX�kI [���k�g��]t?�n��8�2;r����B��xe{D�y�9&���C�f��@��!\4B����{o��v���nN�����k�����\�tr�A]�v�4B:9X�.9n�l����������q��3�����f,�������K�JQ<k���������bSk��U�aV�8�GB�.����0.����q��m�O��[�akH��J��X=8kL������y���OJ0Js�";Su2R�-��t��n��K]���L�o:}f��������D���U#t��'[��$�[�g�K�m�8�Y�v�"�����h����D��V��>[b��oHl6�M��1�H����#R����qZ��m��N�y��'�355g��+;$�R�Aw
o�L��D���9Y<���r#<v��1��������w
[��:`M
����O��:�������z��G{���6��.0m���{��.pv��_����|�&zv�
M��U�z�@8�15���T��ZH�Hk�iR�e�����;���	�Y���G�,���v
�Cm�� �b`��G� ���
�.E��z��D�k��S�R��H����<[��?�����/�+z%�J�-"�o:�q��������>�I�f�p�1���zf2�	����NW���N��Q^�c�/��3��Q�>�:�����O�������������8�|Xyc��8mSqWLom�&s����9of�b�^`6S����=v�=(������Yt�HUX��;��Yj����������2��o�2X�����m��
�R�(�����Xr.F!�d"'�}�zW]�g]�'����6Sn���JL;���W����UiP������E�wE
T����g�P����4�X���P�}H	~{G�*y��w[���!�@;�F�>�^�X��4����u]�dd���r�A.}���h3m��~�3]b��mD����-�����*�p�%��l��	E�E�a(��k���p�-�UW����*�T�E3=�
��8��(���FJ�������������^m�$���C%���\5|l|���>���F&�����C��@�z1R�8�J���`����R���y?������ ;j�_8�Ws��<���*������g2<7sE#���~���������������j|��n��MY��j70���<�[��M�3��mN�Z�[
�q�
U��C��4PC}��aG�1d�"R��e���2b�Z}}8�5�A��9����!��nT����+�ZS�
�T���+�Y9C����U����������(}�X���yA��jo�9��8TYw
�V�����_��h���+��@ygm������ ����_h��e��O��;���7 $���}�W���D�yul�c8���w�o�j�\�������EK&��RV�o��
��~V5K<j�4O�{�W��wH����}^�bB�����n��p�k�q'L���Y��$�Vf��
��|��8���rNk�`<��
H���,�s{�����d[�����e�����
����f.}��������e��������A�|+5����	k�#f����Aimu�&����� �����`�B��C��tq]��P��oZpJo����G�8���d�LM�0�K��3�>CSQY�����]I~�Uue!�^`����57kU#�4]���J��`����@S\/�3���$.�`\��S�+�\9���x��OoSR���j���N���t�W+�������������bQ��-bm�S��'�Pl�����j[gRgH���%��`��'J�	���"���]�E^M�W���r������B
v!NE�Q����;���{��u�]������Ne�E���"!ii�x`���M��#��+��u��6=?D*w"�)U�%�C��D�R�~(�C���|��F5q+I�x>�K���iR1�W8�I�[��[��E'������cE);�}l��{h���x����P��P���L.���#ce����=�l�&W	�d��a����,GA��Z�.GsF^ ��xG��?�s9�g��/K���2&��$l�d���s\�������V?�XbYL�E�z��(qT���2t�7���m���J��T����#��H�~zJl���T!�g�����,�~���J��; 'vF�:g��Y.��t@�B���kkpR/_��hd��!2��G��J\�3��Of���n�h��Kz��s�� 9���������xI�A>���*;P�\���f�c�Z�q�H4xz\�N�a;b�H��cw�[�x�o��sr�y����
�%��x�� ��l���	+����\����u��u�9���X����O�
t���� ���%���-c7���a�t{�F�q��13,mb ��Dz�ynTOf��5!�����Y*���������N��,������.w�_����)����b���[��}bxp��7��r	�c�2O�$��Y~�9��ch0�����K� h�L(�����lh������P(����#��Z���$_�o���#\�����<�"[�[�D�v^S�LX��e��v��91���x$���,"�������)���=%p��������}Le���P�.���u���F.#�����?q����t��Z`�9j�V�K�/��&�=��
#y��i[�P�i����+��:���W���X�������L)�����.
���U,GJ��P�n$��b��[�����Tn�?�����H<�����+���c!���
�/1����#�;}�a�}����i�)����������>��9����2�db�C�I��cf��D'�HY���z%?����zu���I�����:�M���r��A��IV�$�v�h�[���>�y��oqp& �97�����86`������Zu>���]QO��z������a�7���>s�5���n�9��8_��;����Te� 
��S{���^1���M��(���[�LfI��\f���I���-����gG�Be�-�isF�e����Vm5�s9>V��4�:���q ��Q�6u,{���l���h��PD�����+.�]��T���������?!�I0l���Y��^��C��Fpv-1�h�%���0���AEq>`��/��Q,���v��B=��
��ub�����U�u�y��C�!�oR�}�����d����_@6Z�'�x2��s���,L'���h��D����#�F ?����������N��S
�r,u�)�W��-����r$�~)����	a�x�=,���ff,�f��8��r'[>�8A�R������2NO"������G�+.��8��z�>�,�_p&��,0x�x��������.�s5;|on����{���=������������g+�J���]��R�nY���v�3c����Q�UIV�B�D��qu���$������������F���N�G�8���2� O�^(���� �k������R"I�@yuFU�������
�+D����~������o��b��{��� &���W������@���?��[�����zw�4rN�����N��� ��`�~����^���<m!���4��z�[�Fb�|������#[�
b��E�'
���^��
�vj'n��*B,&N�1�e`�����P�1�a#U��L��G��x�D����L�C�ab�?�Bc�%@��c��v3�\G"M�$<���H�����GVCxK/��>#C,���p-Yn�sy%��@[�lwYa�|��}��S��L�;\NEw�Xx����Y�4�u��H���nY(��G���h;,��sWqd�j�_w�7���{2��<��Va�H���L�����8x6fF"m������e�n���0�P]�'?����H��a!
�a'1����������L��>=J_O���[���4o�6���^�MK�����5���z2�
�+�O+h�g(!���l~�����jL����s����P)����HiGU����c"��4);?/�@��Vm���3��������k�e?psyR|�l@pj�� ��?dN3�Q�9�f������{��m��vv
�_����SqS�3$"��#n�M��#5y}��0��X��{��������S�������!�/���r�~����=���=�*~�	���[�k����3����&�D��r����e�3'�f�6����1�+�e���M�r�-`��q�US3�m�+T��z�l��=,<[\�2�R�r��T��L6j���vs?@�)=�kH�JS-c�A'�������e�D�n�P�� ����f����z;

����>+y�q�TD(���r�T����F�K9�r:��D���-�xA���
h����|����M������������R82=i� �d^<f�zF2)���M��d���~��wD w+�A�Vl���%�#����� ��E�y��X�EX���k�i�O���T�24�IG@��^�Y���v�������zq�������v�j'f&(�~���0�����O���w�����
����<����y��8�I�PP�'�G�e]�L1T�����2�K�b!$�U��}nx
�
 ���I�
��a�f.���$�f��Z�Wfy��hF{D��Bq����3����x��~�H,���yi� �H@�1BS/�1�lQ:�����|�"�fn�R:	DdXS�Dw�R9���?_��x36�Y���o��A��b<{;!�2��GC{��V�W���v�����?j<�����K����$�j���~Ha�;*{:���\������e�d��;�q#���'P��/f���IIb������?����&�A^.��TM��c��� ��{I!����:X=�;������~�������e~��}����7������^����q`�wnF��2`�$�9�)�&��[����L�^�U.�gs�_w��6}}m�&�a{�B��W�����N-���\��K�l��C��%�*Q�L�1�uW@�t\@�{F:����"]��d� �K��l+Y#�+�h���f^cNN����[U�r6�4+>��(��bo�������v��l��w��_��#Q���U���:����6%����0��)�TVp���e����]hIhl��o�AW���1S��vCn�R��]������

#���(���!]3Z5��+�bj���*��|H��R�5)�V�
��F>�ud���D��A�ZW6
�	�x���so�k�=�L����H7=��*��<6�����`���g����{{�G�<�2����;����5C\�-]�=�<�@JWe���)"k�a���m���.�2<=���/������>*/���=�"]�9@Id�9�3� �'L
�*��������V���'no-���C�9d������z��#�����E�<J)�85�+�g�]j��\�/��x�A�rr���/p���Oo+�K|5z\���|}��w������T��rw2��1��������"]�R����(��s�����W}�t~�B�Zh�,\����	(t$��<���+�r�4����n���+����ke�3J�sJ(�n��o��5�o2��9�,e���0�G0s�hV����[��������s0����|[���6r���h�@.�������J�4=)�"Vj���j�]������R��T��4��)�K����@���	�s�����v.#�����L�����>�������������.u��n[���-Ngm��Uy6^������t7C�	$M�\�]������R2��R"�P@��I��UK��.��4[��-�m�A�R0�b�O�]cl�>���U�xm�hWs]v�ZU�v ��+�	3	��EiV�����p����K����e�]�)�����j��9������eq�n�A���R���
�-�q��B�y��PR��:�b�"��Mx��r�8�)6J9xlqY	m�`��,�����8p��!\��Rs�H���c�bL�c�_�+�h����3m�;rl��^���[�O�c\�
Z�q�YX!�����,I^\����t�������n�U���r���'A�ZW�v�G���
�@J�w���r��C���"���	q��WcB�[\�Up������_�]M����O[�2��z��)���S\oTr�%],!�@z"��t��^U,c>�?�@"$��-�\�C��9s�����|�����8$��@b�GheVH������
��_��jR	|�;Q}��R	z[$���{��V/$�ZO�z�������Qv�n7�F*y�v�nv��i�����e�����\��I[��q&������� �&1�CY���a�)���}�Q8<E������l5�
���>)>�`��hN�E��n����lK���(������D��������^x��,����>F'MT����	� J�$����Gi�W9~Y��^�����^�I������������{?�$!F�I�����������LE�x������n��� "�h��_5��� P]����,fm�A��/�^,�����v�RP@7��8����Lq�
G:`��:�[c��S��0X�"$C>���G��+���]��`��g��I@�
�qSC!b�cU�bks=s�������Y������	M�4�\k �������N�}��soD(���R.�[O?$:*g=��',c���"?���3������$��\9�|���+�z���'����T��4A"%i{��E��������1���(��	�\
No�����fB(�I!=4+I���$I3�!8#PE���@}#��xM��LZBm��
�����fm�R^��"�
����M�Q�ju�����������`�� c�8��q3k��X,����?������M��������B�{��5`��S���v����L@�	,	$��P_�����MZXWH�J�fW��o����P����YgG�H�S����"BH��=���9yL�fq�I�)Zj�h�'����4 Y���Pc�3>:���K$�:��M��(H#�,[i���_�`N`���F���D\\���}��o_���G"��c>��~#<�����hq���b9�d�w.w��`Vb�kH��(G����k�����������z!����
�e�r����F�
�b����R}��k#���R�t��*7n�;5
��=�<�4-�����2�����^nz#c�A��p�����=o:�E����w&��r:��!�LD��N�A!�xUC����s�p]u�����'.���X�Y� 7��E�j�Xf�,�Ih��_3���l����$����2�C1����`���L��B����!����WTv��[P��BH�%x���k�;�+r����4�H�%x��-�y�uL��!=����F�R�|N}��#��h1���B����(�����d�w���;�R���(���\C,n@3������
-n����B��x�:���^�	E���
��3��)�B�k���VV
{��}��������r������G��3O�#S���<�����p|���0�t����5s�Vz�ks=U���R[��Y�����!9kW�?���^�W(��p������<�3:R[�����S���z�~J�O�!������H\~I����y�Y��|'�$��{v9T����x��9D���>x��i���X����q�i�E��y�^�P�`�����{5o{ L���\)�m�r3=) ����NkH�&1T*�w}(2~J��	$�%0mK����~���c�x���m�:�R��$�O�?s*)�,������=���a�f�� >�6w�W�Y���+�I�*��6q�U�wJ����[���M&jc����Z��T{Vjl�Ynjx����T�><�,���bbz+8<a�>F��N������u�7���v#suY�Gk��	�	���8b��-�kYL��4�U�������ko�`��/�J�v�?��?��I.��N�-�
=L�~�8i��3�����r�Z0"�-�g�?D� �/Y��L�����
���7>;����{Uz!x��?I�.�;�5�#t��lZ�t��K��p>p��j�6=����W���q[����~���w��������	A���	��U��)%I���O�J�-���~�'o���v��0v+w���+_�6>(7��s8������M������N�����{�}3�<mf���lg�L�|�=P��b��sR�H���M*&����q=^S(/��������3x6�o��&����h�HUQ��L�?���/f���g�q���}L*��PMU�}��TV/t���r�6��.�2AW�E��/��
��%�T��1���4�Lq]s9�_|���g����o���7a��x/o������T[�������������A%%F�[���nh�''���;�I��@�HH�Z%���_��h�������	��~F�	�Ad�G:�����XdP��B4�j�mJ����.�-�����5���������_�$� `��#���d�1��h��+���\�z
�b�$�����s�+v�Y�'��+�s&����?�T����P�J	x��u�O�8(�G0��=���7�����H�WR�����"9��tc�Q(��r��8�n�!i�t1�?���������s�v�F������:����8�K�oU��������.fn����%C�=4 (@�I���f����Z-����-�{���S�(���>"a�=�I���ZY�q�}����l�\�>��l�
)��f2�F��������}�{���{7�a-��Z,{�G��De����P��|�^{��Wp��be.Z�K������T:7*d��9Z�+%.�;��|u�����t#�O���n	���Kx��N��:Y�}��g��%��i� ����6�t�F|H�s�)]�Y��~XgXful����
�iaPW���),)?�\XQ5����a?����5]������TXN,%'��gn2�o�XM ����":�����:t�a+����U�]�$�6;�����ki��xng[^��Y"2.��f�],�����1�\p�QZl2G�����IT,8��^	[��e�����aKCb�O,=|���l�IPa@��I�U���1aa�_R
.���'���*��	���fV���\~X9B��������&/Z�y��T�-t%(�zxqL6H��IU�\�.�9<'t���9�[�
���c$*����t-��
�������W,���OO+�ad���M����F!�k�D�\�^2i6�(g��vB��
z��FxK�o�^N
���|gt�W&��
.*F�(�@�o����!
>q^"��~���n�QQ�w~�s�������B�A�IK���}�0�Y�&�������	�J
__?=1,��$�p���:5�s,q^����
-�2�'�O��r8i,��5����hp��DZ`�d���"���/v�87'���Tu&��g|����|����3�7�S�x�E������/KK��}�P���b��'+Y ��)�X�h����:S;���)	}�'#�������M��5���6��}�4��� W����:����G	��/��f�Cb��>r�=�njg����ou��u�C��ol����)Xbw2��m��#bD��`��~5��x>�gwNa"��lJ�4
����������MU�q&,�hZh��e�
"�6$)q`S�C:iY
��(�"������^%�-[���"��`������%3��V(5�;��^
�(��uo���Y�Np��&C����4��\����O�Pl�n�������d�0=���wX��
���b�YR��k0�_�%��1�qguel�w-`��%���"H��	f������1��*��-��Y9~��$6���;����A���|����%-$#0/��1��n�k������woj������Lz�
�Q����uT(�_�_O���go�������X�A����lg��J����U.�c9�8���!��>c���(��(y�1���kyAt���1�����T��*M�%���@��y�� )���8���c-ot�����KJ'YL����">�y��G����fH8�
X��'>���V�����������;,�9���P�|��K*O)p��^K<��ERR#t���zB8a��:sT��w�b��fQ���1(	F7��~d����g��Qf���{�cCW6�MA9��+��������}Y���l,��-9�(�Ikz�'��t��'#��;��Zj���7�sZ)�����b�K@^��_���)g��+����SD�p�;� ���6A�#���#�SD��E����!�v���I�d��i�7����|b�M��l�%�'����#�zB���������}��X-p
� P�g���|,���Q4`Q�s��;��OQ������N����?��I�d�A�z���i�������9Ji����C?��;r�hM[#����f,�v��Q`�*"����) h+�����fb�7vM-_�	H7(7~I�'�,�W��B�0��&��X�-JL�K��@�;V0SRV$��I>���cwXQ�i9c��u����l`5����VSY��B
M�M�w
f���)��FN=�DX�����5t���a�>X^���.(��*l�x���:�v��j���yf�?�=,$=pM��U4�J�T�-��Q�W�!4�����bQ��{�a��p����~Tr��WH�Q��� ����C�!�q�<u
��\Jh<M���������z��U�+��D�59?���0����	3�r������SJ��<�?�{Z�=�q���6;B���u�-dm{�������_�[�t�>��������YiB���Vz�+��<`�y;��9pm��O`�$IL�L-@�+J~xu�V�U:qS�"��S�e�s�Xt���������[�.�g����&��M���
��hN@�������$�9�Z�a�x#���H���u�8� �`lF*@ba1ATq���J�l��M	u��;��j��C��x`�����S^��u�XI<y&'�8A����@��C���?|�z��E�X�S������u�z�j�ykJP`��������7{-����������	��f�L��i-s�������P�0g�
e4�E�����~���%E7�}���"�|�������.���R3���b3���	m��9�}\$���a�����������-Q.��C���-��D|@��|�8����vu�6N��r;�[�69Q�x��)DKrcH:�����H�����b��f�z�J+[,&j:��A[T�%��7�Q]��+���>m�>��L��p�cB�t��X�W�N���t�VX ��H��N���"����a���I�()1�1����j�fn��0v��jJ��[,�g�W�� ��w������-	�_+YH���������
����q��fMW��b�}�#��~����W�jr[r^���c�yn��`P���.��j����2��1�
r�A�
:(O'2�D�����sQ2���� �����{���iT�x�$D�&�pfF=�P���Y!��?��_��k|�������������S�s
��������iZ�8��[�f��vs<$J�`��~�s/������j�6�$(��i<����7	����1��!1��-��#&+�����N��r���z�Xj�B��y��{`���N��_��eR���������-�H,���EY�4��
���k��Q�zo2sf�
�9K6�tH#�0��YD �O�k+3eM�I�tR�w���|�#-H&�N.3�
��[�'�vg��C��*6g^�K��V���jT@�R��J�O�����g+��8���y�"'���R����7�R" ���W�ON��T��Ma8O�����z���e3(l(�Z�m��N!LV�O�4�Iw�&�"��g";�m�����ApI�_��uS ��Xqh�<�mBn>S%��I:]��^Y8�f����HY�F�p����.7'�{c�|�Xo!'7�Z����YG���s\�j}B;B�SX6kT��C@���T���S�����F.�Af;�4��}����k%O8��E����#�i�^����,DX������,9��p�n7���;L5A�IA) ���<���"Q2S5EyZ�;7�Y����vj�g���z��g]Y���[���Jb�N��]Cbp���Y�;V������E��Z�Z��a�����-/_��:)�dB����tM��j�s�B������E�.Fr�NA8@O��)����%�^��]�������kT�IcA2D�69��P(���L%�U�v��+n*Y2�<%�k�����	�
)�a;�p��M�����$@L@�5���_���-����m�9����42[�I��R�;o�Q<�<M�~�� ������8�G�x��1�����xbK���rS�Zw�%#�
E���2��^�ahH4%��9�� K��e"�����+~�%-L��-P�q|6wU$�K0@[8���B0�tfnK���F��0���	u���hvUHTiD.e�8V�
����m������R���Ve5J�RJ�w�d�/�J��JD�����q�|�H���z3+�l���w��h�-��k�c�A;k��]8���:�d+�T��$����nJ/��������q/����]:r�N2����}P.�������^�v�
��'���Um�[�-�dK�Q��9�����\?;��F��D�Ql�>%6�4^{\#�@~���������
-�`�T�[?�C�{��i�X�Xk+��C����	e����o���.������+���w���2���r}����g�KqE���v�en���d��I�����X�3�k�"�i����?���S��>�J���&5J����z<���L[�7��jgH�)s�D�ia�n����p?���C��lL<$�%
�$�fn�NS:5@��<���q���!^����1{��V�c� ��������y�'��S3�|��B��*?��)�F6[1l�j���H�Jo�AU���S4����)o>fz�l�z�r�0Z�g/��a��������_��veX6$��;���TL4�A�)I��Rx�g%M3v]V����f���=z)7d��-��u��s�o��OphQ<v��-�v:�D�`?���z9xx�&�#��H�~�����z;�X)��S���a����/.+�'�= u����*��{�<L&i���kcf��X�>_�����9h4(���_��!�K������4����_1�,�a
��x����a
8�])�k�qz�WNK�9�9�d$�O62���!5�$g��-N�����`���`��O��>�%n���B��{v5-cQ7v6�F@���Q�oq�������MG/�}	Ct�~:��Qm$ ��'�������C���6��i�9^ H����*�4�X�6,i��A}^���a��q$�<�g ���:��������� ����`���o�
��G�j��l��E&1k��-�������o�%u��< f���;�V�9���'�{�V�l��~$�����pnY�����������v
�{�>��aK(�_�I�+�������J��s�S�t�k>��<6�&	����lY^�?����
kA_K��h
�u~�},���&\]t�$Y�G&D{��6#p8*�xAb";��<�������(�pB��g8�f��p����H$7uT����!���!��-'�i����E�QzBH��-�D!���6�b2�����J�_�N'��������
���C���t)���Qb��!L���Ao��Z-�/�s�W�H����Y�� �'��rW:�'��ryo"M!5t��E��?:�����]��]��A�_~T/
����kj����	gmd���w$��='�(wQn�@������V��\G��&,
�/t��i/���4��2�C�p�00�	��P�����M&��gQ-��K�+P��G+V��d�"���V��>�����)���0�������2��^U��J�$�3��B�o�kX����%��i�q����%���0�C�t�����F�q��}1qNf����e�B�{�2&��F�_����2M$!�}�!zL���aG�pS�o��*��J���xK��N�D���l��'lEEg��$���U��M���L�k6?�h�.����+���
��eFS"���n�!��� ��T����n������v�tmot�&�7��G�U2�'De��I����s��RH��n���r������B�a$�����t*�jo����N���c�$)�e� S�����,�e+t����&�_�w�"�~\�^�����Q�Bq@H�:]H��
�4$e��$��!��.q�5VRU(�Z����e����a�
mu��Xs-�4y���bA�]�[�d\l�m�O��e������h��0���0O�����|�^|��eh._X�{����Q�,�r�f�v����#�����5]Rk���5����D$��t���t�)��zv�:�+����mJ�vjq���D��\���*c�����K��Yj]��Eg���[+&��H-yU(��{,�<RH�jk��W�!)�h
N�����g#�%�W4K[��@U���J{qOW�eJq6Vl0�)��dRf1��\6cn�����|!��{��������Jwr�����sfO"dk�<�MDg��]���71t����^g���_'�������5���g?�Vr����������f%m���,s&a8�"`��cQ%~����?t4�+�Q���q?������pNn�6)������@�V��z���l�E��������#�@.�@�X���@�]��Z���C��7����^��4�J`�t��S'��p��.������H��
�mR����K������1�e��d����p:�9�E:�7���|��UPY��A������C#��	�N�O��<P�;��/�`�	�k�6���/��m �)�E���fF��Z��%�I���m�[F6����cc��.��n~�A,d��z�d���E�PM%��_L��,Rg-��5�E���}inI��~����Mo���s���[A
ih���p_�k�m�e��(^I�@��f�_����2�:�>6ja�w�����T�����E������=������
�jhm�f�9ZKtGA(�79��j������?�*h�^��������he���;���R�1�N�F�
�g6�6�C0���\��������/n)����
��R�z����y#qI4��dC���	�\�����������G�S���8��������?A�T�EhKb���3����n2F����;��"Jng��V����B)�
�H�5�	��'f���]�S��~<�������t��P��y�%�|��1lW�?x����=���Hr]�fv����T�Sz���g,��Q�����';D;%)�7
�"&��x� ���W�����8i~{d\��r���kOq_��]����
��,�&V���+I��"K�+NDWV��p��j6���/$-n+�e�����J�hx���������!������I�>
�����r~��0A�{o�rx.��6�����T����n����U�����i�j#f�v�[����a�7�(|��������3��8��Bh��^��Q����5�����lsJ�����&��i�6�I<y_����s�`TV�G	=L7�w����6������TYq�CX?4�y�xG���|��/G��IM�I��ed	��v6��[�����QZ����gl��l6�^M�p��CnN�e���f�^����#���(?!����O����������Z��X�9����T�����>WK���~�p �E��\���LG���2���x����Tv�5Ro���5Dx������j�lo��`
�d����?��u�,�$p�F��v
jD ���h���Z�%�Z���<��ZX)��J������c�G5
�o�C~�	���T&j�a���.az.�G��l���J��d? z�d5f��M����w,�+�qr��U3����;
2��D�d�I��� I�?7��aEC�C�q�����LA�6���|?EpJ��2g�e�2g��&�>���� 1����.���o��3o?H����b����'8�3�"��h�
�VP�I����b�+�N$�� ����"�^z� �\���q�T�F5i����l�z�s��y�`���/�r�qqI�9I9usj���I����9��q��Q��+�Ll�z���;�*$�X�lF�2G�@��s(a^�S��z�~DaB�������=�]��K��}�n�1�y��=������R8j�,���YF��hV	��F���X6����M����:Of������vq��*���V�R�K��my�~�N��>y�:�<�#d��x
.�������Q)i�&L^�U8fB���Rr_�s!s�[�����&N������Z��9�~s9Br�������]�ZC
C����"<t4=<:j���K�~�/��l�;C��A�J��$mRp���k~t����Z���@�T��P5�K������U�*K�T�Iwj���/�T�P����{B�9�;���lH>
��
3�*?�'8���R�k�1!r�{�R�L�����mg������w�k;�������ha5��������W�e�Q�7;�����Z��i�q����L�pxo;�K�8����;-^������.�/f�����6�N?e�{{��t�^E�����W�mn�5n�Z�������U��_�8�R�����>��DN�t�+r�=<���l���W-��r���3��ny�����;�{���|�i:Z�m�����v.�F�Z��6E�##
1�j�#(�O_�7���u�������r
�O|�/630��=Y?�/;��bFi?r����E��bX���O�z�i�KaFL>���
�s�-�
Q�1K�q������[�:��������*�k	<j^���rj��uD�x��#��%b����I	��\��M ��Bmj4bjO(
���+e)��e������@���ei�.ZPY��?�6���x���QE����m-$R�{-���L��c���(��]������w~y8Y��OO����m(CL������w&���B�������C�����[�������p�����|�y��DZSvR:]J{q"��3)�\���|-|<�����`���������K��4i������O�L��3+�=�����;��_���|[{>����=5���XS�/�����:I���?��4.�B���-f��G����yx�6���0-�9
��P@� ��`��+���
g��&���bj��?�*��R6��W0J�p�����>cRi�
�����S�f��������r���az�O��g�(Pms
v��?���v�l)���Sl��
���Yp�+j6�=���?/����8v���8%u�'n���>��R6L/���9�6|�9|�6{�����Nn�>�v	^��B;M��
�2E��~k������l2��� �^������#pm�����t�
���0�`����(6v��xm���]���e�?���epe)�t[���p8���L�����B�����F��!;Q�.8	P�Y}
��)-��4���Hr�M��4�[�E!=@��:�mB(|&3	
m�
��P�#��1`:��>OO6���YS�1Wz���]���S�sD���N��D�U6������R�3[�^����Sr��`�����y$g��J-��,�1A��fz�2�DS
2t�.���0�4e�����@��F��z#9�LP#~tI;���)����>������K��cQN�?E�*2;J-�T��pQ)[D�Qo�����n�"�(�Lk'��&V�tL%G��1�A!�h:���dmRp�����T���P:�%�T���T����B�r����d/ ~��d&A
Sb.
���3�'
h<R^E��9/%F�4xw�����q������@���|!�A�e-%tC��%_s��Nv|��������`=�N�]/�����9���Z~j��b��A�T�N;�x&��}��Z�$v��� Nx��f�Ya�7*�{mV`�%�z'J`z��t'�����U����3L|��9#���������;)�._���D��%Uw�+��}��a����	�_�@�����9�~69u8/�	��w�f�v�&�Cf�2����(
��c�����2���tv�8�E�����D�2�S>9�![�����Zl�-%��Y���Ed�;����6G��v�dzj��)�g[��#5������[v��Zh�O�^S��@����NzQAg��V<(���C�n�B�����t)�aR��VeL��xwG�P�rf��$���a�m�y��uCNe^�������:^���Z���h��"�c$ gu[TsWb	�����!���-v����N�u��`�NHW����9�f���EvH�lX�C�=�=N�5s�>J�C�u�q����O/t���Wm	2t�}o�K�4,����^�[�����]��pd��. z����b�cF�C������$�E��[����tn6��[�@F�t6�%���6�:�X�A�J��O���5��1g���_7�e�����Gb��l�c�
5������O���*y>��W����UF�=��
3���|�wXI�gky!�.�+������&���%���}K����S��"7OE��{_.�"^�Q[g�������ajV�z�!zD��Zw�����F�����	t$2<��?��/��0V���2|q����������9��VQ_t����W�����:��MV����oz�+������`�����)�
Y�%ch��{�������.q��\���&r��-�|<���� �Wt��Pz�R� �M���U��\�tT�m
qY���3�Eu�V�:`Q���j�����g���[a+$&���:�:��0XN�K��W��<�/vD~�����`�6ACO<]��S����-�St��v�w�-j�-��g@J���gPq�gbs��V,|��y�Ac���
����/��H[����y��:�����V���-}[Z�9��!dU~�i1�
����n\�v��V�c�1L��o�������cf������n~�x���,V������Lts����-���,��Tu��@J_�����D}Y8��>L����[Z>��A��"o� �G���
G!�?Q3���-*����v�{���)j/`O�	�VzX�lV3����e�=D����Px����na�M��|�����;���jG���xj/��QdB���Oa����I<��a�p<7QLI�S��.��0���iLN-H�-���F���3�5l�r��[�n+e�m�E��w�wO2����_�48*�[��{�x�`q3����(�D�����9�����s_���U�+S,�����~�0���\�}0nkZ�&��kS�cQ{��Z���MT�Jj�b]xj;-a��L������P�*�Z����U��R5Wp:���]��{i�E��-K������7e��L���.���jxN��MR�=|��,������-Y���l�P���$%�o
�;�f�\4Rt?2N-��e�u���a�86������$�6jd�	L���5lbl0���WM�R�eic1H6�����9+��'�J�����R���^Fmhz�Xx��Z"Q~(�zP6GZ%j=�$�3a1j`|����7Z87!�F������cR��H����^����R�������"�>DLGS90uR��L-2W��5Ru���OI��L��x`��Q&�]�55���#&�m0m��oy}I�����
x�x�P�v'jqvV�zC�o0%u��Ar�������/�X��OE��7�A�c�FdM���r������`l��m�+��lY�m�����������n||�(u[wz��������GU�����M�G@��3j�x����u�c�GtDI7e��
� �y�b��gE�������2g����<,����V�1��b��l�mtJ
�!������)�����!���T,��_���yg�"�p�P��#+�Y	]c���TG
���{�/V�iC��p��o������x�W���f���������]����&��Q�jgg]D���zXg��!`ok��O����,�c&�Y6���)YAP�V[�9�6�,�
��%GG���s��1-V�Pl��'1�_XU���Xoj����c��5I+c��D7�4S���2���^��~V�N�LnESuD����Q/�g��S<�q+������]��2���r:�]�6��`�
u#��A�&R���q`R�\�V��v���<���-�<�#�G�W$ O�O(�}E���
�(.�\L��9�B�~���;������X�i�wb�w16*$�9)�In�'2��Z��b�E�s�/�b���u�8~bc���pM���*j�KU��5bc�m
��������E\@s~�e�2�Qu�/V�r�;�������D�_B�]"�J8���������0�S\t]��[/j������w�i��}b�o}�@���w��hS�_��������V��W���j�5i�W��N��[�{�(�������L��}��HU5NO~�l`G�A���f��`*
��p��b�j���2�s�QyU��>K
�
GGly�]n�9�6�N��|�U�b�� =�t���lj(�l>Zg�?\���<�������j�	�!�c:hh�0����
�2��mq�rS���f�
�!n����v������R����+�����&?Ks�Q5����%>�-U��e��c�	��D(T�����br�K�������L�a�����Nry@���GV*:G&DK
�6N��`�V�/7�3C���"l��=1��W~;J�c������P�n���@N���M�'_SQv d\}j��T'Z�5�^�?mB~���������T'r�;�	���P��w���<W����L��A�,��.@���c���rAu�
���U�/��%o}5�g�n����g~����E���]��~��}	�L�qU4������7]�|�x��!�1Ut<�uH��z���4Tu��)m���X���
�-I$�����c�kwK��]�[�:��(���9h_�gB�&,?0v�l�.g��mVH��5�����
P��	���S�2]��s]�|�.� 2���������	'����Z<���@=[0����:V�%��$���!(�J����A���� ��JQ�9�Wk�8�b���>3��Dn�2�R�aR]�Q(�]7�:7b�C�;�g�����
��u�:���i�+�4z$��+��c�����P�����1j���[�����pB����9�R�m����.������������}
=�5�+�p�c���VX��������|$��i���&����P�hRn�S����4���I=m�c�8K
"3�u)�']�*�.��~�[US���,�h���vhEi��U��m�Jd�L�@4[w�a��d�g�o:������������I/%B�m�O�u�V��;�iHL����U���|u|��*uH�f�k�3��#�ps=�(����6	S/�7Ra����IJ:������o�y�?k�JQ?����vg(�S{�Rvb�6�����cI��}H�Q#(w���[k'��]
�����{��d�"���F"{�����
�2�)���p>�8�>	����F��������:��Kb�bR���oq�s�Nq��D����,���%L��9��Ul���������MB?o��>��5�h��{Oy8�c��������M
�o�x�u�&=pf!�%G�j��C��`�����Lx�MJ^#����V��B���}�a�kXuO���
���{���J��P�u3a��z����x���&Qq��O���������t�Hj�Ms��D������G����\oJ)�2����i�qiz ����a,���p/�.�l�0@��l��Y�?ZG��#�g}������Ga��,��Dd���W��
�pc�oc����K�l{�}rG{`X6��9�� `���b�S� �{MB��z��n�|�����������;����������Y�������^��[!�H�4����0(�VN���uR�'�#p����+�ZD1�v^����\O�����.�;Rd�Y���(/��m�K���3l�!��a�&+�:��y��x�q)?E'��z-H�j��)plM�t>]>��=$E���=�jba�d��>�(�]�o��MV&�=�.05$�����R���s �P�XR�Gz�rR�,��0l�K[u*�r�q�]�7V�c������R�H�q���Q�4m�J�����Ls".#��B����f7���S:�~Xd�����1�6j�t� �%�~��D7��@���� ?�{��]�e82P�hp��?��f�(���%��?z��z^��������m����n�)�r�I���������0�iD�jU.lx�C�I����V�w���Cl�;=F�r���K��0�b�X�cX�l���,F��]�I��S�{����A��-���h����K'&��x�f�6���t��GGv�2~��A3T/����������(����ER&+���n6N�2��M&$�#�.�� 0�7����N��������8����8��-��De����1Wj���� ��K�R<������x.�����P[���p����(��������OE:c��M�y����i�:���)�D��yX��[��\��������	���� �1:i#EQ�O|�������$^��.��]i��,~�������V�h�8F����W�5���<�	�:B���@r����CmB�P��N�I�A�H��/�**N�E�E+^��r4�J�}��~R�_����z{��q�A"U`����#�����!C	[�5�����	�m�B���4���D8��[>�i�/���[�W�	I��&�����1[����A��y
���I>�*��+u���z��R�I+v�>�Nv�4�n�������N���[/AGk5�<���4������D��"�V_����_.+��t�aY��GK6���t�lmK��y��Bt��bJ���t�26Q��;R�:TYt�$�'_<|�P����������ap�	�Gr�Oz�%c63����uXF���Xt�C���Ig��+Q	+}�����,j��o�L��Zmi�3����Z�|�<�g��Z�����
Lp��
�Pk�,��xS�i���vr���@��51���po�4�T�wx3Y��������f�����%*K ��������MM��e�������-w�Q��&�TI8��p��T���������Y��|)�xj<s�6�����u���:��=�'���	�/���6~�u�j�c�G"	����w�O����h���7<uF��T�G���(9��.�?)9��vT:�u����g��X�^��������(H��}�9\8���������CwO����������k%eq��r[�t�^d*�C\����P�����Co�(@�����
n�[.2%~d�e(�
L�7s����Ut�B�YR��zv<*)��@'�'�:�9�q6�ho���eD�����y��0�`:+����5B64�$�|�O*���d�D�����P��
9060�����^��/%��� ��.�DH,}����t�{��m,���CC] �$cc9�>��z���6����U�[~�����A�����[/��CH�1,
"M$�6���o`,D�f����f�����rIP��4�v���cA�#��ra�c��)��Q�#Y�@ha&xC�%�������M
I|+�����y:�R�b�!��E��.�:�D��2�	��;�$wa)&i�B�\)�7�
u{���5v�H�Z�����~�Nbl1�<
vU`������	�!�q���v��@�,|@7���9Z�o��w����|�r����{�VS�7��<����Z���!�$�<R	�G�|K����Oo��P��}l#�&�,V���j��=���j�V�M�W��/e��9v��|?3�B����qW��������\0w����w�������
�)^�*,|	^���nE|-LK����ia���t����9���yd�'�����m�o��w	2/����F��Yp)�.(������i��{N��H4����3��������w�����OS�}�>����k������;�����t������C&,�XH�`������:o���0��iA���
O�#8�=�Lf��-R��4=����^{T���|��qI#��c��=>��4G����E��o}��:�;��@����J�����gP}�#���<��?������CE����}�R����r���0�0�|�s��r���u��Y�?�;��{�wd�����v�+h���V(������+�AO�o���l9�{<:O�Z�=[��@��:�^�\.k��
pkE�Me���{{�?��c2 `X���t�7�������_��y���B��/k
��^�1���c�e~��hT�3S���:����-������Kw��O�
�C[Y3Chi���c����+:����#��6 ��a(�W�����c��hw��w������Uo���D�-�������`p�=��B�A�x��}m0�M�7��Nx����m(�Q=>HRm�	�d�ujl���)^�I-��%���\�R�'��=�g����� ��/���_�n�7R�m�>^���v���dJ2FAK�JV�H\X���Z���������g9�o����rBvn���,o�J����$o��w�+���}��uA����u�7�����3�S������W�S�
�w���
�v8"{��7��#d�aA���S������s���n���V���51�}�v��Tu���]8;V���6�[���1~��t7�����V��k�3�����$}4G���Ep��_�N�E���:��j)1pp��(�S��*�z����|����Tz�$��P�>�������x��h���0���
{���z��O�u�����h���g��$E?�<��F���.�`�@#O�7����#��f~�����`��[�e�e��y"���������i�6�����?n����P��S��T�\m$9�zq�MIH�n������M:����}���{���z�����+A)���~������z�f����j�4w��,[K���KG`�	AW�C{��.�_���R����q��.nqB�	��������~c���'O{����sp��UJ����.�<����������7<Wj��@3j�e:_�?7��kC��{�'��r��Q�8�^����{{���o�:�${*����5��k,4�i�����w>�]��_�gy�1ft�"�6�NS�o8]��_�~���������������1�sEb�H��Y�%��<�-��|�O�q�*�8�2?w�����Ete���A�����d�>5���=�c����	9��I���uN���~����b_�����[��*���7������g�a���O����;�j���E���W��4}��I�1&;��*z�����������%�~���s	�H�fT(j�t�����b,Cb#�
~xD���IQq��!�Di��������{����������
�)_M�D�
B��iC1����$����#�����&}8�eW�:!��9�V�W����(~U��Y=P4p��Q��Cu=o�E3A���^�Oc��_��;�)����8T��$��PF�)���4@��5H;���y�6��Hr���X�-�]�W����b���Yv���"���o�a����!��J�o_i�X�g<�����f4�p�	#���TR}}�E(�CT��W�X��P8�J_��q0vc73���'A��r�u8�/
������z��������|�3�@��.4��P������T�����
��y��O���gV�jD`�M���[���:����d��F=��+���L��
�v1��/);�������P�u��_���\kt\�~��Do��M�K�������@�
{
?0�op�- �WA����)G��;��:�h�����:���o��Uu�8w�52�L�����^9��)	�D���� �=����S
�}|7���z�@���v��3�>��S��.���!�c�����y��c���Y�������9	�"�2��L���v�(�H���CS��d��%%�=g�?{����c����:���v��I�z��j|?���-dS]����~���N�XY���,j�C[;SN%<Go,t8q9ZKO0C�V���[cR�7Wv�[���p��i��<+.���'��a��BL���h���tO�x���[����g���?����&4��a)A8�%Q�6����f�����>@����������r^�L�����~�����^������jO���c�7��5�b	��-[�--��]���Y�%�T�D�/���H�i��P��y�s�������3�^�y�GJ�jsD7#�������#9Y��
,47k���(����I�x}���h����d���x����a����nO������(`���j�:E���L<F�MI@K���?����"�y�}���m�DVQGqB�e�y�EN����tR�8%�y'@�T���� ��%�-�->�/���f��@�~����iB�6��.02s����&���Bb����a��q8b����u�I����������.�b�(p�2v�%��������WV�9;���k��
�v�� ���k�82�� zD��B�����61�>xKO�2I����~{�kn�mc,z�[��T�"�2���bK��G���IKY.�j8d73�L�����U
�����t';e�G�uQ�.�X�l|4�B����j!�SV�C���>���B�+eZ��'}Ja���!(�P���<8��02��70%���9R�R�l��9/�a�0|gVG��K������r=����v�`�L��-rcS�^.������������v������g�i�<p����H�FV-e�lK$���S| ��B�Z0�C3�i� D�1r<G`X.-
��0��85�e?�������m#$F���0�����Gu��4k%te�����N��m��4AR�aL��e��,@���m;��2��:Gls�
^���v�.K��z)-kR&�-�c=V�29��Z��P����DZ	 ������G�Y��Io��%������H��J�T������hO�����jJC���*��p���C9���
�?��� zG��(���GV���Abk$,<\��1�Vi������Q`T9�SU�x��_�s9+�L2���U��������L��Li3�_��rd��Pw�������u��$������5@Y���_BS��N�����rUY�Sz�ho<���hm�?�8��ak/�J��3��mn�:l��� ?���������S��R�:��Ce�P��?$@D���TF���R<�*|Yk�lk�%�o ��B��=����u�B''��r6����ID aQaU1'�������?�\������\~�&p�������PE�K�y��#��������=i�+]��#u�pL8i��h}A�_���Pa������8�N�b����lC6{��q�v����L3-H[��:����g��{��1e<�����b'���}WC���+Y�#��nxCo�%�����;Q�J�vY��8��Xf4;���p�����};I�������M���lO��BSg��2)�^����h��J����������uT�������K*����Cqv�2|<�$N��n"&��N4�"L����M��]I�W��]BE+"���j
7L�y&��z�b@#1�����K��������UC�����_"�X\m������G��?��0�L=��<������g��������+��]1t��l|[��'�AaP>�*J���f�_O����p���kUG A�x���~���}
`��{�&jq���UC��!�gBG�k�\
N1���b���v_X�2��L��X=���@��8n��<��s�D:��'�;L�-���;�af��Dgs;����5)����&{NO���	
q��;&�����;a�6�`���.��xb9��;���B�@-���1��H��IL��=C���<_(|	����x�������.�0�QN�^�d����X���o\����Op$��ic���pN�g<w
E�;�RE��H:�;�)���ND����I'��SE�	�Y�7��?O41�
�X�/������t�D���L�U�����!�R`����G=�U����\�7�V�RNe��&�7��g���&�xZ�$��J��Vk�r�W?�����2�q8J[�[X�����1�w�Gz1�������H�+Pq�(�I�yp\]1��v�����4�m?&��\
z���I����H�����P���~���
#��H�k�9���u
�+����`�$@����H��/�IUUwu�������>�x�$z��:�v����}�AXU����l��f{����,$?��9C����"�=�.�4��Z
�����?�
�W���r8���C~v�������=����y�g{�n��f)�����=M���i�����0&������V����9��~���y�O�yS�����K�9.A�3�>���59�G���t�@
2'jxK���1����4_�3Y�
��=#�����o�A|f��1� ��K����1�%����t��\%�]/�K�K�������_.��@/�]/�K�t�]������q_������/� o]/���.�������_.��.����<��.��@/��|��T���|��t�]/��|��������_���/�]�]/�K��_��.���K�K��_.��4�N���%���.����7�t�]/�.��t��|]%�t��_��4B���t���t���K�K�]�|�_��t�����.��t�	�����|�|t�]/�]/�]/�]/��|K���.��`��t����/���_.��t����|A|�_��]�t�]����t�]���t�
,�t�t��_�|�_.��t�]/��/�]�]/�@/�����|����_
<;e���.���o��b@�_�.��;���3w�}�t��_���|�K�����]�t��w W�,�w���f���]������%�����>�����]/�A|�_K��|.���_��A|������t�k0��||����t�������|�/���.��.�����Y|���_.��,�|t�]��/�K���t�.�����/������|]/�q|t��_Tt�]��|�_��.�����|�|�_���t����]/�*��y���@A|�|w ���.����.���|K��������:��G�f ��B4	6�u*���������0:{{)��U�Vt�t(�:��1=�k'�����Ke_����!�mV���M�_�x����y_}��j�
��P�p���&���p~���3h�[�!��N�[<+��A�Uy�����_��������y�'��>�!n��N������}��x�AN�N���T
�UFZ���wU��5�J",����iW���G<��>�/��]�N�q�cUk�s�L/wn��*,hJ�O$F�p�!/9����Ce�
n�1b���,
��W�IS�t��s��yI�.��Q�7Y����=u\�&`�s`�&S����3�����H�$��'��=XK�RPX�5������:���OeF��oc���/_��[rCQ����w�l����6O����y^��|���5�AQ,�`3�@*�\����S�C�������$��C�/���/Q��V�~vs����!��v��S�u���T�T���|c����w��P�cC�����s�9��R�gO6L;8xk��w�53�&����,b19v�2P�
-��>�{����\�n��v^Wkc��Al^����6}Z=/�fJ���.���������$�Cy�blC���������R��m��@1+}����~�a�3@0��f1�\x�U�(�,`~7`��v`|�ml
�(���d����B)])�6���&}��������Ya�<
�'M�4y�������M�E�~�r4���g"�p�62`(Nn��y ������Zr����3v�V�r��B�t�������`{&��1�%>���]^�{7�����!�?�������Y�3s�J��������u�}-�����rkku���~����j�����
v���^5w���Z���c}�G�.}s.k����(�&B���o���1�,F���f�]����c����d��n�������O��05W� 3Q�G�Gd��q�k���_T{:]�~�����_S_W����x�y�+A��k�I�/]�`���jd��J Z���=D��5t�/�_S�����f���<���_%dD��|b���'g�g�A3��S����_�����;m�_&�7-zdm���
G����=m*�w�T13��7�[�[�y+�t��w�u���gY
�7<	x�7..�oO�
L����I��|��C>G���L��gI:	���F:+�
w�I����q]�������r��������	V7"K�m%�j��J��P���n_b�K~
�z\�}wM���}�?�fz��St~� �T�������=��,'�'�Z��������t���{R��pu;]oN�6����V~4&	���UI-���Q����<1�A#����S��������-������'�����1n��n��O���c_��l�, ���Wgsf��//����������k�����5�k9����C����(��'V�g��W�������g.������M���mLD���0�0�������nd�O6�
Bw�}��"��
��^ut�!f�rK
���
�7�J~�a�(z;�Nz�fXVr��L����_m��|�l"j�����(�w^f������Vr���!�$wF������_&�����/Ks������}�'^�a7�A���k����P��������W��������K�aZ���30&����� ��X���Z��f��������B"�����G	$-��i���MmK����#(�EwT��Z�B�)���~|���G;p*;����VJK��l��\���I���S�W�Y��xw=I��o��u���3C��%����]
z����/.���r����`./�@8;�-z.�m=]`�
	�&�N�=�P�Kc��+�������)�������u.7	&��l>�2=S����[
Z�k�j�l���I����p��}����aV�=��O�����oC&��xj�YM���a�8�I�}����7,����X�'�����T�#������6[��y� �b�MeAp�L�|(�L�	��@�G�|����^��[�������C�.�����`��U����INQ./��S��f\�3I�z�=���~����"����n��>(����`S��1I~�x��Z$���Rv���<v1��X8��L�uc��XK��M
�7�b�J�~n�����D��S��#�ds���H��i��� ����	��[Y��s&L���	�����U���:M�a++�cz�z�����>-��
���=�yv�QO�n��~L���R����K����j�[2b6���-����po/�k7�Db���m?}������"�\�!�-H�w�DX�����w6��������9`��)����x�P���L��e�fFv]�LE$�k�v�����o3<�`'��P�i��JVdO����������/����m�;SG������<����k.N����gG��-�7f��mB�l����nP%�5+V����,���(�G��c.���PR-������%���se�f;E�^�^V�b��i
�Rn�	o�t���V��<��������zjDJ������S��TU�~��:aj��C���w��p%N'��:O���K��C������c����sC-���=+�j@7����R�Q�`2��;����:�$���?2	�pgU(1m�2�CY��,��vM�]
��"�w����:��%��z����G__����3�)�a�l�Y .��c�S�w7�c����@]>�f�!Qew��^(�!�����})/�Y(+�E!�:/�{v�a���1w7�$����K�����y��rLG���"�w�����b���%M��u��Wr.�
+m��=�6
����}e�;5d-s�Zv����e���WC��6�RJ����Rw[�2�k�������(��I�_!c�`EF�:���~+A��>�<�'6U��59���dsm�_������7z��Zh���t4/������A�i�=��u�V������"��{���t9��E�p���6�}F9�������g8�s��;����>����Ci������'�,�av|�,-o��i�S
����p-��q��,w�
7"B�7�eQ~������������,Ui��R8��KS����p�v,NSF�=����%�uj�f�c/�����7��u����?�v���-\IK��:8Ja�u�>R���z��9<Jxyz���?:���+���w�=�kjE�1%K:������3;���B>4�b�M�e����]��R�������A��y�?�/=�*�7*�whwM>_��\x{Fm�s���-�m8�4����B�jY�rv����&��u������Y��GX��W9����T_/�=	p�V;����I}������g�(sL:<�8(����I��O
�<�cw�O!���2���)[���	������u�[�uq�>bn�����\��

�A�����a�*�v�_��96����DrKU>�i�$��<8���
G�=OP��g�7O���^IH�drS��
P)�b��l��Rt��<�����Jn+"�=!)���[��,���='�?T�=B����Rw�(<�F�����vDr1�'q��I*���:,��g6��b���i�]�S���_��v�L��U�0I��h���)�*,������oS��Lp���h������k�����d1o���?x�R�R���f�I2`��%fQ��\E���T6�{W{�z��7��W����L��K��@��
O��^���l^�
T������ASX~���Qw<��5:������4����>�?����J�F�C�R��fD��3�a�vW�b�YKt���Gy%�.�E�@�N�������'��e�����H��C�|U�aKZR��	����TnYr���?�����_{��`J)8��_b�^���e��f:���I4�Y�?��7&A���O<�t��k���s���U�8^���{������r����q�����!�/Y����,�N+q��9\��y�K5@g/�U��Tyb�`��]Du+7_��y����.|�>Z2�l��k2����\m�q������py��Cw&�/#t���`E�i8e[�A�P��P����
�p�3q�������j)�J@����a��G�j���;U��huql�
���W��`&�+?�b��A�%D���j��R�t�(:f=y�oH�m1k�Ujc�^Z��^W�h��{p4K�����J�-�P�&ml-��C��w��n��q���TR�e�Fr��h���@��s����w#@��|��m��)k?9���m
<����u�Ym��rL���l_��f���v�p�?*�"����+e�3?Y�W}<$�v���K�	"�Npz\DP���e����,9�G������;�e���~�0^�,q���:�f��he���:����\�o�\9S��s��;����T2��#6�,p���S��|�c������4����k���ab����Sv�F�!���Z=��O�9����:�^�)J���?��
����D[-����7�I8��7i�M;����W"XU���5��x����'���85*��5����U���T�-�T��V�p��H�-��`[T�^��iO�?��VV�������GC���Db�;6����z{�'	��&�4D����5p����8K�:c��y�Yq[�*�b!>*���y������C��9_�x<������l�;���AUK�jP;@�Vb9��J�.���5�9E*��_Z����=��v7_�z�������g#Kg�|���9�d��h"�u�J�[|�vD>���r[".�����Z�Af���n������U��>��������T���e�����w�v���U�q�-o���{C1�����N�z}���:�'�Wm�����%�v�����<X���&�����o��s�S���6���iuz���`x-L3�e��l���{cm8��s�
��)�V��^6�����I�By�	b���m{�~�����q����n�j�W�&�{~h3S������on��Ui�^t����ea��e��L���=���w�*C�+ ������b��/er6	����ii��M]Dh��������U��<���s�I�n��	�����]>�'b�v�GsWO�5r������d�Ue�Bp�����.�@�#���"�eOz�5�L@'���+��3����r�����/���J"LN��X<#���R�yb~3��Df�Y��oq]�r�zrvU+���=�%��FrC�RXb�6����<Q�.���?��/w�����5Z�
��l��S��K�z���a��UR5`
F������p�bn�u�^������]���HA���~����uq�v5�������0w����{p��oeL�[���+�O���F���W���L��x�.���~���-��|3dJXm��������n�b��u;1��l�D	�~�]
�E���.+JO���`�FV��G�$E����������KR��E
L[B�H������[l�f����{8S�Q��X(���vB�7ZFr(�H�Y������~�|!�'�����]S��F�AD��@"I4���'��5t�\��9fU�
��}�];y��f��W���UW�VP|I�_<����~�+���
,�+]�����c.n�E��u��������U�)`J�����������0*�K ���Jx�>���N�h�����_�r�G�b���6��TG����q�3%.��r1q��4G�!�����`w�$w��su&�*6WW
��eU`*
fy�q�����,��^�1�����{�?�`����YD|��P3�YTO80�
e,��M����9#
<�"�.�.��IR���cy���o{f���.0�q�1&�xZ�4*�5|���e*R8��*� ��;�n %<6��G�d�����tv=U�w�W����Z��8��*�0d�����������4�����<��N���O��s��K$����PJ������3G1U4����7M1O��y1h��.��x��^C�Yr�����)Eb�:t���*�#�[bYS�!���@���G�Nk�J���/)N�%��vu}���c�����:v�USM���<������������P
3&��"�����R�f3<����1����7l�	���-����W_r��;���(�:�a8s0^D��7��JW�����'f%?���I����@��J��"��9�(k.�X��H������b���B(�%I�J����2���$�A��*�:���F��?"��4/|���X�4��r�����o$�.�,��1!NQj���;o��J�
�������?���~W��y���sUio��3��$��9i�N
������]i[�h2f��������"���A@\�,J��(�{~�������*�������U��2���7|�.(�A�{���)e.	Z��Vc�g����v���mt\����5ZK����f2�}7��A�L��6w��J�95x��U�f�����
uh�+�X����>�5���3J�5
b�Z����=��F�@�u��N)[�5���?������6��G���,R_���X�*��Wb]��nmr����I(uj7��T,���W�mc���;��Q����!�u>���b
L�M3�^N���4>5��/m=]��n������^���p������w���j���D;��g���R �O+��e�A��u�YK���
�
T���56X�B�~w��m�l`,�����/#?7@I�������$�2�!��MVQ)��Ts�Mtl�����
%�9Y��&
����~�^����5�$Gr��,��Kp�A2����VwOG�����zZ�:D�@#�����/����k�_����N��*�s������Calr���6�J{�!�����4�Cs����ap
i+�47 [�T����Px;O�tO(>3C��g�_�hx��<{6	&�H���N����E�Y�_��,��L������9�Cz�Cw� ��X���X��;�\@Q�{zx�t:z=z}��}N��Nu�b���������q&�B9L����+@��J�7��P�X����_��G��FS�������y��@
��g��iz���3�"��mx�C����n+QJ��<��������e���Bw�|�}+rv���Kgx��[����K�l������l��������T��w�������:��R��d}�d[s�-n���Z�K]��y�.���L:���T�/���8	p9���x3������5��S�Dz�����o����i�]�����{7��8���%�.����I��;	�8��sr�1��{Y��>������ d�x�D
�������*7��w���5$pz,��3�GH�����P��t��8&=�O^=��R�<3 merge_include.patch��T&���U@���?�Z��7������3[�c�j8 n<�qb`�f4���y���s�!������H��$����Z�*�������V/�+�O=�����$���?�[�����
���7:�\U}��4�S+5����������4�����/���V��.��A�������[��Fq�1���?#�&{�=���������m��K��~����?+57?��[��ss���s/������}fk�)'C�m{<t���������	_�z�������k��ww�_�)�>������p��rr�w�����}/���v������-��j��)Z�[SS�:��|��t�M��X��BV��JA9�_��!���o_�f�N���!�����`#]�u5���?c
-���gq�a�c���q�^'��=^�.[�������$b��7�x��?s�����e�/4�BY�a��a|�"���o��[�����.��t����M*�C[���^;F����	?sv)�=��n~���y�|������|���|k�n{�������7��IjXRz�����u�|J��j��a������~^��SY������9���}Y�����5���c��7J������/if����B�3����n7J{U�x��9��n���[�_�i�:�����Bu�}A��)���Tm`;5���A�`)r��j>Mx��
\xca�<
~�����F�O��m�����4!�($��4����rm]��K��y�X�|,�,w��o�����.��	R�[1L��lre7���y�{�s���R�a��o�����}xz�gN��-�o��K~�Q��{x��^�n��8����
��_�0��v�;�������[j��b	�����#Y��{b��H�|�A����Jmz	N�]:����VE��M���v��7fA��n�l��E�|O&��j �O���-��0<�����*���5��$ee,c���/�VZ7s������&O��kv�
��<��]e�r<�e%q�\��i��D6N%�8���5�v�xg��)dk�,����}�d3�����f�\z%KpN��_	L���0����ID���������:z�32Z�7;T����j������R���suo��O�
j����~�0@�A%)�Hf��-Be������1���;��������a^��0c��]�c�P�����AO�B!T���=t�2J�^�LdB����~h�����S��!(�hw,k���{Q���q�
x^T��z=_]&o�����J��s�^�e��&I�s���@mu��1W?�����-M�@������5�!��F"�,�Q
���Q\�d[Ex���]�@Ai!�q�AB�_��2K���j��x����z')M���ap�i��L�����O�w�g�K���G�6���=)�<q�X�"��F��?f��Y������<���D�#����
���CE?Oa�0��>��
��B���t���	�x1�a��%2�L�'LW�4�7���w,Vw3*&�X�H������T(���Z��J�c&V�p\����G��,?��������y���P#0�u���@Y��
����y���4����inL�L��������G�v����P���^~��v:�W���*�tj)[�Y�^�^���5���V��B	��Z�,�awR�;�>�s�����B1�;U_�)���J�H��D�H&\�`l�2�f�+!��&^��.����?@�������z��M�c�u��_��=�����P^K����L������vT��(q���JC��D�-���6��
���|?��0&]���*{�����O��
�A�r]�GWa�}���j����0������bN�/y	�
���B��["K���[T1~����[�����$fT ?x������J���FZ3�q���%0Z����nRr�3�l�A��d�?N��gN��������`S7�h����E��j��|�`����BN��W[���:�Vo\|&Z���+=��|2Z��,Q��:o��PzZ�hZ]h-M,����ff7R�
����4��c����g��ecW�E:"���*��05%�sR���gfA�
�R>Q,{�
E�y��{��a.N�y���S7#������k�|��+�iwM���
�5���:��\��V����+v_\C������2����$�.NG�������z�	���M.3�������a�'V�����{V�2p����SBe:����n��O��$m��E���ZH �����wZ��u*j*��y�b�]u�F�-t��Z`����W<�����<�9���U����Jw�z�J�r`�q�C"�]b�,�^of�p��9����h��
�����q�YT����������D���*{�&H�J��F��R�')g���&�Qs��,W��*H��a��[�+��Y���(��M6�s�����R������?r��xp�����@<�,o�"t8��!drz������0��j���4�"�@��:�/L<pu<Z���S���z�����hM)�,&�YX���AK�wY��e_��C*�x*�l�)R�=E���i�'�G��!��itg�[nZ����V:�:�]���Z�h��grM�Q=�W@�h��8+@%6q`��*
�\��q�Vz����:��f����H!��5�HJ�Z(I+�M��54)./�>�toG��VSC���
��{Df�6���B^��]s)J�J9c.F��0��u���B�&"'r*(� �d"��*��P7�!����JZ\�c�7:�3�=�G��1J���D9R��q�l���s�'a�1$av�&�smh����*�V8�2���.Y�`���]7J ��Vmd:�h�Q;!��XC�B��+}���F2��B/\1�F����)������7�v�U��h�����]��5����*�l9�:|;��D �=[�zz^�n
�vMQn��`�uX���
T���	����<��F��7�+v�a;�Y���$�U�i��������jj���n��Q�����VD�2�b'�543/ys���Us1����eY�f��D%:[�	�u��F���YMuY4�	���W��.)�iK��q�M��gr�\�{�����6BZ�"�X���K&�Q	#�zlBB��+���i�D��_Ij8�#�k! 0c�p�|6d��]E�F\�q�*��cT�VC�l�N��y�@L?���3�-���@���Nb��E�M��6S��L=D�z0�e��b�����������'��.I�I4z��]�*#W[����=�z����=�w�=���8W����^0�5���t�,�C�!kK�?B�u� ��-�c�:�`�|�z� ���J�-��@�%��G�O�kf�:��10�CD$�N[��}s\��V������<A��
;�����70��/��}*���@����^}�����:(Y�zV-W�h��v(�M
=+����7����w�<A���3�t���UA^�p�K.u2�����4�*	��~<
#_~��[�),�(~�sz�]!:����sd�T�"�p^�?��"g��'�@'�J�
���T����5���n�$��f��d�)����_W��[5�2[��/ 9�������5���)[�T?(��b�$���x��"9m�����2����f�fc�_�Dx���Q�!����n3p�[�l�A�t�(y5�_gQ�f����w�Kj�d-[%��C�w�F���AxkQ�������<t��F�c��!9�>h��5��7�
�M&y����C4������B�N�f��@�3e{z5
v�;=�c��[2�gy����K���q�*��,B��5TKV�qj��Cea+�t!3�q����L���B��9F�s�!hZ�W�U���I������X�<����BO���*h�Wj���z5��z�/w���V�����V�+�����C��]��ev�~��1��ey�Z�&�7��^��1�fo!VN%_�0��y�I��iH�SR���T�
����%M�B�*|����i��*
�zL�a��G�e�K t�f	���1�&N$$N����������$X$wK�A��\��M��-� BnC�
��Cn6#�@ �� {#�C�j�����{\�����^�>�k�_��<�����uK�rU����Q
N���"�q�l��.BCktm�O>�����6����M�.e[�B�sK]��� ��������n3�W��=��d��U����:wm.��:���!����/��:]�8jP���#0�d��}�i�i�/�����
�CG�	���0�.t1�]���~�OS\�P�\�`1�H���8~R��Oh�����9+-P�79�:��C��'U��!�-��H��!�(�0���1�X��m�
�=4L�	�>/k�Q~�	@����JI�5P���O�Cq�iXS��"�"HT2RV���d����A7VU���b��C�;L)�B��"���8�)����{����}��+8�TBkJ!��(6-�3������� S	 4Q1���eD!v�
�Q&��EWV��Qs�R�7�0z����3:�g����}��-l�]��P������h��M�
��C�u�q���6�������)V���Ex
4�A."�&BG����u,��9A����X
�:���P��-���� �o������������Upsx�l���t6� ����J����0x��P�'����mm��N��l�u�����z�X��a�Rs���{��[����Z����p�s�PB�R�����5>�#}e`s0��5��+
T�,�E�iW&���6en��~S�8�S+����0
�Hb�����g�I�Bj4��"�����n��B�"+F��D�V���,�4��!^���B+�h�HTC�������j���'5��l}`���W��"4N�%u���;&�Bg�0[�uR�����d���V�wK��l���:%,�����dR��e����.��r;6�����&���Z:�o3*��&}h��p��CFh��`������2���6d*+�c���� �����)�iME�6��Y"�	
K��G��0|���i��c�����0�M��o"�^8�I�_(wk>��F��0��M����:�]����r��}�a���-E�L�i�c7�0�&ldT��'|�U��pt�c���v%l��|-3P��oY��oU���E:3����v��Z�x.({����}[P�'Y
`P��O"��N��Di!i�U�M�4E��B�k�g
6(tg�O@�E/F&y8/%����g����uYy��5��o�H��.'y� r�-Q4X��YV�T2/��PZ��W!q�7R���S@/�X���j��6��[8�I���4u�h)�ty�c�-�C����!o�p^��-�SH������F���t�o �k.8:@�,F/���D)#����1��w!+i ��6���Hh"&�a	d��k�<���d��f��f�����?Eu�;�Dq#�D��Cj)m���d����t'� #q[w-J������y�G�������<5S����;�
#z;�p��r����:ne�N��	r��b/��@���A6�p�����v�S���O`g{W�\�q��
���e�9
qPq��"S������9���9�	���$<�.�6~t���j��/]����������x����d /sl ���G�Z�#��
��^'D��I�q�	�����QA
e�%k���$�bDy.����z��zP�V���!h�g��D'g�(�13�
���x_�(
	�E���r��+�p�r������8p�r����8p�J���_������.W\����8p�r��������0�]r��+�p�r������8p�]r����+�p�r��+�p�]r��w���r�O�r��%���I(&���������o�����Bo73D�r7w��77��b��7+?-�:C�=I~p�M�&X�8�����<�A/e�a=�Q�gK���� s�@ek`y���j����bz\��/!I�F��7�!�	�O�M��6-�-��7Z.r�a�?�b�b$�"T$�>`�=�9�:-X~)\qk|tUr���E�9�v���WR�O���DG��{DF�Q��e?*��qo�&n�7������Z>�Iq�xb}V�
�JQ��@"m���-����n3��"18"�e�C9<�3��lc����`��D�����z�&+}�Y���L���	b����F���b����{��Z�K������su��tR����*��FE���t�G/_��#mQB���Y��~��pP��2L���%^%��8��m���� 8�KA�O)"��d���Xe<��	,���Ew��rS����[��c�
w*B����}��E`��
o8N~v0e,S������|"dp���;����:D&���+��u�2Y��?7pZX��(D��X<&HvU���gl�B��h������Ta!�]}�_^-m�&����O��/��K�w,������[��2���1���� �� �>���L�%������k	�R#Ug�*�]���������9�J^���R��c�+�Mp�J �������V�Y(�v��A�U�-���oN�R�^��V��Q���[��a�pL��g��h0�UgV
g�^�w�h���l�g})����#������s��{��hj	����x&r���W.;�{`Z��� ������xJ'��0�
��$J6��6�`Qj%�������i���%K4��P��JV��^���.�U
H�3�Vy^og@]Pt%���c�?�@����C;S���&���f��[m�4���-"�O�z��<�w
���#@�q����d����i[�4����A^���T6�q*F�Q���`^]���,0��W�Y��2y ��E(�c'}!��_:�9�7}��5�s��@��(��*9���`7{�@� ����������q����.�����d0 M������3��j9��S�?��H�Z�1�����s"���/���j3������,|	�<n�ebq��[���WS�
/w@X���m^�KC�W�z%�sW�!{S".�w��w������r����c��Gm�P���I}�7&���yAU�u�F�SI������k���)��K��M�6R�������aq����g���2��e�eE9��
)��~�ZM��~L�f�(
m�%ro��r����X�����Nz`z����q��"�#�kA��t�o��K}��
i�� �g��N��H&�_@����u+W�x���'��\g����z@��-��;_�s����������U�#�:~=1v��G����n]*��Kk�AA��S�Pa���
e��kP������l����pW��A�4'����� T5Z��ri��SO�4�h���"�m
���
]U��J3��XR���$B�M��O�)��;~=9Kx�%�V8�i8�>��eE>����B���,�e�P�4va���OTPx+Azn�l�����E�$-uq��[��q:>U}3`� 2���&>��
}\_ {�NqK��%��
TS?C��[��������V�.6|�K'Tr�X5���
�*����*�c���=ts�;�b�d;�~�'g�!�)��&#�E�b�&t����Y����r�E�ppZedB������M���e�G,�Me��	���4]f�s~���3���9��-�L]��� ���o�]C�8��X���T�����}�F����2���mEq����]����&�I�������p17����lc��(�h�����Mj]'`T;��$��_	��Z`������~��u@J ,k�����EB�a�w���7�
�b
�CB�����[��3Q����'V�������/�W[:<�c���>�~j��YZ���{�B�Xi?
0I�-� 2UO����������7�V���L�W���r���_^|�_���*���
��3k��~��:�OH�
T"�j>P��-�*���R�A���#~�e�Vzc�r�f���g�Fw��:�,z��os����9@�67,��:��a�� �Q�f��o�'�G���}��;�n�q6��Z���j���J��w$K��.P�����[�Z���4+�g�Z�^�qe��7s�.�45���$�}��6��QG(+
�	@�
�|�DI��K����w�4�#�|�f������6w
�sg���\�adc���K����t�#]�6�]�N�.M�AW���m>�E���}r4Rg��BtkK���H�R��9����)�,'���x5�����:.6�~cE�����h��K�e�������i@����N�0�-!��
R������C&`w�������Y5<�]n�#0,NG����g^��A��=ZC�%�����^ �J����"�B��h?��}t`/�M�Z�5�au�(R�ZT�e�������E��������BI�]Sj�_����t ��i&�/CY%+-C{��g�x*��<D4��m��&���Li�Z+��h��[�W�h�l-�n]�����E�NBX�)J����V�$��]u����.i.��2;�	����.s�{%j0��1TaJ���,bEg�2��E7�=�0B�G�Y"����WP\�ya.�s��mH<�'�?3�P������
���dk�<�*��1y��5G7����s����<T_�X:G�Z[���p
+�����P���X	����NBZ�����J�9u������9�:W�U��R�1�����{lD%_�v��������������H�E7�jE�E�:3�D��~R��I�����k���������$���Xn��X��]xJ�����c�]
'���$�����F'���@��ie)g�P���~�
��o)����6�����G����+�G�D�6b�H5dK�����J��X4�r��:u�+���P@)��s�/+fi#O`' �����/<�G��g�L��e�!t���������5�Fc���gXR
T��1Z��P�^�3L������]eL�2�./�/�q���b�=�����m1�]��]�R�0�j/�MR�
�m2`6(m���4�94kG7ZP��������MB�����^��R�������E>�}"��?�9	���J@�
��/!�l���Yh����uA�g��?�E������
m�m�
T~����&�C�4|���s�9$����0���Ph7�R�N��!RIv:�`�F�^4JXt�\�i
�]J5�)���[	oIl`b��vF.�W�(�����QL5�'V�y�4�!E�LE��_u���e����9��Y6h����#��������Qe�E�,A7x�L��-L���%����"���f�5���*i����w���[�&�������v�����������?�s�+I�� w/�-����W��������<S�?������_�-hQ*8u��5:�E94�.�h�`�~�V%>
K��
!"�X�B�(���,�j8���������^`
D����2��t�"�{��Yk�����\
������v�d�G.�L�r%��E�d4�Y�S��d�4�nY�9��������o�8�UY����.�e�S�]�"�_}0��w��_����O�4:�}!�j�F�"!V��MQ�5�-Q����,{4�
�
q�<�-���)�[1�Y%%N*����^����W��d�2�0�^�45wy�9���y����x:0��A�O�V�zS�
j�%�L����;4�4"�.	&1�j�>�3�kE�f���
a�{�V�eh]3os{?La����Pb��B�A+������T3�u,}8�B����V�;�,xl���0cP���(���S6_S�����$G�
G;�����C�*T
I��f7��bHa��@*��z&Ph�����bmsL�����*_/�����Q���;��r�:�Z�|t�0���!q�K�������&Iq���r�n)���q����0�x����}9���x��8L@#g��BC4#}��*Y��������b������z�17] �
��2�N�v��3�b����
������~���4�n�k�	���K�s��Z�����5C��������v�����{���{��)\��e��w����`n��=�@�`/����\
C�����D��V����=@��I�s�!
0#���=�O�uC���#EU�_`�)s6�n��,��[�� ��/1����Da"H�oI:j&/1.IOy�8n�0��DCv$9p��X���H��a�%�U,s����?�^��(r���p���4'.���@��0�i���S�����TcU?YC���BC)a7�'.�q��zw{��g��I5�N�hlZj}����
��1p�a��Zh~����hK��GCIy�{M�U�qf��n���.��h-���c�G�	��3NO��&�8��0���c0�������2zw�.2������	#�rQ3�2����iO$}��mG���3I��������xXzP������D4m�J���z��{6��~TT~NL�|m��!�DG�c9Hz�p���6�3��,EE��~�l�"��]�������j�)�x������G��������wJ*�b V���4LJ�Z���yj�F�%���(�f'y�c0��O��p�mB�tGZ�����V.y������`�������,��-�)�R��k����d3���i�A��l�0rn���5�h�����S��rq��0
����cO��G�l��gL�5j�o���B�D?lO�����1����;��i %�P���O�C�Vn��"8�M��re�&+	A�@	Y���Hj2EA�0xV�����V���c1��-_C���^���;;�[�I%_�:Y�������#��DX������oF7@�/����h��m��,��d��I]{g��-u[���uI%�IY�����6� x�'
��Cq��2��v�
6�l����m]hX���	2�����gV����
���O�/P79�F!�:QO��P\��u�)@!�)I9��y!���k��*��7�m���Xz���f�=�N^�Mdh(.=X�,g��1�����RE����Ua��C <��F�9de��7H��l�%�=����AJ�8���;S����zA�Qm�]~Y�<�i�x5t����B��3c8�6��6���,���p�s)m{)����`b]
��l�5��*)���M�
6FxuVuG2�zQ���]@�R���������������3����bl�A�\������qt���Tp��V%���)���>���tG����|������.����d�����*�G6�u�g�6D	!��7��LS�����"��q��3���\�%!d@��@�������#��d��UB��!m<�3�����
��
���Nq�}����&��>m����H�Z1�l�qV�f���:���*��K���{���&&^������W1Cd@�-�t����7���|����3�B9u��Zv&\eb����RCUL�0�%F}p�M(O|�A��K? ��{��������h�������P���MC�H��@��E��6�3	�������	$�T|���V��l�\�|{tqr�!����i@C��``?�.E�]
g�oX	��$F�'�"W�|0��<0���.3���L�nb�^{w|��*W�V������ >Ja��w���a��z�.uVU�W?;��R�s����_��1u1�zSj�"��������{��u,��{M�v���Bh�y��^&�h���e�Oq�7g��	�d�D���|0���/L%l����%�r������gbO�#���2=�RBfb�^8!G���9VJRA��G���~^�~��ZM����@@@����3�
���[���r��1���:���E�8��K�ft������������z��p����H����t�[�YVOMT����K\a�R�-6(�+�����A��h�B�%P���?�Z=�����T!
�*����+���/$cM��U��p[�R�^o$o���F���A��(��[��U���V�z�<BI6�����>�,��)��yt}]a���E?
����F���M�,S����#vL�$��`�w�	���d����i�	����/����I��\u,��R�o�K�@��K���G��Ha��%��n�Y��3��o�U���_�+2��Dxl��+UI��Gv�j4��tG��
���T�|��
�P�7 �i�.O�u�Mg
���r��O�q�!4����4G�����i�U��iob)f�E!Qw@��ztg������'ei{�nI�'�%��l+�|�6���fv��H�&�{p������4��%$:�H�M�����|��u8�'��w�zGXZo�����#���D`��B���7��T
e�i��"���q�������3{�*W������B�.��i�"6�>?i(�d�&���^�����k��"p�����m��FOk>�u/�^DX�mYU	8DX�,A��	��:��O�t��M� ��:|�����}-Q����d8�R���F�SP�S����0e_J���2w�����_3����
|!�>�����������7n
3���Bn������4)�iUw�=��~��Z���{P9����|�����x����C8U	FM��3�s���$��p�:��9�8����	@��a�q���2��,�����k)�;"<E"!`�I�
T9�95�{�j�4�)��F,�0T�#����Q�����kM#b&��Mc���^�Z�X=L"WgH�)��{js
��D_GJ�M�H7�i^�o}�`�,Jm�8(��_�L��a�B;a��}�A�������|��69��0_��/��e���������������-DJo������|���0��V�������`�R�����b�(���<�x*��ThN0����$F����f}��~����U��	�A�_���G�Tw�
��;#�`A�����$��I��z��A�o��_�kl2��Bx���|a{9B��Z�4W��j���P��a����1 ����-"��y��Z� �����6+��5�*~� ��.('�Y��h�Dx>��"�����LH}�u�����5���L���+c`w1����h���
6/V�,SO2e�����X�cN�!yI����_A �^|���5>�����x�}��o`��2r����g�l�o<G���g��<iT>pd�m�d���3|5��#�mz��W�����(4�o['��%����3!#WZk@n=�A�5	��`%~8��d |�����_���C�hO�������/�Ko�l������kH(ay��rpq��1.����T{�����+T?�����������3kB�����(/(�f�I�T�}�7u	���s����L:����;�3������mF<�T�a5'C���f���2GS��z�vGV�y��wY�5�[���pX�^����>�c`�^��s$7��*BE�����Z�I�2"m*��������i��������j�	��snJS�gm�"X�S���l�����j
4�>�O]* �r��|�R��H\��2�u�Lm���Y����5E��a�XZ��t��#x#��|���`d<})��c[�0.��k,�L������y��V���a���7�S7�!�b�:v�"!;m�/W�}?�+�
�3��8�����
�����&�I2���A��ptM3v���jEX��\!�����n���4��<��������+�|M)O�x�d��}������4���K���X.���5�L�<)�P���&q��=�xp�@I�$Q,x�	v�j~/�`-�;f�X�g���I�ej��Y[��;?���~���@cG�]�"2?wr���1����<��$��{��.g�
�#t���Vd<�P������p��k"�_C�~9���J�
��6�Bz�~<>�Z7���OO���W��
DX�7.��Z���������*f�Mq��������H���7uC���+t���S�XdY�8���)[(JA���o�M9D���$|�XX����m��}���T�L�F�����j��p�
�
��5��w����y���'����m��m���
�a;���s_�/����X�\������v9���?��5���M>2~Z ���M�-
H7�0,E��?�^ @��������~
/�`7����n��Q�c��Y2�OK�#x�������6���a93>�a��c��=����2�������B�P������p,X@gd�
�q�8G� `������th��C:�[4'�0N��f����fJ��o�rd�_���~����;������b ��L8�^t�1~$S�+`���" ���k��B�����i���9���w[���a@j-HM�q�Q�k#U^�r�\���
�����
"1p$-V��n�o�|��D��DB7�C!�No�AD����1�:����Do@"C8�h�:0���]^��"�@#����".��r��jjfT ���@������R8����l����#�TY��*Z`����Dy'F&�J;a���������0?
�1���Y����M����k/�u*��/��JEOc"
���j���V;�������P��� �������-7q�cL�����x�3�$����:������B�,��(���V>{z]y!��<W.M�������u	�2Y�����H2J�$���]T213�e��"������cc�������6�x_�2$���0�b��7N
���32����g�&Yp�������/b�����Wr%�Z
�K��6@
;��9�yz�I�(mP�>�7+���R:���[,w�ht�D>S�8
DNc�R�V,�~���z����Q8>�V
,MJ��9��w��n5��;��vjP�C���	~{36wv�83O9f]�uQ���o�MJ5��vu5K����.��t��"�Iz)����'������j���b�A�v��w^g0�;���;������@�:��.*v	�P����$?"\n��:��.g�~IFe��?x��k���K��}����6�����A�V����r5��/+y�R���x�&fpqM^��0���^;7X�]�I;<\@�C��m�z�d=��e\H�
(-�������|a��C��5����~H����(�������D`��.b���m�9�!��_���E�11�zE���t\�9y��.J~+�����E�{oSX?�6���y������G���B{��$X�+��b9�A
�+�jF��I$�Y�����cw���������l��Z�s���Vr�}W�8���ss��3������Ww���c�t��/U���z���<3
 readme.txt�U"U��<�������<p&nL�VLfI�#��`82q���I��\hIE��s�YX6�%io�t�m�c�x�Q���M�}g�7�%~��[���o�����������o�J��n�.���qW���z��DL����;���b����WR���
�����c���q.�|�5���_�"����G��f�o�9��>�������G�*B����[����k�2Q��Uj��;<�m.�7����0�y6���g%(��E�%C�����E��������")�����'=�O��F�/��WF��!�b�5	(T9���Z������k�����W��FL;*��KIufY�\��u��)�$��\|����������w<|>m���
A&0w���1�<��~H�)��w(��Jx�:�<X��Z�qYq�YMy��}@��M�z=p��Gqv��U'��2$�g�+DkR���<r�:�Y�?�&�
,����R��]
c$
J�/L���QiR@�$%.�m|Ir3���Q��c����a�&�<��r���d� �T������Q�)���"�����,a�d��b��u���~*Q#��I�z���Cb����0
fX����d��v2���>�7�:[�����8(k���������4QH�D�*���o6�q8_5�F�W��CV''�/u����[;A��+�/��HQr3��w�`O���x�"����<��~'�2 b�P.yl��a���_�W����62�+���)�m#��!�P���L��#@�B�Q�ax�m2��=7c%C	9r	B�d�B��������?�F��7/:=��M�S?��i�|Y�3��P
?�.�����P�j�o���1���%���������Q�k���Q��"�������\�:WRPr����y�QJn.��H�R��MR���%4���FvdWg��\��B
��E
;DMe4P�H�����	��R�*;��{�����i�&���d�v��-��i8\r��J_T�#�����������zt�j���������J�}�@���-�n_>��J�R���e�J�~e���:��������E]s8�d|+Y�(Xh�����<��Q�Bd�[b�K�������;OW�������~Dn���'���������w��T�'5��d�2�����w�irX��>7!������<[�a��u^�	+J�!;{REsC���ZTF���of�V:��_���/��=��;E	
���lc���70cx�e����8Z��~�1,j
�b��ps�!���s����
q�k��%(S�n��EJ0RT��PU3�oKRo������Re�l�!���Y"��Fz�8W/R?�kWeE�&���+�v=p]1�
\��@&7(O�`��cuDQ��u��rDs����|9U����y-(��>m�m��d��H��=����Q@��71��Y��D[K)�A�;/�����a)���Q�g����k�(�� �j�L�6��a;��?��-�#�`�f�\���F�za`�"bE��&��8�?���_Q�����]p�c�R�0�
fYS����l����D��)�����@a<���������Z�%T�v*�|�`�t�.[����y�'R��e�������ni��a}���8U��������d;��{�A���8��}1^�n�/�%�Y�5�&��{;�|B_9U�C��%E(+����e�I((��#��,	��Q��F�y��G�1=P���:�O���u���m"�>�J��C����z(�V��,Y	���#�f���v�V�A���oH5�T�8~!�/����^������t���E����K�%�X�y=����,���-	��_�ido�Y�`�7'��;�������8����UA�z�t@�
�E�?�13nE|Ii#�9?�������v�����n��vVGV
�X�i��A�O�>�>���8�a'[��b�Uy�	��/�����{����#6��^2�zi� i�g�h������������M�e`~����d��E����-2��S��.j0��W���XM����S����n���Sk(&E7Oe��l�����shI�,��f���5<�?��={@
#2Robert Haas
robertmhaas@gmail.com
In reply to: Boxuan Zhai (#1)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Fri, Jul 9, 2010 at 10:25 PM, Boxuan Zhai <bxzhai2010@gmail.com> wrote:

Dear All,

This is ZHAI BOXUAN, a student of gSoC 2010. My project is to add merge
command in postgres.

This is the first submission of our codes, which has finished the parser,
analyzer and rewriter parts.

If you are interested in this project, please download the source code in
attachment and have test.

There are 3 files in the attachement. Two .patch file is created on the
/src/backend and /src/include folders (between orignial psql 8.4.3 and our
modified edition).

There is a more detailed instruction in readme.

Any comments will be highly appreciated.

Is there any chance you can submit this as a single patch file? Or if
not, can you at least use a zip or tar file instead of a RAR archive?

Ideally the patch would be against CVS HEAD, not 8.4.3.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company

#3Andres Freund
andres@anarazel.de
In reply to: Robert Haas (#2)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Fri, Jul 09, 2010 at 11:33:04PM -0400, Robert Haas wrote:

On Fri, Jul 9, 2010 at 10:25 PM, Boxuan Zhai <bxzhai2010@gmail.com> wrote:

Dear All,

This is ZHAI BOXUAN, a student of gSoC 2010. My project is to add merge
command in postgres.
There is a more detailed instruction in readme.

I would find it helpfull to find a short recap of how you want to
handle the various problems (mostly around locking) in the readme.

Any comments will be highly appreciated.

Is there any chance you can submit this as a single patch file? Or if
not, can you at least use a zip or tar file instead of a RAR archive?
Ideally the patch would be against CVS HEAD, not 8.4.3.

I would also suggest you base your patch either against the git tree
or CVS. Currently it does include patches agains generated files like
gram.y or kwlist.h which make it harder to see the real changes.

Thanks,
Andres

#4David Fetter
david@fetter.org
In reply to: Andres Freund (#3)
1 attachment(s)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Sat, Jul 10, 2010 at 11:52:31AM +0200, Andres Freund wrote:

On Fri, Jul 09, 2010 at 11:33:04PM -0400, Robert Haas wrote:

On Fri, Jul 9, 2010 at 10:25 PM, Boxuan Zhai <bxzhai2010@gmail.com> wrote:

Dear All,

This is ZHAI BOXUAN, a student of gSoC 2010. My project is to add merge
command in postgres.
There is a more detailed instruction in readme.

I would find it helpfull to find a short recap of how you want to
handle the various problems (mostly around locking) in the readme.

Any comments will be highly appreciated.

Is there any chance you can submit this as a single patch file? Or if
not, can you at least use a zip or tar file instead of a RAR archive?
Ideally the patch would be against CVS HEAD, not 8.4.3.

I would also suggest you base your patch either against the git tree
or CVS. Currently it does include patches agains generated files like
gram.y or kwlist.h which make it harder to see the real changes.

Thanks,
Andres

Please find enclosed a patch against git master as of
7b2668159bb4d0f5177a23d05bf7c2ab00bc0d75. It works up to make, but
fails on make check.

I'm thinking the docs for INSERT, UPDATE, and DELETE should link to
the docs for this, as they get written.

Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

Attachments:

merge.difftext/plain; charset=us-asciiDownload
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index e770e89..aad914c 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -2231,6 +2231,7 @@ _copyQuery(Query *from)
 	COPY_SCALAR_FIELD(querySource);
 	COPY_SCALAR_FIELD(canSetTag);
 	COPY_NODE_FIELD(utilityStmt);
+	COPY_NODE_FIELD(mergeActQry); //merge actions 
 	COPY_SCALAR_FIELD(resultRelation);
 	COPY_NODE_FIELD(intoClause);
 	COPY_SCALAR_FIELD(hasAggs);
@@ -2324,6 +2325,36 @@ _copySelectStmt(SelectStmt *from)
 	return newnode;
 }
 
+
+static MergeStmt *
+_copyMergeStmt(MergeStmt *from)
+{
+	MergeStmt *newnode = makeNode(MergeStmt);
+
+	COPY_NODE_FIELD(relation);
+	COPY_NODE_FIELD(source);
+	COPY_NODE_FIELD(matchCondition);
+	COPY_NODE_FIELD(actions);
+	
+	return newnode;
+	
+}
+
+
+static MergeConditionAction *
+_copyMergeConditionAction(MergeConditionAction *from)
+{
+	MergeConditionAction *newnode = makeNode(MergeConditionAction);
+
+	COPY_SCALAR_FIELD(match);
+	COPY_NODE_FIELD(condition);
+	COPY_NODE_FIELD(action);
+
+	return newnode;
+}
+
+
+
 static SetOperationStmt *
 _copySetOperationStmt(SetOperationStmt *from)
 {
@@ -4148,7 +4179,14 @@ copyObject(void *from)
 		case T_AlterTSConfigurationStmt:
 			retval = _copyAlterTSConfigurationStmt(from);
 			break;
+		case T_MergeStmt:
+			retval = _copyMergeStmt(from);
+			break;
 
+			
+		case T_MergeConditionAction:
+			retval = _copyMergeConditionAction(from);
+			break;
 		case T_A_Expr:
 			retval = _copyAExpr(from);
 			break;
@@ -4244,7 +4282,7 @@ copyObject(void *from)
 			break;
 
 		default:
-			elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from));
+			elog(ERROR, "unrecognized node type: %d in copyObject() function", (int) nodeTag(from));
 			retval = from;		/* keep compiler quiet */
 			break;
 	}
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 5d83727..8ab3247 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -855,6 +855,7 @@ _equalQuery(Query *a, Query *b)
 	COMPARE_SCALAR_FIELD(querySource);
 	COMPARE_SCALAR_FIELD(canSetTag);
 	COMPARE_NODE_FIELD(utilityStmt);
+	COMPARE_NODE_FIELD(mergeActQry);
 	COMPARE_SCALAR_FIELD(resultRelation);
 	COMPARE_NODE_FIELD(intoClause);
 	COMPARE_SCALAR_FIELD(hasAggs);
@@ -2933,7 +2934,7 @@ equal(void *a, void *b)
 			break;
 
 		default:
-			elog(ERROR, "unrecognized node type: %d",
+			elog(ERROR, "unrecognized node type: %d in equal() function",
 				 (int) nodeTag(a));
 			retval = false;		/* keep compiler quiet */
 			break;
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index e7dae4b..357de31 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -1984,6 +1984,7 @@ _outQuery(StringInfo str, Query *node)
 	else
 		appendStringInfo(str, " :utilityStmt <>");
 
+	WRITE_NODE_FIELD(mergeActQry);
 	WRITE_INT_FIELD(resultRelation);
 	WRITE_NODE_FIELD(intoClause);
 	WRITE_BOOL_FIELD(hasAggs);
@@ -2439,6 +2440,46 @@ _outConstraint(StringInfo str, Constraint *node)
 }
 
 
+
+
+static void
+_outMergeConditionAction(StringInfo str, MergeConditionAction *node)
+{
+	WRITE_NODE_TYPE("MERGECONDITIONACTION");
+
+	WRITE_BOOL_FIELD(match);
+	
+	WRITE_NODE_FIELD(condition);
+	WRITE_NODE_FIELD(action);
+
+
+}
+
+static void
+_outMergeStmt(StringInfo str, MergeStmt *node)
+{
+	WRITE_NODE_TYPE("MERGESTMT");
+
+	WRITE_NODE_FIELD(relation);
+	WRITE_NODE_FIELD(source);
+	WRITE_NODE_FIELD(matchCondition);
+	WRITE_NODE_FIELD(actions);
+
+}
+
+static void 
+_outDeleteStmt(StringInfo str, DeleteStmt *node)
+{
+	WRITE_NODE_TYPE("DELETESTMT");
+
+	WRITE_NODE_FIELD(relation);
+	WRITE_NODE_FIELD(usingClause);
+	WRITE_NODE_FIELD(whereClause);
+	WRITE_NODE_FIELD(returningList);
+
+
+}
+
 /*
  * _outNode -
  *	  converts a Node into ascii string and append it to 'str'
@@ -2889,6 +2930,16 @@ _outNode(StringInfo str, void *obj)
 				_outXmlSerialize(str, obj);
 				break;
 
+			case T_MergeStmt:
+				_outMergeStmt(str, obj);
+				break;
+			case T_MergeConditionAction:
+				_outMergeConditionAction(str,obj);
+				break;
+			case T_DeleteStmt:
+				_outDeleteStmt(str,obj);
+				break;
+					
 			default:
 
 				/*
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 6b99a10..ae9236a 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -64,6 +64,8 @@ static Query *transformExplainStmt(ParseState *pstate,
 static void transformLockingClause(ParseState *pstate, Query *qry,
 					   LockingClause *lc, bool pushedDown);
 
+static Query *
+transformMergeStmt(ParseState *pstate, MergeStmt *stmt);
 
 /*
  * parse_analyze
@@ -164,14 +166,17 @@ transformStmt(ParseState *pstate, Node *parseTree)
 			 * Optimizable statements
 			 */
 		case T_InsertStmt:
+		case T_MergeInsert:
 			result = transformInsertStmt(pstate, (InsertStmt *) parseTree);
 			break;
 
 		case T_DeleteStmt:
+		case T_MergeDelete:
 			result = transformDeleteStmt(pstate, (DeleteStmt *) parseTree);
 			break;
 
 		case T_UpdateStmt:
+		case T_MergeUpdate:
 			result = transformUpdateStmt(pstate, (UpdateStmt *) parseTree);
 			break;
 
@@ -188,6 +193,10 @@ transformStmt(ParseState *pstate, Node *parseTree)
 			}
 			break;
 
+		case T_MergeStmt:
+			result = transformMergeStmt(pstate, (MergeStmt *)parseTree);
+			break;
+
 			/*
 			 * Special cases
 			 */
@@ -282,12 +291,14 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt)
 
 	qry->commandType = CMD_DELETE;
 
-	/* set up range table with just the result rel */
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
+	if(IsA(stmt,DeleteStmt)) //for MergeDelete, no need to do this
+	{
+		/* set up range table with just the result rel */
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
 								  interpretInhOption(stmt->relation->inhOpt),
 										 true,
 										 ACL_DELETE);
-
+	}
 	qry->distinctClause = NIL;
 
 	/*
@@ -296,7 +307,8 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt)
 	 * USING keyword is used rather than FROM because FROM is already a
 	 * keyword in the DELETE syntax.
 	 */
-	transformFromClause(pstate, stmt->usingClause);
+	if(IsA(stmt,DeleteStmt)) //for MergeDelete, no need to do this
+		transformFromClause(pstate, stmt->usingClause);
 
 	qual = transformWhereClause(pstate, stmt->whereClause, "WHERE");
 
@@ -347,6 +359,9 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 	 * VALUES list, or general SELECT input.  We special-case VALUES, both for
 	 * efficiency and so we can handle DEFAULT specifications.
 	 */
+
+	//a MergeInsert statment is always VALUE clause
+
 	isGeneralSelect = (selectStmt && selectStmt->valuesLists == NIL);
 
 	/*
@@ -382,7 +397,8 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 	 * mentioned in the SELECT part.  Note that the target table is not added
 	 * to the joinlist or namespace.
 	 */
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
+	if(IsA(stmt,InsertStmt))//for MergeInsert, no need to do this
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
 										 false, false, ACL_INSERT);
 
 	/* Validate stmt->cols list, or build default list if no list given */
@@ -695,7 +711,6 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 				 errmsg("cannot use window function in VALUES"),
 				 parser_errposition(pstate,
 									locate_windowfunc((Node *) qry))));
-
 	return qry;
 }
 
@@ -892,6 +907,9 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt)
 							   (LockingClause *) lfirst(l), false);
 	}
 
+
+//printf("%s\n", nodeToString(qry));
+
 	return qry;
 }
 
@@ -1730,17 +1748,23 @@ transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt)
 	qry->commandType = CMD_UPDATE;
 	pstate->p_is_update = true;
 
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
-								  interpretInhOption(stmt->relation->inhOpt),
-										 true,
-										 ACL_UPDATE);
+	if(IsA(stmt, UpdateStmt))//for MergeUpdate, no need to do this
+	{
+		//for a MergeUpdate node, we have no need to se the target and source rels
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
+									  interpretInhOption(stmt->relation->inhOpt),
+											 true,
+											 ACL_UPDATE);
+
+		/*
+		 * the FROM clause is non-standard SQL syntax. We used to be able to do
+		 * this with REPLACE in POSTQUEL so we keep the feature.
+		 */
+		transformFromClause(pstate, stmt->fromClause);
+	}
 
-	/*
-	 * the FROM clause is non-standard SQL syntax. We used to be able to do
-	 * this with REPLACE in POSTQUEL so we keep the feature.
-	 */
-	transformFromClause(pstate, stmt->fromClause);
 
+	
 	qry->targetList = transformTargetList(pstate, stmt->targetList);
 
 	qual = transformWhereClause(pstate, stmt->whereClause, "WHERE");
@@ -1806,12 +1830,14 @@ transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt)
 		origTarget = (ResTarget *) lfirst(origTargetList);
 		Assert(IsA(origTarget, ResTarget));
 
+printf("targe entry :%s\n", nodeToString(origTarget));		
+
 		attrno = attnameAttNum(pstate->p_target_relation,
 							   origTarget->name, true);
 		if (attrno == InvalidAttrNumber)
 			ereport(ERROR,
 					(errcode(ERRCODE_UNDEFINED_COLUMN),
-					 errmsg("column \"%s\" of relation \"%s\" does not exist",
+					 errmsg("column \"%s\" of relation \"%s\" does not exist in transformUpdateStmt()",
 							origTarget->name,
 						 RelationGetRelationName(pstate->p_target_relation)),
 					 parser_errposition(pstate, origTarget->location)));
@@ -2241,3 +2267,326 @@ applyLockingClause(Query *qry, Index rtindex,
 	rc->pushedDown = pushedDown;
 	qry->rowMarks = lappend(qry->rowMarks, rc);
 }
+
+//transform a action of merge command into a query. No change of the pstate range table is allowed in this function. 
+static Query *
+transformMergeActions(ParseState *pstate, MergeStmt *stmt, MergeConditionAction *condact)
+{
+	Query *actqry = makeNode(Query);
+	A_Expr *match_expr; //the expr of matched/not matched
+	A_Expr *act_qual_expr;
+
+	//firstly, we need to make sure that DELETE and UPDATE actions are only taken in MATCHED condition 
+	//and INSERTs are only takend when not MATCHED
+
+	if(IsA(condact->action, MergeDelete)) 
+	{	
+		if(!condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The DELETE action in MERGE command is not allowed when NOT MATCHED")));
+	}
+	else if(IsA(condact->action, MergeUpdate))
+	{	
+		if(!condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The UPDATE action in MERGE command is not allowed when NOT MATCHED")));
+	}
+	else if(IsA(condact->action, MergeInsert))
+	{	
+		if(condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The INSERT action in MERGE command is not allowed when MATCHED")));
+	}
+	else
+		ereport(ERROR,
+			(errcode(ERRCODE_SYNTAX_ERROR),
+			 errmsg("UNKONWN action type in MERGE")));
+
+
+		
+	//combine the condtion of this act with the ON qual of the merge command
+	//do a copy of the merge condtion for safety. 
+	if(condact->match) 
+		match_expr = copyObject(stmt->matchCondition);
+	else
+		match_expr = makeA_Expr(AEXPR_NOT, NIL, NULL, 
+									copyObject(stmt->matchCondition), 1);
+											
+
+	if(condact->condition)
+		act_qual_expr = makeA_Expr(AEXPR_AND, NIL, condact->condition, (Node *)match_expr, 2);
+	else
+		act_qual_expr = match_expr;
+
+
+	//use the transfomStmt() to parse all types of actions
+	if(IsA(condact->action, MergeDelete))
+	{
+		//a delete action
+		MergeDelete *deleteact = (MergeDelete *)(condact->action);
+		Assert(IsA(deleteact,DeleteStmt));
+		
+		deleteact->relation = stmt->relation;
+		deleteact->usingClause = stmt->source;
+		deleteact->whereClause = (Node *)act_qual_expr;
+
+		//parse the action query
+		actqry = transformStmt(pstate, (Node *)deleteact);
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_DELETE || actqry->utilityStmt != NULL)
+			elog(ERROR, "improper DELETE action in merge stmt");
+
+		return actqry;
+	}
+	else if(IsA(condact->action, MergeUpdate))
+	{
+		//an update action
+		MergeUpdate *updateact = (MergeUpdate *)(condact->action);
+
+		//the "targetlist" of the updateact is filled in the parser 
+		updateact->relation = stmt->relation;
+		updateact->fromClause = stmt->source;
+		updateact->whereClause = (Node *)act_qual_expr;
+
+		//parse the action query
+		actqry = transformStmt(pstate, (Node *)updateact);
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_UPDATE|| actqry->utilityStmt != NULL)
+			elog(ERROR, "improper UPDATE action in merge stmt");
+
+		return actqry;
+	}
+	else if(IsA(condact->action, MergeInsert))
+	{
+		//an insert action
+		Node *qual;
+		MergeInsert *insertact;
+
+		insertact = (MergeInsert *)(condact->action);
+		
+		
+		//the "cols" and "selectStmt" of the insertact is filled in the parser 
+		insertact->relation = stmt->relation;
+
+		/*
+		the merge insert action has a strange feature. 
+		In an ordinary INSERT, the VALUES list can only contains constants and DEFAULT. (am I right??)
+		But in the INSERT action of MERGE command, the VALUES list can have expressions with variables(attributes of the targe and source tables).
+		Besides, in the ordinary INSERT, a VALUES list can never be followed by a WHERE clause. But in MERGE INSERT action, there are matching conditions. 
+
+		Thus, the output qry of this function is an INSERT query in the style of "INSERT...VALUES...", except that we have other range tables and a WHERE clause.
+		Note that it is also different from the "INSERT ... SELECT..." query, in which the whole SELECT is a subquery. (We don't have subquery here).
+		We construct this novel query structure in order to keep consitency with other merge action types (DELETE, UPDATE). 
+		In this way, all the merge action queries are in fact share the very same Range Table, They only differs in their target lists and join trees
+		
+		*/
+		
+				
+		//parse the action query, this will call transformInsertStmt() which analyzes the VALUES list.
+		actqry = transformStmt(pstate, (Node *)insertact);
+
+		//do the WHERE clause here, Since the transformInsertStmt() function only analyzes the VALUES list but not the WHERE clause
+		qual = transformWhereClause(pstate,(Node *)act_qual_expr, "WHERE");
+		
+		actqry->jointree = makeFromExpr(pstate->p_joinlist, qual);
+
+		
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_INSERT|| actqry->utilityStmt != NULL)
+			elog(ERROR, "improper INSERT action in merge stmt");
+
+
+		return actqry;
+	}
+	else
+		elog(ERROR, "unknown action type in MERGE");
+
+	//never comes here
+	return NULL;
+}
+
+
+
+static Query *
+transformMergeStmt(ParseState *pstate, MergeStmt *stmt)
+{
+	Query	   *qry; 
+
+	ColumnRef *starRef;
+	ResTarget *starResTarget;
+	ListCell *act;
+	ListCell *l;
+	JoinExpr *joinexp;
+	int 	rtindex;
+
+	//this will never happen, since the garm.y is restricted that only one rel name is allowed to appear in the source table position. 
+	//However, if we extent the command in future, we may need to note this check here. 
+	if(list_length(stmt->source) != 1) 
+		ereport(ERROR,
+			(errcode(ERRCODE_SYNTAX_ERROR),
+			 errmsg("now we only accept merge command with only ONE source table")));
+		
+	//now, do the real tranformation of the merge command. 
+	qry = makeNode(Query);
+	qry->commandType = CMD_MERGE;
+
+	/*
+	What we are doing here is to create a query like 
+		"SELECT * FROM <source_rel> LEFT JOIN <target_rel> ON <match_condition>;"
+	Note:	
+	1. we set the "match condition" as the join qualification. 
+	The left join will scan both the matched and non-matched tuples.
+
+	2. a normal SELECT query has no "target relation". 
+	But here we need to set the targe relation in query, like the UPDATE/DELETE/INSERT queries. 
+	So this is a left join SELECT with a "target table" in its range table. 
+
+	3. We don't have a specific ACL level for Merge, here we just use ACL_SELECT. 
+	But we will add other ACL levels when handle each merge actions.  
+	*/
+
+
+	/*before analyze the FROM clause, we need to set the target table. 
+	We cannot call setTargetTable() function directly. 
+	We only need the lock target relation, without adding it to Range table. 
+	*/
+	
+	
+	setTargetTableLock(pstate, stmt->relation);
+	
+	
+	
+	//create the FROM clause. Make the join expression first
+	joinexp = makeNode(JoinExpr);
+	joinexp->jointype = JOIN_LEFT;
+	joinexp->isNatural = FALSE;
+	joinexp->larg = linitial(stmt->source);//source list has only one element
+	joinexp->rarg = (Node *)stmt->relation;
+	joinexp->quals = stmt->matchCondition; //match condtion
+
+	//transform the FROM clause. The target relation and source relation will be add to Rtable here.	
+	transformFromClause(pstate, list_make1(joinexp));
+
+	//the targetList of the main query is "*"	
+	starRef = makeNode(ColumnRef);	
+	starRef->fields = list_make1(makeNode(A_Star));					
+	starRef->location = 1;					
+
+	starResTarget = makeNode(ResTarget);					
+	starResTarget->name = NULL;					
+	starResTarget->indirection = NIL;					
+	starResTarget->val = (Node *)starRef;					
+	starResTarget->location = 1;
+	
+	qry->targetList = transformTargetList(pstate, list_make1(starResTarget));
+
+	//we don't need the WHERE clause here. Set it null. 
+	qry->jointree = makeFromExpr(pstate->p_joinlist, NULL);
+
+	//now , we find out the RTE for the target relation, and do some unfinished jobs
+	rtindex = 1;
+	foreach(l, pstate->p_rtable)
+	{
+		RangeTblEntry *rte = (RangeTblEntry *)lfirst(l);
+		if(rte->relid == pstate->p_target_relation->rd_id) //find the RTE
+		{
+			pstate->p_target_rangetblentry = rte;
+			rte->requiredPerms = ACL_SELECT;	
+			qry->resultRelation = rtindex;
+			break;
+		}
+		rtindex++;
+	}
+
+	if(pstate->p_target_rangetblentry == NULL)
+		elog(ERROR, "cannot find the RTE for target table");
+	
+
+	qry->rtable = pstate->p_rtable;
+
+	qry->hasSubLinks = pstate->p_hasSubLinks;
+
+	/*
+	 * Top-level aggregates are simply disallowed in MERGE
+	 */
+	if (pstate->p_hasAggs)
+		ereport(ERROR,
+				(errcode(ERRCODE_GROUPING_ERROR),
+				 errmsg("cannot use aggregate function in top level of MERGE"),
+				 parser_errposition(pstate,
+									locate_agg_of_level((Node *) qry, 0))));
+	if (pstate->p_hasWindowFuncs)
+		ereport(ERROR,
+				(errcode(ERRCODE_WINDOWING_ERROR),
+				 errmsg("cannot use window function in MERGE"),
+				 parser_errposition(pstate,
+									locate_windowfunc((Node *) qry))));
+
+
+
+
+	/*
+		the main query is done.
+	then for each actions ,we transform it to a seperate query.
+	the action queries shares the exactly same range table with the main query. 
+	in other words, in the extra condtions of the sub actions, we don't allow involvement of new tables
+	*/
+	
+	qry->mergeActQry = NIL;
+
+	foreach(act,stmt->actions)
+	{
+		MergeConditionAction *mca = lfirst(act);
+		Query *actqry;
+
+		switch(mca->action->type)
+		{
+			case T_MergeDelete:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_DELETE;
+				break;
+			case T_MergeUpdate:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_UPDATE;
+				break;
+			case T_MergeInsert:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_INSERT;				
+				break;
+			default:
+				elog(ERROR, "unknown MERGE action type %d", mca->type);
+				break;
+
+		}
+
+
+		//transform the act (and its condition) as a single query. Link it to the top-level query
+		actqry = transformMergeActions(pstate, stmt, mca);
+
+		//since we don't invoke setTargetTable() in transformMergeActions(), we need to set actqry->resultRelation here
+		actqry->resultRelation = qry->resultRelation;
+
+//printf("finish one action qry: \n%s\n", nodeToString(actqry));
+
+		qry->mergeActQry = lappend(qry->mergeActQry, actqry);
+	}
+
+
+	//for a single-action merge, we just stransform it into a orignial update/delete command.
+	//but the insert action cannot take this shortcut.
+	if(list_length(stmt->actions) == 1)
+	{
+		Query *q = linitial(qry->mergeActQry);
+		if(q->commandType == CMD_DELETE || q->commandType == CMD_UPDATE)
+			return q;
+	}
+
+//printf("the content of main qry is : \n%s\n----\n-----", nodeToString(qry));
+	return qry;
+
+	
+}
+
+
+
+
+
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index f30132a..cf24985 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -213,6 +213,35 @@ setTargetTable(ParseState *pstate, RangeVar *relation,
 	return rtindex;
 }
 
+
+
+/*
+ * setTargetTableLock
+ *     only set the lock for targe table, without adding it to range table
+ */
+ 
+void
+setTargetTableLock(ParseState *pstate, RangeVar *relation)
+{
+	
+	/* Close old target; this could only happen for multi-action rules */
+	if (pstate->p_target_relation != NULL)
+		heap_close(pstate->p_target_relation, NoLock);
+
+	/*
+	 * Open target rel and grab suitable lock (which we will hold till end of
+	 * transaction).
+	 *
+	 * free_parsestate() will eventually do the corresponding heap_close(),
+	 * but *not* release the lock.
+	 */
+	pstate->p_target_relation = parserOpenTable(pstate, relation,
+												RowExclusiveLock);
+
+	
+}
+
+
 /*
  * Simplify InhOption (yes/no/default) into boolean yes/no.
  *
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 38c7e91..b2fcd1c 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -1993,7 +1993,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
 				if (att_tup->attisdropped)
 					ereport(ERROR,
 							(errcode(ERRCODE_UNDEFINED_COLUMN),
-					errmsg("column \"%s\" of relation \"%s\" does not exist",
+					errmsg("column \"%s\" of relation \"%s\" does not exist when get the attr type",
 						   NameStr(att_tup->attname),
 						   get_rel_name(rte->relid))));
 				*vartype = att_tup->atttypid;
@@ -2035,7 +2035,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
 					if (attnum < 1 || attnum > tupdesc->natts)
 						ereport(ERROR,
 								(errcode(ERRCODE_UNDEFINED_COLUMN),
-						errmsg("column %d of relation \"%s\" does not exist",
+						errmsg("column %d of relation \"%s\" does not exist when get the attr type1",
 							   attnum,
 							   rte->eref->aliasname)));
 
@@ -2048,7 +2048,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
 					if (att_tup->attisdropped)
 						ereport(ERROR,
 								(errcode(ERRCODE_UNDEFINED_COLUMN),
-								 errmsg("column \"%s\" of relation \"%s\" does not exist",
+								 errmsg("column \"%s\" of relation \"%s\" does not exist when get the attr type2",
 										NameStr(att_tup->attname),
 										rte->eref->aliasname)));
 					*vartype = att_tup->atttypid;
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index e542dc0..282ad8f 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -805,7 +805,7 @@ checkInsertTargets(ParseState *pstate, List *cols, List **attrnos)
 			if (attrno == InvalidAttrNumber)
 				ereport(ERROR,
 						(errcode(ERRCODE_UNDEFINED_COLUMN),
-					errmsg("column \"%s\" of relation \"%s\" does not exist",
+					errmsg("column \"%s\" of relation \"%s\" does not exist in checkInsertTargets()",
 						   name,
 						 RelationGetRelationName(pstate->p_target_relation)),
 						 parser_errposition(pstate, col->location)));
diff --git a/src/backend/parser/parse_type.c b/src/backend/parser/parse_type.c
index 8d0932b..bd1f9f9 100644
--- a/src/backend/parser/parse_type.c
+++ b/src/backend/parser/parse_type.c
@@ -114,7 +114,7 @@ LookupTypeName(ParseState *pstate, const TypeName *typeName,
 		if (attnum == InvalidAttrNumber)
 			ereport(ERROR,
 					(errcode(ERRCODE_UNDEFINED_COLUMN),
-					 errmsg("column \"%s\" of relation \"%s\" does not exist",
+					 errmsg("column \"%s\" of relation \"%s\" does not exist in LookupTypeName",
 							field, rel->relname),
 					 parser_errposition(pstate, typeName->location)));
 		typoid = get_atttype(relid, attnum);
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 25b44dd..90c4256 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -1861,7 +1861,57 @@ QueryRewrite(Query *parsetree)
 	 *
 	 * Apply all non-SELECT rules possibly getting 0 or many queries
 	 */
-	querylist = RewriteQuery(parsetree, NIL);
+
+	if(parsetree->commandType == CMD_MERGE)
+	{
+		//for merge query, we have a set of lower-level action queries (not subquery).
+		//each of these action queries should be applied to RewriteQuery(). And, in all cases, the original query should be excuted. 
+		//However, I am not sure how to run the rules for a merge command yet. :(
+
+		ListCell *l;
+		
+		querylist = NIL;
+
+		foreach(l, parsetree->mergeActQry)
+		{
+			List *queryList4action;
+			Query  *q;
+			
+			queryList4action = RewriteQuery((Query *)lfirst(l), NIL);
+
+
+
+
+
+			if(queryList4action == NIL)
+				continue;
+			
+			//we need to remove the orignal query from the list. 
+			//If it is in the list, it must be either the head or the tail.
+
+						
+			q = (Query *)linitial(queryList4action);
+			if(q->querySource == QSRC_ORIGINAL)
+				queryList4action = list_delete_first(queryList4action);
+			else
+			{
+				q = (Query *)llast(queryList4action);
+				if(q->querySource == QSRC_ORIGINAL)
+					queryList4action = list_truncate(queryList4action,list_length(queryList4action)-1);
+			}	
+			
+
+			//append the rule queries of this action to the full querylist
+			querylist = list_concat(querylist,queryList4action);
+		}
+
+		//finally, put the original query at the head.
+		querylist = lcons(parsetree,querylist);
+
+			
+	}
+	else //a plain query
+		querylist = RewriteQuery(parsetree, NIL);
 
 	/*
 	 * Step 2
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 8960246..846c7c4 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -1398,6 +1398,10 @@ CreateCommandTag(Node *parsetree)
 			tag = "SELECT";
 			break;
 
+		case T_MergeStmt:
+			tag = "MERGE";
+			break;
+
 			/* utility statements --- same whether raw or cooked */
 		case T_TransactionStmt:
 			{
@@ -2206,7 +2210,7 @@ CreateCommandTag(Node *parsetree)
 			break;
 
 		default:
-			elog(WARNING, "unrecognized node type: %d",
+			elog(WARNING, "unrecognized node type: %d for command tag creation",
 				 (int) nodeTag(parsetree));
 			tag = "???";
 			break;
@@ -2235,6 +2239,7 @@ GetCommandLogLevel(Node *parsetree)
 		case T_InsertStmt:
 		case T_DeleteStmt:
 		case T_UpdateStmt:
+		case T_MergeStmt:
 			lev = LOGSTMT_MOD;
 			break;
 
@@ -2659,7 +2664,7 @@ GetCommandLogLevel(Node *parsetree)
 			break;
 
 		default:
-			elog(WARNING, "unrecognized node type: %d",
+			elog(WARNING, "unrecognized node type: %d when get the command log level",
 				 (int) nodeTag(parsetree));
 			lev = LOGSTMT_ALL;
 			break;
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index 1b5e476..0a619d2 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -260,6 +260,14 @@ typedef enum NodeTag
 	T_DeleteStmt,
 	T_UpdateStmt,
 	T_SelectStmt,
+	
+	T_MergeStmt,
+	T_MergeConditionAction,
+	T_MergeUpdate, 
+	T_MergeDelete,  
+	T_MergeInsert,
+
+
 	T_AlterTableStmt,
 	T_AlterTableCmd,
 	T_AlterDomainStmt,
@@ -509,7 +517,9 @@ typedef enum CmdType
 	CMD_SELECT,					/* select stmt */
 	CMD_UPDATE,					/* update stmt */
 	CMD_INSERT,					/* insert stmt */
-	CMD_DELETE,
+	CMD_DELETE,					/*delete stmt*/
+	CMD_MERGE,						/*merge stmt*/
+	
 	CMD_UTILITY,				/* cmds like create, destroy, copy, vacuum,
 								 * etc. */
 	CMD_NOTHING					/* dummy command for instead nothing rules
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index b591073..05e98d9 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -108,6 +108,9 @@ typedef struct Query
 	Node	   *utilityStmt;	/* non-null if this is DECLARE CURSOR or a
 								 * non-optimizable statement */
 
+	List 		*mergeActQry; // the list of all the merge actions. used only for merge query statment
+
+	
 	int			resultRelation; /* rtable index of target relation for
 								 * INSERT/UPDATE/DELETE; 0 for SELECT */
 
@@ -922,6 +925,9 @@ typedef struct UpdateStmt
 	List	   *returningList;	/* list of expressions to return */
 } UpdateStmt;
 
+
+
+
 /* ----------------------
  *		Select Statement
  *
@@ -1023,6 +1029,33 @@ typedef struct SetOperationStmt
 } SetOperationStmt;
 
 
+//ZBX: the structure for MERGE command statement
+typedef struct MergeStmt
+{
+	NodeTag		type;
+	RangeVar   	*relation;		/*targe relation for merge */
+	List		*source;		/* source relations for the merge. Currently, we only allwo single-source merge, so the length of this list should always be 1 */
+	Node	   	*matchCondition;	/* qualifications of the merge*/
+	List	   	*actions;		/*list  of MergeConditionAction structure. It stores all the match / non-matching conditions and the corresponding actions*/
+
+}MergeStmt;
+
+//the structure for the actions of MERGE command. Holds info of the clauses like "... WHEN MATCHED AND ... THEN UPDATE/DELETE/INSERT"
+typedef struct MergeConditionAction
+{
+	NodeTag		type;
+	bool 		match; //match or not match
+	Node		*condition;//the AND condition for this action
+	Node 		*action; //the actions: delete , insert or update
+}MergeConditionAction;
+
+typedef UpdateStmt MergeUpdate;
+typedef DeleteStmt MergeDelete;
+typedef InsertStmt MergeInsert;
+
+
+
+
 /*****************************************************************************
  *		Other Statements (no optimizations required)
  *
diff --git a/src/include/parser/parse_clause.h b/src/include/parser/parse_clause.h
index f3d3ee9..2541f50 100644
--- a/src/include/parser/parse_clause.h
+++ b/src/include/parser/parse_clause.h
@@ -19,6 +19,9 @@
 extern void transformFromClause(ParseState *pstate, List *frmList);
 extern int setTargetTable(ParseState *pstate, RangeVar *relation,
 			   bool inh, bool alsoSource, AclMode requiredPerms);
+
+extern void setTargetTableLock(ParseState *pstate, RangeVar *relation);
+
 extern bool interpretInhOption(InhOption inhOpt);
 extern bool interpretOidsOption(List *defList);
 
#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: David Fetter (#4)
Re: gSoC - ADD MERGE COMMAND - code patch submission

David Fetter <david@fetter.org> writes:

Please find enclosed a patch against git master as of
7b2668159bb4d0f5177a23d05bf7c2ab00bc0d75. It works up to make, but
fails on make check.

There seem to be about four different comment styles used in this patch,
none of which match the project standard:
http://developer.postgresql.org/pgdocs/postgres/source-format.html

BTW, I notice that that page fails to mention anything about preferred
window width. I believe the project standard is to make things readable
in an 80-column window --- anyone have an objection to stating that
explicitly?

regards, tom lane

#6Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#5)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Jul 10, 2010, at 11:45 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

David Fetter <david@fetter.org> writes:

Please find enclosed a patch against git master as of
7b2668159bb4d0f5177a23d05bf7c2ab00bc0d75. It works up to make, but
fails on make check.

There seem to be about four different comment styles used in this patch,
none of which match the project standard:
http://developer.postgresql.org/pgdocs/postgres/source-format.html

BTW, I notice that that page fails to mention anything about preferred
window width. I believe the project standard is to make things readable
in an 80-column window --- anyone have an objection to stating that
explicitly?

I certainly don't.

Though, if the worst problem with this patch is the formatting, we're doing *quite* well.

...Robert

#7David Fetter
david@fetter.org
In reply to: David Fetter (#4)
1 attachment(s)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Sat, Jul 10, 2010 at 09:26:38AM -0700, David Fetter wrote:

On Sat, Jul 10, 2010 at 11:52:31AM +0200, Andres Freund wrote:

On Fri, Jul 09, 2010 at 11:33:04PM -0400, Robert Haas wrote:

On Fri, Jul 9, 2010 at 10:25 PM, Boxuan Zhai <bxzhai2010@gmail.com> wrote:

Dear All,

This is ZHAI BOXUAN, a student of gSoC 2010. My project is to add merge
command in postgres.
There is a more detailed instruction in readme.

I would find it helpfull to find a short recap of how you want to
handle the various problems (mostly around locking) in the readme.

Any comments will be highly appreciated.

Is there any chance you can submit this as a single patch file? Or if
not, can you at least use a zip or tar file instead of a RAR archive?
Ideally the patch would be against CVS HEAD, not 8.4.3.

I would also suggest you base your patch either against the git tree
or CVS. Currently it does include patches agains generated files like
gram.y or kwlist.h which make it harder to see the real changes.

Please find enclosed a patch against git master as of
7b2668159bb4d0f5177a23d05bf7c2ab00bc0d75. It works up to make, but
fails on make check.

I'm thinking the docs for INSERT, UPDATE, and DELETE should link to
the docs for this, as they get written.

Cheers,
David.

Oops. Just noticed that there were 56 lines' worth of C++ style
comments, which I've corrected in the enclosed patch, along with some
spelling mistakes, grammar, and gratuitous white space.

Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

Attachments:

merge2.difftext/plain; charset=us-asciiDownload
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index e770e89..f72ebcf 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -2231,6 +2231,7 @@ _copyQuery(Query *from)
 	COPY_SCALAR_FIELD(querySource);
 	COPY_SCALAR_FIELD(canSetTag);
 	COPY_NODE_FIELD(utilityStmt);
+	COPY_NODE_FIELD(mergeActQry); /* merge actions */
 	COPY_SCALAR_FIELD(resultRelation);
 	COPY_NODE_FIELD(intoClause);
 	COPY_SCALAR_FIELD(hasAggs);
@@ -2324,6 +2325,36 @@ _copySelectStmt(SelectStmt *from)
 	return newnode;
 }
 
+
+static MergeStmt *
+_copyMergeStmt(MergeStmt *from)
+{
+	MergeStmt *newnode = makeNode(MergeStmt);
+
+	COPY_NODE_FIELD(relation);
+	COPY_NODE_FIELD(source);
+	COPY_NODE_FIELD(matchCondition);
+	COPY_NODE_FIELD(actions);
+
+	return newnode;
+
+}
+
+
+static MergeConditionAction *
+_copyMergeConditionAction(MergeConditionAction *from)
+{
+	MergeConditionAction *newnode = makeNode(MergeConditionAction);
+
+	COPY_SCALAR_FIELD(match);
+	COPY_NODE_FIELD(condition);
+	COPY_NODE_FIELD(action);
+
+	return newnode;
+}
+
+
+
 static SetOperationStmt *
 _copySetOperationStmt(SetOperationStmt *from)
 {
@@ -4148,7 +4179,14 @@ copyObject(void *from)
 		case T_AlterTSConfigurationStmt:
 			retval = _copyAlterTSConfigurationStmt(from);
 			break;
+		case T_MergeStmt:
+			retval = _copyMergeStmt(from);
+			break;
 
+
+		case T_MergeConditionAction:
+			retval = _copyMergeConditionAction(from);
+			break;
 		case T_A_Expr:
 			retval = _copyAExpr(from);
 			break;
@@ -4244,7 +4282,7 @@ copyObject(void *from)
 			break;
 
 		default:
-			elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from));
+			elog(ERROR, "unrecognized node type: %d in copyObject() function", (int) nodeTag(from));
 			retval = from;		/* keep compiler quiet */
 			break;
 	}
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 5d83727..8ab3247 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -855,6 +855,7 @@ _equalQuery(Query *a, Query *b)
 	COMPARE_SCALAR_FIELD(querySource);
 	COMPARE_SCALAR_FIELD(canSetTag);
 	COMPARE_NODE_FIELD(utilityStmt);
+	COMPARE_NODE_FIELD(mergeActQry);
 	COMPARE_SCALAR_FIELD(resultRelation);
 	COMPARE_NODE_FIELD(intoClause);
 	COMPARE_SCALAR_FIELD(hasAggs);
@@ -2933,7 +2934,7 @@ equal(void *a, void *b)
 			break;
 
 		default:
-			elog(ERROR, "unrecognized node type: %d",
+			elog(ERROR, "unrecognized node type: %d in equal() function",
 				 (int) nodeTag(a));
 			retval = false;		/* keep compiler quiet */
 			break;
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index e7dae4b..b65dc58 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -1984,6 +1984,7 @@ _outQuery(StringInfo str, Query *node)
 	else
 		appendStringInfo(str, " :utilityStmt <>");
 
+	WRITE_NODE_FIELD(mergeActQry);
 	WRITE_INT_FIELD(resultRelation);
 	WRITE_NODE_FIELD(intoClause);
 	WRITE_BOOL_FIELD(hasAggs);
@@ -2439,6 +2440,46 @@ _outConstraint(StringInfo str, Constraint *node)
 }
 
 
+
+
+static void
+_outMergeConditionAction(StringInfo str, MergeConditionAction *node)
+{
+	WRITE_NODE_TYPE("MERGECONDITIONACTION");
+
+	WRITE_BOOL_FIELD(match);
+
+	WRITE_NODE_FIELD(condition);
+	WRITE_NODE_FIELD(action);
+
+
+}
+
+static void
+_outMergeStmt(StringInfo str, MergeStmt *node)
+{
+	WRITE_NODE_TYPE("MERGESTMT");
+
+	WRITE_NODE_FIELD(relation);
+	WRITE_NODE_FIELD(source);
+	WRITE_NODE_FIELD(matchCondition);
+	WRITE_NODE_FIELD(actions);
+
+}
+
+static void 
+_outDeleteStmt(StringInfo str, DeleteStmt *node)
+{
+	WRITE_NODE_TYPE("DELETESTMT");
+
+	WRITE_NODE_FIELD(relation);
+	WRITE_NODE_FIELD(usingClause);
+	WRITE_NODE_FIELD(whereClause);
+	WRITE_NODE_FIELD(returningList);
+
+
+}
+
 /*
  * _outNode -
  *	  converts a Node into ascii string and append it to 'str'
@@ -2889,6 +2930,16 @@ _outNode(StringInfo str, void *obj)
 				_outXmlSerialize(str, obj);
 				break;
 
+			case T_MergeStmt:
+				_outMergeStmt(str, obj);
+				break;
+			case T_MergeConditionAction:
+				_outMergeConditionAction(str,obj);
+				break;
+			case T_DeleteStmt:
+				_outDeleteStmt(str,obj);
+				break;
+
 			default:
 
 				/*
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 6b99a10..7862212 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -64,6 +64,8 @@ static Query *transformExplainStmt(ParseState *pstate,
 static void transformLockingClause(ParseState *pstate, Query *qry,
 					   LockingClause *lc, bool pushedDown);
 
+static Query *
+transformMergeStmt(ParseState *pstate, MergeStmt *stmt);
 
 /*
  * parse_analyze
@@ -164,14 +166,17 @@ transformStmt(ParseState *pstate, Node *parseTree)
 			 * Optimizable statements
 			 */
 		case T_InsertStmt:
+		case T_MergeInsert:
 			result = transformInsertStmt(pstate, (InsertStmt *) parseTree);
 			break;
 
 		case T_DeleteStmt:
+		case T_MergeDelete:
 			result = transformDeleteStmt(pstate, (DeleteStmt *) parseTree);
 			break;
 
 		case T_UpdateStmt:
+		case T_MergeUpdate:
 			result = transformUpdateStmt(pstate, (UpdateStmt *) parseTree);
 			break;
 
@@ -188,6 +193,10 @@ transformStmt(ParseState *pstate, Node *parseTree)
 			}
 			break;
 
+		case T_MergeStmt:
+			result = transformMergeStmt(pstate, (MergeStmt *)parseTree);
+			break;
+
 			/*
 			 * Special cases
 			 */
@@ -282,12 +291,14 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt)
 
 	qry->commandType = CMD_DELETE;
 
-	/* set up range table with just the result rel */
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
+	if(IsA(stmt,DeleteStmt)) /* For MergeDelete, no need to do this. */
+	{
+		/* set up range table with just the result rel */
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
 								  interpretInhOption(stmt->relation->inhOpt),
 										 true,
 										 ACL_DELETE);
-
+	}
 	qry->distinctClause = NIL;
 
 	/*
@@ -296,7 +307,8 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt)
 	 * USING keyword is used rather than FROM because FROM is already a
 	 * keyword in the DELETE syntax.
 	 */
-	transformFromClause(pstate, stmt->usingClause);
+	if(IsA(stmt,DeleteStmt)) /* For MergeDelete, no need to do this. */
+		transformFromClause(pstate, stmt->usingClause);
 
 	qual = transformWhereClause(pstate, stmt->whereClause, "WHERE");
 
@@ -347,6 +359,9 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 	 * VALUES list, or general SELECT input.  We special-case VALUES, both for
 	 * efficiency and so we can handle DEFAULT specifications.
 	 */
+
+	/* A MergeInsert statment is always VALUE clause */
+
 	isGeneralSelect = (selectStmt && selectStmt->valuesLists == NIL);
 
 	/*
@@ -382,7 +397,8 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 	 * mentioned in the SELECT part.  Note that the target table is not added
 	 * to the joinlist or namespace.
 	 */
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
+	if(IsA(stmt,InsertStmt)) /* for MergeInsert, no need to do this */
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
 										 false, false, ACL_INSERT);
 
 	/* Validate stmt->cols list, or build default list if no list given */
@@ -695,7 +711,6 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 				 errmsg("cannot use window function in VALUES"),
 				 parser_errposition(pstate,
 									locate_windowfunc((Node *) qry))));
-
 	return qry;
 }
 
@@ -892,6 +907,9 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt)
 							   (LockingClause *) lfirst(l), false);
 	}
 
+
+/* printf("%s\n", nodeToString(qry)); */
+
 	return qry;
 }
 
@@ -1730,16 +1748,22 @@ transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt)
 	qry->commandType = CMD_UPDATE;
 	pstate->p_is_update = true;
 
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
-								  interpretInhOption(stmt->relation->inhOpt),
-										 true,
-										 ACL_UPDATE);
+	if(IsA(stmt, UpdateStmt))/* for MergeUpdate, no need to do this */
+	{
+		/* for a MergeUpdate node, we have no need to se the target and source rels */
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
+									  interpretInhOption(stmt->relation->inhOpt),
+											 true,
+											 ACL_UPDATE);
+
+		/*
+		 * the FROM clause is non-standard SQL syntax. We used to be able to do
+		 * this with REPLACE in POSTQUEL so we keep the feature.
+		 */
+		transformFromClause(pstate, stmt->fromClause);
+	}
+
 
-	/*
-	 * the FROM clause is non-standard SQL syntax. We used to be able to do
-	 * this with REPLACE in POSTQUEL so we keep the feature.
-	 */
-	transformFromClause(pstate, stmt->fromClause);
 
 	qry->targetList = transformTargetList(pstate, stmt->targetList);
 
@@ -1806,12 +1830,14 @@ transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt)
 		origTarget = (ResTarget *) lfirst(origTargetList);
 		Assert(IsA(origTarget, ResTarget));
 
+printf("targe entry :%s\n", nodeToString(origTarget));		
+
 		attrno = attnameAttNum(pstate->p_target_relation,
 							   origTarget->name, true);
 		if (attrno == InvalidAttrNumber)
 			ereport(ERROR,
 					(errcode(ERRCODE_UNDEFINED_COLUMN),
-					 errmsg("column \"%s\" of relation \"%s\" does not exist",
+					 errmsg("column \"%s\" of relation \"%s\" does not exist in transformUpdateStmt()",
 							origTarget->name,
 						 RelationGetRelationName(pstate->p_target_relation)),
 					 parser_errposition(pstate, origTarget->location)));
@@ -2241,3 +2267,370 @@ applyLockingClause(Query *qry, Index rtindex,
 	rc->pushedDown = pushedDown;
 	qry->rowMarks = lappend(qry->rowMarks, rc);
 }
+
+/* transform a action of merge command into a query. No change of the pstate range table is allowed in this function.  */
+static Query *
+transformMergeActions(ParseState *pstate, MergeStmt *stmt, MergeConditionAction *condact)
+{
+	Query *actqry = makeNode(Query);
+	A_Expr *match_expr; /* the expr of matched/not matched */
+	A_Expr *act_qual_expr;
+
+	/*
+	 * Firstly, we need to make sure that DELETE and UPDATE actions
+	 * are only taken in MATCHED condition and INSERTs are only takend
+	 * when not MATCHED
+	 */
+
+	if(IsA(condact->action, MergeDelete)) 
+	{	
+		if(!condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The DELETE action in MERGE command is not allowed when NOT MATCHED")));
+	}
+	else if(IsA(condact->action, MergeUpdate))
+	{	
+		if(!condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The UPDATE action in MERGE command is not allowed when NOT MATCHED")));
+	}
+	else if(IsA(condact->action, MergeInsert))
+	{	
+		if(condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The INSERT action in MERGE command is not allowed when MATCHED")));
+	}
+	else
+		ereport(ERROR,
+			(errcode(ERRCODE_SYNTAX_ERROR),
+			 errmsg("UNKONWN action type in MERGE")));
+
+
+
+	/*
+	 * Combine the condition of this act with the ON qual of the merge
+	 * command do a copy of the merge condtion for safety. 
+	 */
+	if(condact->match) 
+		match_expr = copyObject(stmt->matchCondition);
+	else
+		match_expr = makeA_Expr(AEXPR_NOT, NIL, NULL, 
+									copyObject(stmt->matchCondition), 1);
+
+
+	if(condact->condition)
+		act_qual_expr = makeA_Expr(AEXPR_AND, NIL, condact->condition, (Node *)match_expr, 2);
+	else
+		act_qual_expr = match_expr;
+
+
+	/* Use the transfomStmt() to parse all types of actions */
+	if(IsA(condact->action, MergeDelete))
+	{
+		/* a delete action */
+		MergeDelete *deleteact = (MergeDelete *)(condact->action);
+		Assert(IsA(deleteact,DeleteStmt));
+
+		deleteact->relation = stmt->relation;
+		deleteact->usingClause = stmt->source;
+		deleteact->whereClause = (Node *)act_qual_expr;
+
+		/* parse the action query */
+		actqry = transformStmt(pstate, (Node *)deleteact);
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_DELETE || actqry->utilityStmt != NULL)
+			elog(ERROR, "improper DELETE action in merge stmt");
+
+		return actqry;
+	}
+	else if(IsA(condact->action, MergeUpdate))
+	{
+		/* an update action */
+		MergeUpdate *updateact = (MergeUpdate *)(condact->action);
+
+		/* the "targetlist" of the updateact is filled in the parser  */
+		updateact->relation = stmt->relation;
+		updateact->fromClause = stmt->source;
+		updateact->whereClause = (Node *)act_qual_expr;
+
+		/* parse the action query */
+		actqry = transformStmt(pstate, (Node *)updateact);
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_UPDATE|| actqry->utilityStmt != NULL)
+			elog(ERROR, "improper UPDATE action in merge stmt");
+
+		return actqry;
+	}
+	else if(IsA(condact->action, MergeInsert))
+	{
+		/* an insert action */
+		Node *qual;
+		MergeInsert *insertact;
+
+		insertact = (MergeInsert *)(condact->action);
+
+
+		/* the "cols" and "selectStmt" of the insertact is filled in the parser  */
+		insertact->relation = stmt->relation;
+
+		/*
+		 * The merge insert action has a strange feature.  In an
+		 * ordinary INSERT, the VALUES list can only contains
+		 * constants and DEFAULT. (am I right??) But in the INSERT
+		 * action of MERGE command, the VALUES list can have
+		 * expressions with variables(attributes of the targe and
+		 * source tables).  Besides, in the ordinary INSERT, a VALUES
+		 * list can never be followed by a WHERE clause. But in MERGE
+		 * INSERT action, there are matching conditions. 
+		 *
+		 * Thus, the output qry of this function is an INSERT query in
+		 * the style of "INSERT...VALUES...", except that we have
+		 * other range tables and a WHERE clause.  Note that it is
+		 * also different from the "INSERT ... SELECT..." query, in
+		 * which the whole SELECT is a subquery. (We don't have
+		 * subquery here).  We construct this novel query structure in
+		 * order to keep consitency with other merge action types
+		 * (DELETE, UPDATE).  In this way, all the merge action
+		 * queries are in fact share the very same Range Table, They
+		 * only differs in their target lists and join trees
+		 */
+
+
+		/*
+		 * Parse the action query, this will call
+		 * transformInsertStmt() which analyzes the VALUES list.
+		 */
+		actqry = transformStmt(pstate, (Node *)insertact);
+
+		/*
+		 * Do the WHERE clause here, Since the transformInsertStmt()
+		 * function only analyzes the VALUES list but not the WHERE
+		 * clause.
+		 */
+		qual = transformWhereClause(pstate,(Node *)act_qual_expr,
+		"WHERE");
+
+		actqry->jointree = makeFromExpr(pstate->p_joinlist, qual);
+
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_INSERT|| actqry->utilityStmt != NULL)
+			elog(ERROR, "improper INSERT action in merge stmt");
+
+
+		return actqry;
+	}
+	else
+		elog(ERROR, "unknown action type in MERGE");
+
+	/* never comes here */
+	return NULL;
+}
+
+
+
+static Query *
+transformMergeStmt(ParseState *pstate, MergeStmt *stmt)
+{
+	Query	   *qry; 
+
+	ColumnRef *starRef;
+	ResTarget *starResTarget;
+	ListCell *act;
+	ListCell *l;
+	JoinExpr *joinexp;
+	int 	rtindex;
+
+	/* This will never happen, since the garm.y is restricted that
+	 * only one rel name is allowed to appear in the source table
+	 * position.  However, if we extent the command in future, we may
+	 * need to note this check here. 
+	 */
+	if(list_length(stmt->source) != 1) 
+		ereport(ERROR,
+			(errcode(ERRCODE_SYNTAX_ERROR),
+			 errmsg("now we only accept merge command with only ONE source table")));
+
+	/*
+	 * Now, do the real tranformation of the merge command. 
+	 */
+	qry = makeNode(Query);
+	qry->commandType = CMD_MERGE;
+
+	/*
+	 * What we are doing here is to create a query like
+	 * "SELECT * FROM <source_rel> LEFT JOIN <target_rel> ON <match_condition>;"
+	 *
+	 * Note:	
+	 * 1. we set the "match condition" as the join qualification.  The
+	 * left join will scan both the matched and non-matched tuples.
+	 *
+	 * 2. A normal SELECT query has no "target relation".  But here we
+	 * need to set the targe relation in query, like the
+	 * UPDATE/DELETE/INSERT queries.  So this is a left join SELECT
+	 * with a "target table" in its range table. 
+	 *
+	 * 3. We don't have a specific ACL level for Merge, here we just
+	 * use ACL_SELECT.  But we will add other ACL levels when handle
+	 * each merge actions.  
+	 */
+
+
+	/*
+	 * Before analyze the FROM clause, we need to set the target
+	 * table.  We cannot call setTargetTable() function directly.  We
+	 * only need the lock target relation, without adding it to Range
+	 * table. 
+	 */
+
+
+	setTargetTableLock(pstate, stmt->relation);
+
+	/*
+	 * Create the FROM clause. Make the join expression first
+	 */
+
+	joinexp = makeNode(JoinExpr); joinexp->jointype = JOIN_LEFT;
+	joinexp->isNatural = FALSE; joinexp->larg =
+		linitial(stmt->source); /* source list has only one element */
+	joinexp->rarg = (Node *)stmt->relation; joinexp->quals =
+		stmt->matchCondition; /* match condtion */
+
+	/*
+	 * Transform the FROM clause.  The target relation and source
+	 * relation will be add to Rtable here.	
+	 */
+
+	transformFromClause(pstate, list_make1(joinexp));
+
+	/* The targetList of the main query is "*" */
+	starRef = makeNode(ColumnRef);	
+	starRef->fields = list_make1(makeNode(A_Star));					
+	starRef->location = 1;					
+
+	starResTarget = makeNode(ResTarget);					
+	starResTarget->name = NULL;					
+	starResTarget->indirection = NIL;					
+	starResTarget->val = (Node *)starRef;					
+	starResTarget->location = 1;
+
+	qry->targetList = transformTargetList(pstate, list_make1(starResTarget));
+
+	/* We don't need the WHERE clause here. Set it null.  */
+	qry->jointree = makeFromExpr(pstate->p_joinlist, NULL);
+
+	/* Now , we find out the RTE for the target relation, and do some unfinished jobs */
+	rtindex = 1;
+	foreach(l, pstate->p_rtable)
+	{
+		RangeTblEntry *rte = (RangeTblEntry *)lfirst(l);
+		if(rte->relid == pstate->p_target_relation->rd_id) /* find the RTE */
+		{
+			pstate->p_target_rangetblentry = rte;
+			rte->requiredPerms = ACL_SELECT;	
+			qry->resultRelation = rtindex;
+			break;
+		}
+		rtindex++;
+	}
+
+	if(pstate->p_target_rangetblentry == NULL)
+		elog(ERROR, "cannot find the RTE for target table");
+
+
+	qry->rtable = pstate->p_rtable;
+
+	qry->hasSubLinks = pstate->p_hasSubLinks;
+
+	/*
+	 * Top-level aggregates are simply disallowed in MERGE
+	 */
+	if (pstate->p_hasAggs)
+		ereport(ERROR,
+				(errcode(ERRCODE_GROUPING_ERROR),
+				 errmsg("cannot use aggregate function in top level of MERGE"),
+				 parser_errposition(pstate,
+									locate_agg_of_level((Node *) qry, 0))));
+	if (pstate->p_hasWindowFuncs)
+		ereport(ERROR,
+				(errcode(ERRCODE_WINDOWING_ERROR),
+				 errmsg("cannot use window function in MERGE"),
+				 parser_errposition(pstate,
+									locate_windowfunc((Node *) qry))));
+
+
+
+
+	/*
+	 * The main query is done.  Then for each actions, we transform it
+	 * to a separate query.  The action queries shares the exactly
+	 * same range table with the main query.  In other words, in the
+	 * extra condtions of the sub actions, we don't allow involvement
+	 * of new tables.
+	 */
+
+	qry->mergeActQry = NIL;
+
+	foreach(act,stmt->actions)
+	{
+		MergeConditionAction *mca = lfirst(act);
+		Query *actqry;
+
+		switch(mca->action->type)
+		{
+			case T_MergeDelete:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_DELETE;
+				break;
+			case T_MergeUpdate:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_UPDATE;
+				break;
+			case T_MergeInsert:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_INSERT;				
+				break;
+			default:
+				elog(ERROR, "unknown MERGE action type %d", mca->type);
+				break;
+
+		}
+
+
+		/*
+		 * Transform the act (and its condition) as a single query.
+		 * Link it to the top-level query
+		 */
+
+		actqry = transformMergeActions(pstate, stmt, mca);
+
+		/*
+		 * Since we don't invoke setTargetTable() in
+		 * transformMergeActions(), we need to set
+		 * actqry->resultRelation here.
+		 */
+
+		actqry->resultRelation = qry->resultRelation;
+
+/* printf("finish one action qry: \n%s\n", nodeToString(actqry)); */
+
+		qry->mergeActQry = lappend(qry->mergeActQry, actqry);
+	}
+
+	/* 
+	 * For a single-action merge, we just stransform it into a
+	 * orignial update/delete command. But the insert action cannot
+	 * take this shortcut.
+	 */
+
+	if(list_length(stmt->actions) == 1)
+	{
+		Query *q = linitial(qry->mergeActQry);
+		if(q->commandType == CMD_DELETE || q->commandType == CMD_UPDATE)
+			return q;
+	}
+
+/* printf("the content of main qry is : \n%s\n----\n-----", nodeToString(qry)); */
+	return qry;
+
+}
+
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index f30132a..33855b1 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -213,6 +213,35 @@ setTargetTable(ParseState *pstate, RangeVar *relation,
 	return rtindex;
 }
 
+
+
+/*
+ * setTargetTableLock
+ *     only set the lock for targe table, without adding it to range table
+ */
+
+void
+setTargetTableLock(ParseState *pstate, RangeVar *relation)
+{
+
+	/* Close old target; this could only happen for multi-action rules */
+	if (pstate->p_target_relation != NULL)
+		heap_close(pstate->p_target_relation, NoLock);
+
+	/*
+	 * Open target rel and grab suitable lock (which we will hold till end of
+	 * transaction).
+	 *
+	 * free_parsestate() will eventually do the corresponding heap_close(),
+	 * but *not* release the lock.
+	 */
+	pstate->p_target_relation = parserOpenTable(pstate, relation,
+												RowExclusiveLock);
+
+
+}
+
+
 /*
  * Simplify InhOption (yes/no/default) into boolean yes/no.
  *
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 38c7e91..b2fcd1c 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -1993,7 +1993,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
 				if (att_tup->attisdropped)
 					ereport(ERROR,
 							(errcode(ERRCODE_UNDEFINED_COLUMN),
-					errmsg("column \"%s\" of relation \"%s\" does not exist",
+					errmsg("column \"%s\" of relation \"%s\" does not exist when get the attr type",
 						   NameStr(att_tup->attname),
 						   get_rel_name(rte->relid))));
 				*vartype = att_tup->atttypid;
@@ -2035,7 +2035,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
 					if (attnum < 1 || attnum > tupdesc->natts)
 						ereport(ERROR,
 								(errcode(ERRCODE_UNDEFINED_COLUMN),
-						errmsg("column %d of relation \"%s\" does not exist",
+						errmsg("column %d of relation \"%s\" does not exist when get the attr type1",
 							   attnum,
 							   rte->eref->aliasname)));
 
@@ -2048,7 +2048,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
 					if (att_tup->attisdropped)
 						ereport(ERROR,
 								(errcode(ERRCODE_UNDEFINED_COLUMN),
-								 errmsg("column \"%s\" of relation \"%s\" does not exist",
+								 errmsg("column \"%s\" of relation \"%s\" does not exist when get the attr type2",
 										NameStr(att_tup->attname),
 										rte->eref->aliasname)));
 					*vartype = att_tup->atttypid;
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index e542dc0..282ad8f 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -805,7 +805,7 @@ checkInsertTargets(ParseState *pstate, List *cols, List **attrnos)
 			if (attrno == InvalidAttrNumber)
 				ereport(ERROR,
 						(errcode(ERRCODE_UNDEFINED_COLUMN),
-					errmsg("column \"%s\" of relation \"%s\" does not exist",
+					errmsg("column \"%s\" of relation \"%s\" does not exist in checkInsertTargets()",
 						   name,
 						 RelationGetRelationName(pstate->p_target_relation)),
 						 parser_errposition(pstate, col->location)));
diff --git a/src/backend/parser/parse_type.c b/src/backend/parser/parse_type.c
index 8d0932b..bd1f9f9 100644
--- a/src/backend/parser/parse_type.c
+++ b/src/backend/parser/parse_type.c
@@ -114,7 +114,7 @@ LookupTypeName(ParseState *pstate, const TypeName *typeName,
 		if (attnum == InvalidAttrNumber)
 			ereport(ERROR,
 					(errcode(ERRCODE_UNDEFINED_COLUMN),
-					 errmsg("column \"%s\" of relation \"%s\" does not exist",
+					 errmsg("column \"%s\" of relation \"%s\" does not exist in LookupTypeName",
 							field, rel->relname),
 					 parser_errposition(pstate, typeName->location)));
 		typoid = get_atttype(relid, attnum);
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 25b44dd..c863b20 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -1861,7 +1861,58 @@ QueryRewrite(Query *parsetree)
 	 *
 	 * Apply all non-SELECT rules possibly getting 0 or many queries
 	 */
-	querylist = RewriteQuery(parsetree, NIL);
+
+	if(parsetree->commandType == CMD_MERGE)
+	{
+		/*
+		 * For merge query, we have a set of lower-level action
+		 * queries (not subquery).  Each of these action queries
+		 * should be applied to RewriteQuery().  And, in all cases, the
+		 * original query should be excuted.  However, I am not sure
+		 * how to run the rules for a merge command yet. :(
+		 */
+
+		ListCell *l;
+
+		querylist = NIL;
+
+		foreach(l, parsetree->mergeActQry)
+		{
+			List *queryList4action;
+			Query  *q;
+
+			queryList4action = RewriteQuery((Query *)lfirst(l), NIL);
+
+			if(queryList4action == NIL)
+				continue;
+
+			/* We need to remove the orignal query from the list.  If
+			 * it is in the list, it must be either the head or the
+			 * tail.
+			 */
+
+			q = (Query *)linitial(queryList4action);
+			if(q->querySource == QSRC_ORIGINAL)
+				queryList4action = list_delete_first(queryList4action);
+			else
+			{
+				q = (Query *)llast(queryList4action);
+				if(q->querySource == QSRC_ORIGINAL)
+					queryList4action = list_truncate(queryList4action,list_length(queryList4action)-1);
+			}	
+
+
+			/* Append the rule queries of this action to the full querylist */
+			querylist = list_concat(querylist,queryList4action);
+		}
+
+		/* Finally, put the original query at the head. */
+		querylist = lcons(parsetree,querylist);
+
+
+	}
+	else /* a plain query */
+		querylist = RewriteQuery(parsetree, NIL);
 
 	/*
 	 * Step 2
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 8960246..846c7c4 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -1398,6 +1398,10 @@ CreateCommandTag(Node *parsetree)
 			tag = "SELECT";
 			break;
 
+		case T_MergeStmt:
+			tag = "MERGE";
+			break;
+
 			/* utility statements --- same whether raw or cooked */
 		case T_TransactionStmt:
 			{
@@ -2206,7 +2210,7 @@ CreateCommandTag(Node *parsetree)
 			break;
 
 		default:
-			elog(WARNING, "unrecognized node type: %d",
+			elog(WARNING, "unrecognized node type: %d for command tag creation",
 				 (int) nodeTag(parsetree));
 			tag = "???";
 			break;
@@ -2235,6 +2239,7 @@ GetCommandLogLevel(Node *parsetree)
 		case T_InsertStmt:
 		case T_DeleteStmt:
 		case T_UpdateStmt:
+		case T_MergeStmt:
 			lev = LOGSTMT_MOD;
 			break;
 
@@ -2659,7 +2664,7 @@ GetCommandLogLevel(Node *parsetree)
 			break;
 
 		default:
-			elog(WARNING, "unrecognized node type: %d",
+			elog(WARNING, "unrecognized node type: %d when get the command log level",
 				 (int) nodeTag(parsetree));
 			lev = LOGSTMT_ALL;
 			break;
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index 1b5e476..634ca60 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -260,6 +260,14 @@ typedef enum NodeTag
 	T_DeleteStmt,
 	T_UpdateStmt,
 	T_SelectStmt,
+
+	T_MergeStmt,
+	T_MergeConditionAction,
+	T_MergeUpdate, 
+	T_MergeDelete,  
+	T_MergeInsert,
+
+
 	T_AlterTableStmt,
 	T_AlterTableCmd,
 	T_AlterDomainStmt,
@@ -509,7 +517,9 @@ typedef enum CmdType
 	CMD_SELECT,					/* select stmt */
 	CMD_UPDATE,					/* update stmt */
 	CMD_INSERT,					/* insert stmt */
-	CMD_DELETE,
+	CMD_DELETE,					/*delete stmt*/
+	CMD_MERGE,						/*merge stmt*/
+
 	CMD_UTILITY,				/* cmds like create, destroy, copy, vacuum,
 								 * etc. */
 	CMD_NOTHING					/* dummy command for instead nothing rules
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index b591073..e69b497 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -108,6 +108,9 @@ typedef struct Query
 	Node	   *utilityStmt;	/* non-null if this is DECLARE CURSOR or a
 								 * non-optimizable statement */
 
+	List 		*mergeActQry; /*  the list of all the merge actions. used only for merge query statment */
+
+
 	int			resultRelation; /* rtable index of target relation for
 								 * INSERT/UPDATE/DELETE; 0 for SELECT */
 
@@ -922,6 +925,9 @@ typedef struct UpdateStmt
 	List	   *returningList;	/* list of expressions to return */
 } UpdateStmt;
 
+
+
+
 /* ----------------------
  *		Select Statement
  *
@@ -1023,6 +1029,33 @@ typedef struct SetOperationStmt
 } SetOperationStmt;
 
 
+/* ZBX: the structure for MERGE command statement */
+typedef struct MergeStmt
+{
+	NodeTag		type;
+	RangeVar   	*relation;		/* target relation for merge */
+	List		*source;		/* source relations for the merge. Currently, we only allwo single-source merge, so the length of this list should always be 1 */
+	Node	   	*matchCondition;	/* qualifications of the merge*/
+	List	   	*actions;		/* list of MergeConditionAction structure. It stores all the match / non-matching conditions and the corresponding actions*/
+
+}MergeStmt;
+
+/* the structure for the actions of MERGE command. Holds info of the clauses like "... WHEN MATCHED AND ... THEN UPDATE/DELETE/INSERT" */
+typedef struct MergeConditionAction
+{
+	NodeTag		type;
+	bool 		match; /* match or not match */
+	Node		*condition;/* the AND condition for this action */
+	Node 		*action; /* the actions: delete , insert or update */
+}MergeConditionAction;
+
+typedef UpdateStmt MergeUpdate;
+typedef DeleteStmt MergeDelete;
+typedef InsertStmt MergeInsert;
+
+
+
+
 /*****************************************************************************
  *		Other Statements (no optimizations required)
  *
diff --git a/src/include/parser/parse_clause.h b/src/include/parser/parse_clause.h
index f3d3ee9..2541f50 100644
--- a/src/include/parser/parse_clause.h
+++ b/src/include/parser/parse_clause.h
@@ -19,6 +19,9 @@
 extern void transformFromClause(ParseState *pstate, List *frmList);
 extern int setTargetTable(ParseState *pstate, RangeVar *relation,
 			   bool inh, bool alsoSource, AclMode requiredPerms);
+
+extern void setTargetTableLock(ParseState *pstate, RangeVar *relation);
+
 extern bool interpretInhOption(InhOption inhOpt);
 extern bool interpretOidsOption(List *defList);
 
#8Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#6)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Robert Haas <robertmhaas@gmail.com> writes:

Though, if the worst problem with this patch is the formatting, we're doing *quite* well.

Well, the worst problem with it is that it hasn't touched the
interesting part, ie, what happens at execution time. I haven't
seen a design for that, which means it's impossible to evaluate
whether the code that is here is of any use. We might need some
other representation entirely.

BTW, Fetter's version of the patch seems to be lacking any gram.y
changes, but surely those exist already?

regards, tom lane

#9David Fetter
david@fetter.org
In reply to: Tom Lane (#8)
1 attachment(s)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Sat, Jul 10, 2010 at 01:18:49PM -0400, Tom Lane wrote:

Robert Haas <robertmhaas@gmail.com> writes:

Though, if the worst problem with this patch is the formatting, we're doing *quite* well.

Well, the worst problem with it is that it hasn't touched the
interesting part, ie, what happens at execution time. I haven't
seen a design for that, which means it's impossible to evaluate
whether the code that is here is of any use. We might need some
other representation entirely.

BTW, Fetter's version of the patch seems to be lacking any gram.y
changes, but surely those exist already?

Oops.

Fixed that now in attached patch.

Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

Attachments:

merge3.difftext/plain; charset=us-asciiDownload
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index e770e89..f72ebcf 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -2231,6 +2231,7 @@ _copyQuery(Query *from)
 	COPY_SCALAR_FIELD(querySource);
 	COPY_SCALAR_FIELD(canSetTag);
 	COPY_NODE_FIELD(utilityStmt);
+	COPY_NODE_FIELD(mergeActQry); /* merge actions */
 	COPY_SCALAR_FIELD(resultRelation);
 	COPY_NODE_FIELD(intoClause);
 	COPY_SCALAR_FIELD(hasAggs);
@@ -2324,6 +2325,36 @@ _copySelectStmt(SelectStmt *from)
 	return newnode;
 }
 
+
+static MergeStmt *
+_copyMergeStmt(MergeStmt *from)
+{
+	MergeStmt *newnode = makeNode(MergeStmt);
+
+	COPY_NODE_FIELD(relation);
+	COPY_NODE_FIELD(source);
+	COPY_NODE_FIELD(matchCondition);
+	COPY_NODE_FIELD(actions);
+
+	return newnode;
+
+}
+
+
+static MergeConditionAction *
+_copyMergeConditionAction(MergeConditionAction *from)
+{
+	MergeConditionAction *newnode = makeNode(MergeConditionAction);
+
+	COPY_SCALAR_FIELD(match);
+	COPY_NODE_FIELD(condition);
+	COPY_NODE_FIELD(action);
+
+	return newnode;
+}
+
+
+
 static SetOperationStmt *
 _copySetOperationStmt(SetOperationStmt *from)
 {
@@ -4148,7 +4179,14 @@ copyObject(void *from)
 		case T_AlterTSConfigurationStmt:
 			retval = _copyAlterTSConfigurationStmt(from);
 			break;
+		case T_MergeStmt:
+			retval = _copyMergeStmt(from);
+			break;
 
+
+		case T_MergeConditionAction:
+			retval = _copyMergeConditionAction(from);
+			break;
 		case T_A_Expr:
 			retval = _copyAExpr(from);
 			break;
@@ -4244,7 +4282,7 @@ copyObject(void *from)
 			break;
 
 		default:
-			elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from));
+			elog(ERROR, "unrecognized node type: %d in copyObject() function", (int) nodeTag(from));
 			retval = from;		/* keep compiler quiet */
 			break;
 	}
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 5d83727..8ab3247 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -855,6 +855,7 @@ _equalQuery(Query *a, Query *b)
 	COMPARE_SCALAR_FIELD(querySource);
 	COMPARE_SCALAR_FIELD(canSetTag);
 	COMPARE_NODE_FIELD(utilityStmt);
+	COMPARE_NODE_FIELD(mergeActQry);
 	COMPARE_SCALAR_FIELD(resultRelation);
 	COMPARE_NODE_FIELD(intoClause);
 	COMPARE_SCALAR_FIELD(hasAggs);
@@ -2933,7 +2934,7 @@ equal(void *a, void *b)
 			break;
 
 		default:
-			elog(ERROR, "unrecognized node type: %d",
+			elog(ERROR, "unrecognized node type: %d in equal() function",
 				 (int) nodeTag(a));
 			retval = false;		/* keep compiler quiet */
 			break;
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index e7dae4b..b65dc58 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -1984,6 +1984,7 @@ _outQuery(StringInfo str, Query *node)
 	else
 		appendStringInfo(str, " :utilityStmt <>");
 
+	WRITE_NODE_FIELD(mergeActQry);
 	WRITE_INT_FIELD(resultRelation);
 	WRITE_NODE_FIELD(intoClause);
 	WRITE_BOOL_FIELD(hasAggs);
@@ -2439,6 +2440,46 @@ _outConstraint(StringInfo str, Constraint *node)
 }
 
 
+
+
+static void
+_outMergeConditionAction(StringInfo str, MergeConditionAction *node)
+{
+	WRITE_NODE_TYPE("MERGECONDITIONACTION");
+
+	WRITE_BOOL_FIELD(match);
+
+	WRITE_NODE_FIELD(condition);
+	WRITE_NODE_FIELD(action);
+
+
+}
+
+static void
+_outMergeStmt(StringInfo str, MergeStmt *node)
+{
+	WRITE_NODE_TYPE("MERGESTMT");
+
+	WRITE_NODE_FIELD(relation);
+	WRITE_NODE_FIELD(source);
+	WRITE_NODE_FIELD(matchCondition);
+	WRITE_NODE_FIELD(actions);
+
+}
+
+static void 
+_outDeleteStmt(StringInfo str, DeleteStmt *node)
+{
+	WRITE_NODE_TYPE("DELETESTMT");
+
+	WRITE_NODE_FIELD(relation);
+	WRITE_NODE_FIELD(usingClause);
+	WRITE_NODE_FIELD(whereClause);
+	WRITE_NODE_FIELD(returningList);
+
+
+}
+
 /*
  * _outNode -
  *	  converts a Node into ascii string and append it to 'str'
@@ -2889,6 +2930,16 @@ _outNode(StringInfo str, void *obj)
 				_outXmlSerialize(str, obj);
 				break;
 
+			case T_MergeStmt:
+				_outMergeStmt(str, obj);
+				break;
+			case T_MergeConditionAction:
+				_outMergeConditionAction(str,obj);
+				break;
+			case T_DeleteStmt:
+				_outDeleteStmt(str,obj);
+				break;
+
 			default:
 
 				/*
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 6b99a10..7862212 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -64,6 +64,8 @@ static Query *transformExplainStmt(ParseState *pstate,
 static void transformLockingClause(ParseState *pstate, Query *qry,
 					   LockingClause *lc, bool pushedDown);
 
+static Query *
+transformMergeStmt(ParseState *pstate, MergeStmt *stmt);
 
 /*
  * parse_analyze
@@ -164,14 +166,17 @@ transformStmt(ParseState *pstate, Node *parseTree)
 			 * Optimizable statements
 			 */
 		case T_InsertStmt:
+		case T_MergeInsert:
 			result = transformInsertStmt(pstate, (InsertStmt *) parseTree);
 			break;
 
 		case T_DeleteStmt:
+		case T_MergeDelete:
 			result = transformDeleteStmt(pstate, (DeleteStmt *) parseTree);
 			break;
 
 		case T_UpdateStmt:
+		case T_MergeUpdate:
 			result = transformUpdateStmt(pstate, (UpdateStmt *) parseTree);
 			break;
 
@@ -188,6 +193,10 @@ transformStmt(ParseState *pstate, Node *parseTree)
 			}
 			break;
 
+		case T_MergeStmt:
+			result = transformMergeStmt(pstate, (MergeStmt *)parseTree);
+			break;
+
 			/*
 			 * Special cases
 			 */
@@ -282,12 +291,14 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt)
 
 	qry->commandType = CMD_DELETE;
 
-	/* set up range table with just the result rel */
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
+	if(IsA(stmt,DeleteStmt)) /* For MergeDelete, no need to do this. */
+	{
+		/* set up range table with just the result rel */
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
 								  interpretInhOption(stmt->relation->inhOpt),
 										 true,
 										 ACL_DELETE);
-
+	}
 	qry->distinctClause = NIL;
 
 	/*
@@ -296,7 +307,8 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt)
 	 * USING keyword is used rather than FROM because FROM is already a
 	 * keyword in the DELETE syntax.
 	 */
-	transformFromClause(pstate, stmt->usingClause);
+	if(IsA(stmt,DeleteStmt)) /* For MergeDelete, no need to do this. */
+		transformFromClause(pstate, stmt->usingClause);
 
 	qual = transformWhereClause(pstate, stmt->whereClause, "WHERE");
 
@@ -347,6 +359,9 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 	 * VALUES list, or general SELECT input.  We special-case VALUES, both for
 	 * efficiency and so we can handle DEFAULT specifications.
 	 */
+
+	/* A MergeInsert statment is always VALUE clause */
+
 	isGeneralSelect = (selectStmt && selectStmt->valuesLists == NIL);
 
 	/*
@@ -382,7 +397,8 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 	 * mentioned in the SELECT part.  Note that the target table is not added
 	 * to the joinlist or namespace.
 	 */
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
+	if(IsA(stmt,InsertStmt)) /* for MergeInsert, no need to do this */
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
 										 false, false, ACL_INSERT);
 
 	/* Validate stmt->cols list, or build default list if no list given */
@@ -695,7 +711,6 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 				 errmsg("cannot use window function in VALUES"),
 				 parser_errposition(pstate,
 									locate_windowfunc((Node *) qry))));
-
 	return qry;
 }
 
@@ -892,6 +907,9 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt)
 							   (LockingClause *) lfirst(l), false);
 	}
 
+
+/* printf("%s\n", nodeToString(qry)); */
+
 	return qry;
 }
 
@@ -1730,16 +1748,22 @@ transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt)
 	qry->commandType = CMD_UPDATE;
 	pstate->p_is_update = true;
 
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
-								  interpretInhOption(stmt->relation->inhOpt),
-										 true,
-										 ACL_UPDATE);
+	if(IsA(stmt, UpdateStmt))/* for MergeUpdate, no need to do this */
+	{
+		/* for a MergeUpdate node, we have no need to se the target and source rels */
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
+									  interpretInhOption(stmt->relation->inhOpt),
+											 true,
+											 ACL_UPDATE);
+
+		/*
+		 * the FROM clause is non-standard SQL syntax. We used to be able to do
+		 * this with REPLACE in POSTQUEL so we keep the feature.
+		 */
+		transformFromClause(pstate, stmt->fromClause);
+	}
+
 
-	/*
-	 * the FROM clause is non-standard SQL syntax. We used to be able to do
-	 * this with REPLACE in POSTQUEL so we keep the feature.
-	 */
-	transformFromClause(pstate, stmt->fromClause);
 
 	qry->targetList = transformTargetList(pstate, stmt->targetList);
 
@@ -1806,12 +1830,14 @@ transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt)
 		origTarget = (ResTarget *) lfirst(origTargetList);
 		Assert(IsA(origTarget, ResTarget));
 
+printf("targe entry :%s\n", nodeToString(origTarget));		
+
 		attrno = attnameAttNum(pstate->p_target_relation,
 							   origTarget->name, true);
 		if (attrno == InvalidAttrNumber)
 			ereport(ERROR,
 					(errcode(ERRCODE_UNDEFINED_COLUMN),
-					 errmsg("column \"%s\" of relation \"%s\" does not exist",
+					 errmsg("column \"%s\" of relation \"%s\" does not exist in transformUpdateStmt()",
 							origTarget->name,
 						 RelationGetRelationName(pstate->p_target_relation)),
 					 parser_errposition(pstate, origTarget->location)));
@@ -2241,3 +2267,370 @@ applyLockingClause(Query *qry, Index rtindex,
 	rc->pushedDown = pushedDown;
 	qry->rowMarks = lappend(qry->rowMarks, rc);
 }
+
+/* transform a action of merge command into a query. No change of the pstate range table is allowed in this function.  */
+static Query *
+transformMergeActions(ParseState *pstate, MergeStmt *stmt, MergeConditionAction *condact)
+{
+	Query *actqry = makeNode(Query);
+	A_Expr *match_expr; /* the expr of matched/not matched */
+	A_Expr *act_qual_expr;
+
+	/*
+	 * Firstly, we need to make sure that DELETE and UPDATE actions
+	 * are only taken in MATCHED condition and INSERTs are only takend
+	 * when not MATCHED
+	 */
+
+	if(IsA(condact->action, MergeDelete)) 
+	{	
+		if(!condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The DELETE action in MERGE command is not allowed when NOT MATCHED")));
+	}
+	else if(IsA(condact->action, MergeUpdate))
+	{	
+		if(!condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The UPDATE action in MERGE command is not allowed when NOT MATCHED")));
+	}
+	else if(IsA(condact->action, MergeInsert))
+	{	
+		if(condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The INSERT action in MERGE command is not allowed when MATCHED")));
+	}
+	else
+		ereport(ERROR,
+			(errcode(ERRCODE_SYNTAX_ERROR),
+			 errmsg("UNKONWN action type in MERGE")));
+
+
+
+	/*
+	 * Combine the condition of this act with the ON qual of the merge
+	 * command do a copy of the merge condtion for safety. 
+	 */
+	if(condact->match) 
+		match_expr = copyObject(stmt->matchCondition);
+	else
+		match_expr = makeA_Expr(AEXPR_NOT, NIL, NULL, 
+									copyObject(stmt->matchCondition), 1);
+
+
+	if(condact->condition)
+		act_qual_expr = makeA_Expr(AEXPR_AND, NIL, condact->condition, (Node *)match_expr, 2);
+	else
+		act_qual_expr = match_expr;
+
+
+	/* Use the transfomStmt() to parse all types of actions */
+	if(IsA(condact->action, MergeDelete))
+	{
+		/* a delete action */
+		MergeDelete *deleteact = (MergeDelete *)(condact->action);
+		Assert(IsA(deleteact,DeleteStmt));
+
+		deleteact->relation = stmt->relation;
+		deleteact->usingClause = stmt->source;
+		deleteact->whereClause = (Node *)act_qual_expr;
+
+		/* parse the action query */
+		actqry = transformStmt(pstate, (Node *)deleteact);
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_DELETE || actqry->utilityStmt != NULL)
+			elog(ERROR, "improper DELETE action in merge stmt");
+
+		return actqry;
+	}
+	else if(IsA(condact->action, MergeUpdate))
+	{
+		/* an update action */
+		MergeUpdate *updateact = (MergeUpdate *)(condact->action);
+
+		/* the "targetlist" of the updateact is filled in the parser  */
+		updateact->relation = stmt->relation;
+		updateact->fromClause = stmt->source;
+		updateact->whereClause = (Node *)act_qual_expr;
+
+		/* parse the action query */
+		actqry = transformStmt(pstate, (Node *)updateact);
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_UPDATE|| actqry->utilityStmt != NULL)
+			elog(ERROR, "improper UPDATE action in merge stmt");
+
+		return actqry;
+	}
+	else if(IsA(condact->action, MergeInsert))
+	{
+		/* an insert action */
+		Node *qual;
+		MergeInsert *insertact;
+
+		insertact = (MergeInsert *)(condact->action);
+
+
+		/* the "cols" and "selectStmt" of the insertact is filled in the parser  */
+		insertact->relation = stmt->relation;
+
+		/*
+		 * The merge insert action has a strange feature.  In an
+		 * ordinary INSERT, the VALUES list can only contains
+		 * constants and DEFAULT. (am I right??) But in the INSERT
+		 * action of MERGE command, the VALUES list can have
+		 * expressions with variables(attributes of the targe and
+		 * source tables).  Besides, in the ordinary INSERT, a VALUES
+		 * list can never be followed by a WHERE clause. But in MERGE
+		 * INSERT action, there are matching conditions. 
+		 *
+		 * Thus, the output qry of this function is an INSERT query in
+		 * the style of "INSERT...VALUES...", except that we have
+		 * other range tables and a WHERE clause.  Note that it is
+		 * also different from the "INSERT ... SELECT..." query, in
+		 * which the whole SELECT is a subquery. (We don't have
+		 * subquery here).  We construct this novel query structure in
+		 * order to keep consitency with other merge action types
+		 * (DELETE, UPDATE).  In this way, all the merge action
+		 * queries are in fact share the very same Range Table, They
+		 * only differs in their target lists and join trees
+		 */
+
+
+		/*
+		 * Parse the action query, this will call
+		 * transformInsertStmt() which analyzes the VALUES list.
+		 */
+		actqry = transformStmt(pstate, (Node *)insertact);
+
+		/*
+		 * Do the WHERE clause here, Since the transformInsertStmt()
+		 * function only analyzes the VALUES list but not the WHERE
+		 * clause.
+		 */
+		qual = transformWhereClause(pstate,(Node *)act_qual_expr,
+		"WHERE");
+
+		actqry->jointree = makeFromExpr(pstate->p_joinlist, qual);
+
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_INSERT|| actqry->utilityStmt != NULL)
+			elog(ERROR, "improper INSERT action in merge stmt");
+
+
+		return actqry;
+	}
+	else
+		elog(ERROR, "unknown action type in MERGE");
+
+	/* never comes here */
+	return NULL;
+}
+
+
+
+static Query *
+transformMergeStmt(ParseState *pstate, MergeStmt *stmt)
+{
+	Query	   *qry; 
+
+	ColumnRef *starRef;
+	ResTarget *starResTarget;
+	ListCell *act;
+	ListCell *l;
+	JoinExpr *joinexp;
+	int 	rtindex;
+
+	/* This will never happen, since the garm.y is restricted that
+	 * only one rel name is allowed to appear in the source table
+	 * position.  However, if we extent the command in future, we may
+	 * need to note this check here. 
+	 */
+	if(list_length(stmt->source) != 1) 
+		ereport(ERROR,
+			(errcode(ERRCODE_SYNTAX_ERROR),
+			 errmsg("now we only accept merge command with only ONE source table")));
+
+	/*
+	 * Now, do the real tranformation of the merge command. 
+	 */
+	qry = makeNode(Query);
+	qry->commandType = CMD_MERGE;
+
+	/*
+	 * What we are doing here is to create a query like
+	 * "SELECT * FROM <source_rel> LEFT JOIN <target_rel> ON <match_condition>;"
+	 *
+	 * Note:	
+	 * 1. we set the "match condition" as the join qualification.  The
+	 * left join will scan both the matched and non-matched tuples.
+	 *
+	 * 2. A normal SELECT query has no "target relation".  But here we
+	 * need to set the targe relation in query, like the
+	 * UPDATE/DELETE/INSERT queries.  So this is a left join SELECT
+	 * with a "target table" in its range table. 
+	 *
+	 * 3. We don't have a specific ACL level for Merge, here we just
+	 * use ACL_SELECT.  But we will add other ACL levels when handle
+	 * each merge actions.  
+	 */
+
+
+	/*
+	 * Before analyze the FROM clause, we need to set the target
+	 * table.  We cannot call setTargetTable() function directly.  We
+	 * only need the lock target relation, without adding it to Range
+	 * table. 
+	 */
+
+
+	setTargetTableLock(pstate, stmt->relation);
+
+	/*
+	 * Create the FROM clause. Make the join expression first
+	 */
+
+	joinexp = makeNode(JoinExpr); joinexp->jointype = JOIN_LEFT;
+	joinexp->isNatural = FALSE; joinexp->larg =
+		linitial(stmt->source); /* source list has only one element */
+	joinexp->rarg = (Node *)stmt->relation; joinexp->quals =
+		stmt->matchCondition; /* match condtion */
+
+	/*
+	 * Transform the FROM clause.  The target relation and source
+	 * relation will be add to Rtable here.	
+	 */
+
+	transformFromClause(pstate, list_make1(joinexp));
+
+	/* The targetList of the main query is "*" */
+	starRef = makeNode(ColumnRef);	
+	starRef->fields = list_make1(makeNode(A_Star));					
+	starRef->location = 1;					
+
+	starResTarget = makeNode(ResTarget);					
+	starResTarget->name = NULL;					
+	starResTarget->indirection = NIL;					
+	starResTarget->val = (Node *)starRef;					
+	starResTarget->location = 1;
+
+	qry->targetList = transformTargetList(pstate, list_make1(starResTarget));
+
+	/* We don't need the WHERE clause here. Set it null.  */
+	qry->jointree = makeFromExpr(pstate->p_joinlist, NULL);
+
+	/* Now , we find out the RTE for the target relation, and do some unfinished jobs */
+	rtindex = 1;
+	foreach(l, pstate->p_rtable)
+	{
+		RangeTblEntry *rte = (RangeTblEntry *)lfirst(l);
+		if(rte->relid == pstate->p_target_relation->rd_id) /* find the RTE */
+		{
+			pstate->p_target_rangetblentry = rte;
+			rte->requiredPerms = ACL_SELECT;	
+			qry->resultRelation = rtindex;
+			break;
+		}
+		rtindex++;
+	}
+
+	if(pstate->p_target_rangetblentry == NULL)
+		elog(ERROR, "cannot find the RTE for target table");
+
+
+	qry->rtable = pstate->p_rtable;
+
+	qry->hasSubLinks = pstate->p_hasSubLinks;
+
+	/*
+	 * Top-level aggregates are simply disallowed in MERGE
+	 */
+	if (pstate->p_hasAggs)
+		ereport(ERROR,
+				(errcode(ERRCODE_GROUPING_ERROR),
+				 errmsg("cannot use aggregate function in top level of MERGE"),
+				 parser_errposition(pstate,
+									locate_agg_of_level((Node *) qry, 0))));
+	if (pstate->p_hasWindowFuncs)
+		ereport(ERROR,
+				(errcode(ERRCODE_WINDOWING_ERROR),
+				 errmsg("cannot use window function in MERGE"),
+				 parser_errposition(pstate,
+									locate_windowfunc((Node *) qry))));
+
+
+
+
+	/*
+	 * The main query is done.  Then for each actions, we transform it
+	 * to a separate query.  The action queries shares the exactly
+	 * same range table with the main query.  In other words, in the
+	 * extra condtions of the sub actions, we don't allow involvement
+	 * of new tables.
+	 */
+
+	qry->mergeActQry = NIL;
+
+	foreach(act,stmt->actions)
+	{
+		MergeConditionAction *mca = lfirst(act);
+		Query *actqry;
+
+		switch(mca->action->type)
+		{
+			case T_MergeDelete:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_DELETE;
+				break;
+			case T_MergeUpdate:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_UPDATE;
+				break;
+			case T_MergeInsert:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_INSERT;				
+				break;
+			default:
+				elog(ERROR, "unknown MERGE action type %d", mca->type);
+				break;
+
+		}
+
+
+		/*
+		 * Transform the act (and its condition) as a single query.
+		 * Link it to the top-level query
+		 */
+
+		actqry = transformMergeActions(pstate, stmt, mca);
+
+		/*
+		 * Since we don't invoke setTargetTable() in
+		 * transformMergeActions(), we need to set
+		 * actqry->resultRelation here.
+		 */
+
+		actqry->resultRelation = qry->resultRelation;
+
+/* printf("finish one action qry: \n%s\n", nodeToString(actqry)); */
+
+		qry->mergeActQry = lappend(qry->mergeActQry, actqry);
+	}
+
+	/* 
+	 * For a single-action merge, we just stransform it into a
+	 * orignial update/delete command. But the insert action cannot
+	 * take this shortcut.
+	 */
+
+	if(list_length(stmt->actions) == 1)
+	{
+		Query *q = linitial(qry->mergeActQry);
+		if(q->commandType == CMD_DELETE || q->commandType == CMD_UPDATE)
+			return q;
+	}
+
+/* printf("the content of main qry is : \n%s\n----\n-----", nodeToString(qry)); */
+	return qry;
+
+}
+
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 3f6eeeb..46ccdbb 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -200,7 +200,7 @@ static TypeName *TableFuncTypeName(List *columns);
 		DropUserStmt DropdbStmt DropTableSpaceStmt DropFdwStmt
 		DropForeignServerStmt DropUserMappingStmt ExplainStmt FetchStmt
 		GrantStmt GrantRoleStmt IndexStmt InsertStmt ListenStmt LoadStmt
-		LockStmt NotifyStmt ExplainableStmt PreparableStmt
+		LockStmt MergeStmt NotifyStmt ExplainableStmt PreparableStmt
 		CreateFunctionStmt AlterFunctionStmt ReindexStmt RemoveAggrStmt
 		RemoveFuncStmt RemoveOperStmt RenameStmt RevokeStmt RevokeRoleStmt
 		RuleActionStmt RuleActionStmtOrEmpty RuleStmt
@@ -233,6 +233,7 @@ static TypeName *TableFuncTypeName(List *columns);
 %type <boolean>	opt_force opt_or_replace
 				opt_grant_grant_option opt_grant_admin_option
 				opt_nowait opt_if_exists opt_with_data
+                opt_not
 
 %type <list>	OptRoleList AlterOptRoleList
 %type <defelt>	CreateOptRoleElem AlterOptRoleElem
@@ -301,6 +302,9 @@ static TypeName *TableFuncTypeName(List *columns);
 				opt_enum_val_list enum_val_list table_func_column_list
 				create_generic_options alter_generic_options
 				relation_expr_list dostmt_opt_list
+                merge_condition_action_list
+
+%type <node>    opt_and_condition merge_condition_action merge_action
 
 %type <range>	OptTempTableName
 %type <into>	into_clause create_as_target
@@ -502,7 +506,7 @@ static TypeName *TableFuncTypeName(List *columns);
 	LEAST LEFT LEVEL LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP
 	LOCATION LOCK_P LOGIN_P
 
-	MAPPING MATCH MAXVALUE MINUTE_P MINVALUE MODE MONTH_P MOVE
+	MAPPING MATCH MATCHED MAXVALUE MERGE MINUTE_P MINVALUE MODE MONTH_P MOVE
 
 	NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NO NOCREATEDB
 	NOCREATEROLE NOCREATEUSER NOINHERIT NOLOGIN_P NONE NOSUPERUSER
@@ -725,6 +729,7 @@ stmt :
 			| ListenStmt
 			| LoadStmt
 			| LockStmt
+			| MergeStmt
 			| NotifyStmt
 			| PrepareStmt
 			| ReassignOwnedStmt
@@ -7085,6 +7090,102 @@ DeallocateStmt: DEALLOCATE name
 					}
 		;
 
+
+
+/*****************************************************************************
+ *
+ *		QUERY:
+ *				MERGE STATEMENT
+ *
+ *****************************************************************************/
+
+
+
+MergeStmt: 
+			MERGE INTO relation_expr_opt_alias
+			USING  table_ref
+			ON a_expr
+			merge_condition_action_list
+				{
+					MergeStmt *m = makeNode(MergeStmt);
+
+					m->relation = $3;
+					m->source = list_make1($5);  /*although we have only one USING table, but we still make it a list, maybe in future we will allow mutliple USING tables.*/
+					m->matchCondition = $7;
+					m->actions = $8;
+
+					$$ = (Node *)m;
+				}
+				;
+	
+merge_condition_action_list: 
+							merge_condition_action 		
+								{ $$ = list_make1($1); }
+							| merge_condition_action_list merge_condition_action   
+								{ $$ = lappend($1,$2); }
+							;	
+
+merge_condition_action: 	
+							WHEN opt_not MATCHED opt_and_condition THEN merge_action
+							{
+								MergeConditionAction *m = makeNode(MergeConditionAction);
+
+								m->match = $2;
+								m->condition = $4;
+								m->action = $6;
+
+								$$ = (Node *)m;
+							}
+							;
+
+
+opt_and_condition:	
+					AND a_expr 		{$$ = $2;}
+					| /*EMPTY*/ 		{$$ = NULL;}
+					;
+
+opt_not:	
+			NOT			{$$ = false;}
+			| /*EMPTY*/	{$$ = true;}
+			;
+
+merge_action: 	
+				DELETE_P	
+					{$$ = (Node *)makeNode(MergeDelete);}
+				| UPDATE SET set_clause_list 
+					{
+						UpdateStmt *n = makeNode(MergeUpdate);
+						n->targetList = $3;
+						$$ = (Node *)n;
+					}
+				| INSERT values_clause
+					{
+						InsertStmt *n = makeNode(MergeInsert);
+						n->cols = NIL;
+						n->selectStmt = $2;
+
+						$$ = (Node *)n;
+					}
+					
+				| INSERT '(' insert_column_list ')' values_clause
+					{
+						InsertStmt *n = makeNode(MergeInsert);
+						n->cols = $3;
+						n->selectStmt = $5;
+
+						$$ = (Node *)n;
+					}
+				| INSERT DEFAULT VALUES
+					{
+						InsertStmt *n = makeNode(MergeInsert);
+						n->cols = NIL;
+						n->selectStmt = NULL;
+
+						$$ = (Node *)n; 
+					}
+					
+				;	
+				
 /*****************************************************************************
  *
  *		QUERY:
@@ -7207,7 +7308,6 @@ opt_nowait:	NOWAIT							{ $$ = TRUE; }
 			| /*EMPTY*/						{ $$ = FALSE; }
 		;
 
-
 /*****************************************************************************
  *
  *		QUERY:
@@ -7215,7 +7315,7 @@ opt_nowait:	NOWAIT							{ $$ = TRUE; }
  *
  *****************************************************************************/
 
-UpdateStmt: UPDATE relation_expr_opt_alias
+UpdateStmt: UPDATE relation_expr_opt_alias  
 			SET set_clause_list
 			from_clause
 			where_or_current_clause
@@ -7828,6 +7928,7 @@ values_clause:
 				}
 		;
 
+ 
 
 /*****************************************************************************
  *
@@ -10935,7 +11036,9 @@ unreserved_keyword:
 			| LOGIN_P
 			| MAPPING
 			| MATCH
+			| MATCHED			
 			| MAXVALUE
+			| MERGE
 			| MINUTE_P
 			| MINVALUE
 			| MODE
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index f30132a..33855b1 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -213,6 +213,35 @@ setTargetTable(ParseState *pstate, RangeVar *relation,
 	return rtindex;
 }
 
+
+
+/*
+ * setTargetTableLock
+ *     only set the lock for targe table, without adding it to range table
+ */
+
+void
+setTargetTableLock(ParseState *pstate, RangeVar *relation)
+{
+
+	/* Close old target; this could only happen for multi-action rules */
+	if (pstate->p_target_relation != NULL)
+		heap_close(pstate->p_target_relation, NoLock);
+
+	/*
+	 * Open target rel and grab suitable lock (which we will hold till end of
+	 * transaction).
+	 *
+	 * free_parsestate() will eventually do the corresponding heap_close(),
+	 * but *not* release the lock.
+	 */
+	pstate->p_target_relation = parserOpenTable(pstate, relation,
+												RowExclusiveLock);
+
+
+}
+
+
 /*
  * Simplify InhOption (yes/no/default) into boolean yes/no.
  *
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 38c7e91..b2fcd1c 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -1993,7 +1993,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
 				if (att_tup->attisdropped)
 					ereport(ERROR,
 							(errcode(ERRCODE_UNDEFINED_COLUMN),
-					errmsg("column \"%s\" of relation \"%s\" does not exist",
+					errmsg("column \"%s\" of relation \"%s\" does not exist when get the attr type",
 						   NameStr(att_tup->attname),
 						   get_rel_name(rte->relid))));
 				*vartype = att_tup->atttypid;
@@ -2035,7 +2035,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
 					if (attnum < 1 || attnum > tupdesc->natts)
 						ereport(ERROR,
 								(errcode(ERRCODE_UNDEFINED_COLUMN),
-						errmsg("column %d of relation \"%s\" does not exist",
+						errmsg("column %d of relation \"%s\" does not exist when get the attr type1",
 							   attnum,
 							   rte->eref->aliasname)));
 
@@ -2048,7 +2048,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
 					if (att_tup->attisdropped)
 						ereport(ERROR,
 								(errcode(ERRCODE_UNDEFINED_COLUMN),
-								 errmsg("column \"%s\" of relation \"%s\" does not exist",
+								 errmsg("column \"%s\" of relation \"%s\" does not exist when get the attr type2",
 										NameStr(att_tup->attname),
 										rte->eref->aliasname)));
 					*vartype = att_tup->atttypid;
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index e542dc0..282ad8f 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -805,7 +805,7 @@ checkInsertTargets(ParseState *pstate, List *cols, List **attrnos)
 			if (attrno == InvalidAttrNumber)
 				ereport(ERROR,
 						(errcode(ERRCODE_UNDEFINED_COLUMN),
-					errmsg("column \"%s\" of relation \"%s\" does not exist",
+					errmsg("column \"%s\" of relation \"%s\" does not exist in checkInsertTargets()",
 						   name,
 						 RelationGetRelationName(pstate->p_target_relation)),
 						 parser_errposition(pstate, col->location)));
diff --git a/src/backend/parser/parse_type.c b/src/backend/parser/parse_type.c
index 8d0932b..bd1f9f9 100644
--- a/src/backend/parser/parse_type.c
+++ b/src/backend/parser/parse_type.c
@@ -114,7 +114,7 @@ LookupTypeName(ParseState *pstate, const TypeName *typeName,
 		if (attnum == InvalidAttrNumber)
 			ereport(ERROR,
 					(errcode(ERRCODE_UNDEFINED_COLUMN),
-					 errmsg("column \"%s\" of relation \"%s\" does not exist",
+					 errmsg("column \"%s\" of relation \"%s\" does not exist in LookupTypeName",
 							field, rel->relname),
 					 parser_errposition(pstate, typeName->location)));
 		typoid = get_atttype(relid, attnum);
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 25b44dd..c863b20 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -1861,7 +1861,58 @@ QueryRewrite(Query *parsetree)
 	 *
 	 * Apply all non-SELECT rules possibly getting 0 or many queries
 	 */
-	querylist = RewriteQuery(parsetree, NIL);
+
+	if(parsetree->commandType == CMD_MERGE)
+	{
+		/*
+		 * For merge query, we have a set of lower-level action
+		 * queries (not subquery).  Each of these action queries
+		 * should be applied to RewriteQuery().  And, in all cases, the
+		 * original query should be excuted.  However, I am not sure
+		 * how to run the rules for a merge command yet. :(
+		 */
+
+		ListCell *l;
+
+		querylist = NIL;
+
+		foreach(l, parsetree->mergeActQry)
+		{
+			List *queryList4action;
+			Query  *q;
+
+			queryList4action = RewriteQuery((Query *)lfirst(l), NIL);
+
+			if(queryList4action == NIL)
+				continue;
+
+			/* We need to remove the orignal query from the list.  If
+			 * it is in the list, it must be either the head or the
+			 * tail.
+			 */
+
+			q = (Query *)linitial(queryList4action);
+			if(q->querySource == QSRC_ORIGINAL)
+				queryList4action = list_delete_first(queryList4action);
+			else
+			{
+				q = (Query *)llast(queryList4action);
+				if(q->querySource == QSRC_ORIGINAL)
+					queryList4action = list_truncate(queryList4action,list_length(queryList4action)-1);
+			}	
+
+
+			/* Append the rule queries of this action to the full querylist */
+			querylist = list_concat(querylist,queryList4action);
+		}
+
+		/* Finally, put the original query at the head. */
+		querylist = lcons(parsetree,querylist);
+
+
+	}
+	else /* a plain query */
+		querylist = RewriteQuery(parsetree, NIL);
 
 	/*
 	 * Step 2
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 8960246..846c7c4 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -1398,6 +1398,10 @@ CreateCommandTag(Node *parsetree)
 			tag = "SELECT";
 			break;
 
+		case T_MergeStmt:
+			tag = "MERGE";
+			break;
+
 			/* utility statements --- same whether raw or cooked */
 		case T_TransactionStmt:
 			{
@@ -2206,7 +2210,7 @@ CreateCommandTag(Node *parsetree)
 			break;
 
 		default:
-			elog(WARNING, "unrecognized node type: %d",
+			elog(WARNING, "unrecognized node type: %d for command tag creation",
 				 (int) nodeTag(parsetree));
 			tag = "???";
 			break;
@@ -2235,6 +2239,7 @@ GetCommandLogLevel(Node *parsetree)
 		case T_InsertStmt:
 		case T_DeleteStmt:
 		case T_UpdateStmt:
+		case T_MergeStmt:
 			lev = LOGSTMT_MOD;
 			break;
 
@@ -2659,7 +2664,7 @@ GetCommandLogLevel(Node *parsetree)
 			break;
 
 		default:
-			elog(WARNING, "unrecognized node type: %d",
+			elog(WARNING, "unrecognized node type: %d when get the command log level",
 				 (int) nodeTag(parsetree));
 			lev = LOGSTMT_ALL;
 			break;
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index 1b5e476..634ca60 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -260,6 +260,14 @@ typedef enum NodeTag
 	T_DeleteStmt,
 	T_UpdateStmt,
 	T_SelectStmt,
+
+	T_MergeStmt,
+	T_MergeConditionAction,
+	T_MergeUpdate, 
+	T_MergeDelete,  
+	T_MergeInsert,
+
+
 	T_AlterTableStmt,
 	T_AlterTableCmd,
 	T_AlterDomainStmt,
@@ -509,7 +517,9 @@ typedef enum CmdType
 	CMD_SELECT,					/* select stmt */
 	CMD_UPDATE,					/* update stmt */
 	CMD_INSERT,					/* insert stmt */
-	CMD_DELETE,
+	CMD_DELETE,					/*delete stmt*/
+	CMD_MERGE,						/*merge stmt*/
+
 	CMD_UTILITY,				/* cmds like create, destroy, copy, vacuum,
 								 * etc. */
 	CMD_NOTHING					/* dummy command for instead nothing rules
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index b591073..e69b497 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -108,6 +108,9 @@ typedef struct Query
 	Node	   *utilityStmt;	/* non-null if this is DECLARE CURSOR or a
 								 * non-optimizable statement */
 
+	List 		*mergeActQry; /*  the list of all the merge actions. used only for merge query statment */
+
+
 	int			resultRelation; /* rtable index of target relation for
 								 * INSERT/UPDATE/DELETE; 0 for SELECT */
 
@@ -922,6 +925,9 @@ typedef struct UpdateStmt
 	List	   *returningList;	/* list of expressions to return */
 } UpdateStmt;
 
+
+
+
 /* ----------------------
  *		Select Statement
  *
@@ -1023,6 +1029,33 @@ typedef struct SetOperationStmt
 } SetOperationStmt;
 
 
+/* ZBX: the structure for MERGE command statement */
+typedef struct MergeStmt
+{
+	NodeTag		type;
+	RangeVar   	*relation;		/* target relation for merge */
+	List		*source;		/* source relations for the merge. Currently, we only allwo single-source merge, so the length of this list should always be 1 */
+	Node	   	*matchCondition;	/* qualifications of the merge*/
+	List	   	*actions;		/* list of MergeConditionAction structure. It stores all the match / non-matching conditions and the corresponding actions*/
+
+}MergeStmt;
+
+/* the structure for the actions of MERGE command. Holds info of the clauses like "... WHEN MATCHED AND ... THEN UPDATE/DELETE/INSERT" */
+typedef struct MergeConditionAction
+{
+	NodeTag		type;
+	bool 		match; /* match or not match */
+	Node		*condition;/* the AND condition for this action */
+	Node 		*action; /* the actions: delete , insert or update */
+}MergeConditionAction;
+
+typedef UpdateStmt MergeUpdate;
+typedef DeleteStmt MergeDelete;
+typedef InsertStmt MergeInsert;
+
+
+
+
 /*****************************************************************************
  *		Other Statements (no optimizations required)
  *
diff --git a/src/include/parser/parse_clause.h b/src/include/parser/parse_clause.h
index f3d3ee9..2541f50 100644
--- a/src/include/parser/parse_clause.h
+++ b/src/include/parser/parse_clause.h
@@ -19,6 +19,9 @@
 extern void transformFromClause(ParseState *pstate, List *frmList);
 extern int setTargetTable(ParseState *pstate, RangeVar *relation,
 			   bool inh, bool alsoSource, AclMode requiredPerms);
+
+extern void setTargetTableLock(ParseState *pstate, RangeVar *relation);
+
 extern bool interpretInhOption(InhOption inhOpt);
 extern bool interpretOidsOption(List *defList);
 
#10David Fetter
david@fetter.org
In reply to: David Fetter (#9)
1 attachment(s)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Sat, Jul 10, 2010 at 10:39:02AM -0700, David Fetter wrote:

On Sat, Jul 10, 2010 at 01:18:49PM -0400, Tom Lane wrote:

Robert Haas <robertmhaas@gmail.com> writes:

Though, if the worst problem with this patch is the formatting, we're doing *quite* well.

Well, the worst problem with it is that it hasn't touched the
interesting part, ie, what happens at execution time. I haven't
seen a design for that, which means it's impossible to evaluate
whether the code that is here is of any use. We might need some
other representation entirely.

BTW, Fetter's version of the patch seems to be lacking any gram.y
changes, but surely those exist already?

Oops.

Fixed that now in attached patch.

By the way, "make check" fails here with attached initdb.log:

./pg_regress --inputdir=. --dlpath=. --multibyte=SQL_ASCII --temp-install=./tmp_check --top-builddir=../../.. --schedule=./parallel_schedule
============== creating temporary installation ==============
============== initializing database system ==============

pg_regress: initdb failed
Examine /home/shackle/pggit/postgresql/src/test/regress/log/initdb.log for the reason.
Command was: "/home/shackle/pggit/postgresql/src/test/regress/./tmp_check/install//home/shackle/tip/bin/initdb" -D "/home/shackle/pggit/postgresql/src/test/regress/./tmp_check/data" -L "/home/shackle/pggit/postgresql/src/test/regress/./tmp_check/install//home/shackle/tip/share/postgresql" --noclean > "/home/shackle/pggit/postgresql/src/test/regress/log/initdb.log" 2>&1
make[2]: *** [check] Error 2
make[2]: Leaving directory `/home/shackle/pggit/postgresql/src/test/regress'
make[1]: *** [check] Error 2
make[1]: Leaving directory `/home/shackle/pggit/postgresql/src/test'
make: *** [check] Error 2

Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

Attachments:

initdb.logtext/plain; charset=us-asciiDownload
#11Tom Lane
tgl@sss.pgh.pa.us
In reply to: David Fetter (#10)
Re: gSoC - ADD MERGE COMMAND - code patch submission

David Fetter <david@fetter.org> writes:

By the way, "make check" fails here with attached initdb.log:

creating system views ... FATAL: unrecognized token: "false"

Hm, I'd suspect something fouled up in keyword recognition.
Did you do a "make clean" and rebuild?

BTW, this patch is still a few bricks shy of a load, since there's no
kwlist.h change and so the new MERGE keyword couldn't possibly be
recognized. More generally, I'm wondering why the original .rar
submission was 300k (presumably compressed) and your diff is only
about 35k ...

regards, tom lane

#12Peter Eisentraut
peter_e@gmx.net
In reply to: David Fetter (#4)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On lör, 2010-07-10 at 09:26 -0700, David Fetter wrote:

Please find enclosed a patch against git master as of
7b2668159bb4d0f5177a23d05bf7c2ab00bc0d75. It works up to make, but
fails on make check.

It looks like this implementation reaches about the same level of parser
support as the stuff that I had coded up a few months ago at the airport
within a couple of hours [0]http://git.postgresql.org/gitweb?p=users/petere/postgresql.git;a=shortlog;h=refs/heads/merge-statement[1]http://petereisentraut.blogspot.com/2010/05/merge-syntax.html, and I had sent the student the code, so
he could have had that for free.

But as others had commented already, the meat of the problem is how
MERGE statement *execution* is supposed to work.

[0]: http://git.postgresql.org/gitweb?p=users/petere/postgresql.git;a=shortlog;h=refs/heads/merge-statement
http://git.postgresql.org/gitweb?p=users/petere/postgresql.git;a=shortlog;h=refs/heads/merge-statement
[1]: http://petereisentraut.blogspot.com/2010/05/merge-syntax.html

#13David Fetter
david@fetter.org
In reply to: Tom Lane (#11)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Sat, Jul 10, 2010 at 01:53:53PM -0400, Tom Lane wrote:

David Fetter <david@fetter.org> writes:

By the way, "make check" fails here with attached initdb.log:

creating system views ... FATAL: unrecognized token: "false"

Hm, I'd suspect something fouled up in keyword recognition. Did you
do a "make clean" and rebuild?

I did make maintainer-clean.

BTW, this patch is still a few bricks shy of a load, since there's
no kwlist.h change and so the new MERGE keyword couldn't possibly be
recognized. More generally, I'm wondering why the original .rar
submission was 300k (presumably compressed) and your diff is only
about 35k ...

I'll look into that. From what you can see, is it worth trying to
clean up, starting from base, or should we just wait for the next
revision of the patch?

Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

#14Tom Lane
tgl@sss.pgh.pa.us
In reply to: David Fetter (#13)
Re: gSoC - ADD MERGE COMMAND - code patch submission

David Fetter <david@fetter.org> writes:

On Sat, Jul 10, 2010 at 01:53:53PM -0400, Tom Lane wrote:

BTW, this patch is still a few bricks shy of a load, since there's
no kwlist.h change and so the new MERGE keyword couldn't possibly be
recognized. More generally, I'm wondering why the original .rar
submission was 300k (presumably compressed) and your diff is only
about 35k ...

I'll look into that. From what you can see, is it worth trying to
clean up, starting from base, or should we just wait for the next
revision of the patch?

Well, rebasing against HEAD will presumably help the submitter
(assuming that he takes the advice to work against HEAD not 8.4.x).
But really what we need to see is design documentation, not code.

regards, tom lane

#15Andrew Dunstan
andrew@dunslane.net
In reply to: Tom Lane (#5)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Tom Lane wrote:

BTW, I notice that that page fails to mention anything about preferred
window width. I believe the project standard is to make things readable
in an 80-column window --- anyone have an objection to stating that
explicitly?

No, on the contrary, I'm in favor of stating it.

cheers

andrew

#16Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#5)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On lör, 2010-07-10 at 12:45 -0400, Tom Lane wrote:

I believe the project standard is to make things readable
in an 80-column window --- anyone have an objection to stating that
explicitly?

Is that what pgindent reformats it to?

#17Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#16)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Peter Eisentraut <peter_e@gmx.net> writes:

On lör, 2010-07-10 at 12:45 -0400, Tom Lane wrote:

I believe the project standard is to make things readable
in an 80-column window --- anyone have an objection to stating that
explicitly?

Is that what pgindent reformats it to?

pgindent tries to leave a character or two to spare, IIRC, so its target
is probably 78 or thereabouts.

regards, tom lane

#18Boxuan Zhai
bxzhai2010@gmail.com
In reply to: Tom Lane (#17)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Hi,

Thanks for all these feedback.

I found that people have problems on running my codes, which probably comes
from my nonstandard submission format. I can compile, install and initialize
postgres in my own machine. The system accepts MERGE command and will throw
an error when it runs into the executor, which cannot recognize the MERGE
command type so far.

I will make a standard patch as soon as possible. Sorry for the troubles.

Yours Boxuan

2010/7/11 Tom Lane <tgl@sss.pgh.pa.us>

Show quoted text

Peter Eisentraut <peter_e@gmx.net> writes:

On lör, 2010-07-10 at 12:45 -0400, Tom Lane wrote:

I believe the project standard is to make things readable
in an 80-column window --- anyone have an objection to stating that
explicitly?

Is that what pgindent reformats it to?

pgindent tries to leave a character or two to spare, IIRC, so its target
is probably 78 or thereabouts.

regards, tom lane

#19Greg Smith
greg@2ndquadrant.com
In reply to: Boxuan Zhai (#18)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Boxuan Zhai wrote:

I found that people have problems on running my codes, which probably
comes from my nonstandard submission format. I can compile, install
and initialize postgres in my own machine. The system accepts MERGE
command and will throw an error when it runs into the executor, which
cannot recognize the MERGE command type so far.

Your job as a potential contributor to PostgreSQL is to make it as easy
as possible for others to test your code out and get good results. I
sent you some more detailed guidelines over the weekend as to what I
think you should do here to achieve that. You should wait until you've
gotten a private review from one of the two people who have volunteered
to help you out here before you submit anything else to the list.
Wasting the time of everyone in the community by sharing code that
doesn't mean any of the project guidelines is a very bad idea; please
don't do that again.

--
Greg Smith 2ndQuadrant US Baltimore, MD
PostgreSQL Training, Services and Support
greg@2ndQuadrant.com www.2ndQuadrant.us

#20Peter Eisentraut
peter_e@gmx.net
In reply to: Greg Smith (#19)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On mån, 2010-07-12 at 10:04 -0400, Greg Smith wrote:

Wasting the time of everyone in the community by sharing code that
doesn't mean any of the project guidelines is a very bad idea; please
don't do that again.

I think it's better to share code that doesn't mean project guidelines
and solicit advice rather than not to share anything.

#21Joshua D. Drake
jd@commandprompt.com
In reply to: Peter Eisentraut (#20)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Mon, 2010-07-12 at 23:28 +0300, Peter Eisentraut wrote:

On mån, 2010-07-12 at 10:04 -0400, Greg Smith wrote:

Wasting the time of everyone in the community by sharing code that
doesn't mean any of the project guidelines is a very bad idea; please
don't do that again.

I think it's better to share code that doesn't mean project guidelines
and solicit advice rather than not to share anything.

Agreed.

It is great that we have guidelines. We should definitely encourage
people to use them. We should also lead, not push people into wanting to
use them.

Collaboration is good.

JD
--
PostgreSQL.org Major Contributor
Command Prompt, Inc: http://www.commandprompt.com/ - 509.416.6579
Consulting, Training, Support, Custom Development, Engineering

#22Greg Smith
greg@2ndquadrant.com
In reply to: Peter Eisentraut (#20)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Peter Eisentraut wrote:

I think it's better to share code that doesn't mean project guidelines
and solicit advice rather than not to share anything.

I feel the assumption that code is so valuable that it should be shared
regardless of whether it meets conventions is a flawed one for this
project. There are already dozens, if not hundreds, of useful patch
submissions that have been sent to this list, consumed time, and then
gone nowhere because they didn't happen in a way that the community was
able to integrate them properly. For anyone who isn't producing
commiter quality patches, the process is far more important than the
code if you want to get something non-trivial accomplished.

Also, producing code in whatever format you want and dumping that on the
community so that people like David Fetter waste their time cleaning it
up is not the way the GSoC work is supposed to happen. I didn't want
any other current or potential future participants in that program to
get the wrong idea from that example.

There is a brief "get to know the community" period at the beginning of
the summer schedule. I think that next year this project would be well
served to give each student a small patch to review during that time, as
a formal intro to the community process. The tendency among students to
just wander off coding without doing any interaction like that is both
common and counterproductive, given how patches to PostgreSQL actually
shuffle along toward becoming commit quality code. Far as I'm
concerned, a day spent working with the patch review checklist on
someone else's patch pays for itself tenfold when it comes time to
produce patches that others will be able to review.

--
Greg Smith 2ndQuadrant US Baltimore, MD
PostgreSQL Training, Services and Support
greg@2ndQuadrant.com www.2ndQuadrant.us

#23Tom Lane
tgl@sss.pgh.pa.us
In reply to: Greg Smith (#22)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Greg Smith <greg@2ndquadrant.com> writes:

There is a brief "get to know the community" period at the beginning of
the summer schedule. I think that next year this project would be well
served to give each student a small patch to review during that time, as
a formal intro to the community process. The tendency among students to
just wander off coding without doing any interaction like that is both
common and counterproductive, given how patches to PostgreSQL actually
shuffle along toward becoming commit quality code. Far as I'm
concerned, a day spent working with the patch review checklist on
someone else's patch pays for itself tenfold when it comes time to
produce patches that others will be able to review.

That seems like a great idea.

Is there a specific period when that's supposed to happen for GSoC
students? Can we arrange for a commitfest to be running then?
(I guess it'd need to be early in the fest, else the low-hanging
fruit will be gone already.)

regards, tom lane

#24Robert Haas
robertmhaas@gmail.com
In reply to: Greg Smith (#22)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Jul 12, 2010, at 4:16 PM, Greg Smith <greg@2ndquadrant.com> wrote:

I feel the assumption that code is so valuable that it should be shared regardless of whether it meets conventions is a flawed one for this project. There are already dozens, if not hundreds, of useful patch submissions that have been sent to this list, consumed time, and then gone nowhere because they didn't happen in a way that the community was able to integrate them properly.

True - but we don't want to unduly discourage potential contributors or make them afraid of posting, either. It is for the community to decide whether the effort to clean up a patch is worthwhile, and to provide guidance on what must change. Individual contributors shouldn't seek to take that process off-list, at least IMHO.

The main problem with this patch is not that it was submitted as a RAR of multiple diffs against 8.4.3 instead of a single diff against HEAD: it's that we've apparently reached GSoC midterms without making progress beyond what Peter hacked together whilst sitting in an airport.

...Robert

#25Greg Smith
greg@2ndquadrant.com
In reply to: Tom Lane (#23)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Tom Lane wrote:

Is there a specific period when that's supposed to happen for GSoC
students? Can we arrange for a commitfest to be running then

The GSoC "Community bonding period" is described at
http://googlesummerofcode.blogspot.com/2007/04/so-what-is-this-community-bonding-all.html
and what to cover is a near perfect match for things like introducing
the patch review and submission process. This year, the period from
when proposals were accepted on April 26th through the official coding
start on May 24th were labeled as being devoted to that. Given the way
the release schedule has worked out the last few years, I expect that
every year there will be a whole stack of possibly moldy patches sitting
in the queue for the first CF of the next version at that point. I
don't think we necessarily need to organize a full on CF around that
schedule, but picking a small patch for each student to start chewing on
during that period would usefully settle them into list interaction and
community development process much more gradually than starting that
with their code drops.

--
Greg Smith 2ndQuadrant US Baltimore, MD
PostgreSQL Training, Services and Support
greg@2ndQuadrant.com www.2ndQuadrant.us

#26Tom Lane
tgl@sss.pgh.pa.us
In reply to: Greg Smith (#25)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Greg Smith <greg@2ndquadrant.com> writes:

Tom Lane wrote:

Is there a specific period when that's supposed to happen for GSoC
students? Can we arrange for a commitfest to be running then

The GSoC "Community bonding period" is described at
http://googlesummerofcode.blogspot.com/2007/04/so-what-is-this-community-bonding-all.html
and what to cover is a near perfect match for things like introducing
the patch review and submission process. This year, the period from
when proposals were accepted on April 26th through the official coding
start on May 24th were labeled as being devoted to that. Given the way
the release schedule has worked out the last few years, I expect that
every year there will be a whole stack of possibly moldy patches sitting
in the queue for the first CF of the next version at that point.

Hmm. Assuming that we manage to keep to an annual release schedule
(no sure thing, since we've never done it yet) what that would mean
is that the students are looking for feedback while most of the key
developers are in heads-down, let's-get-this-release-to-beta mode.
Not sure how well that will work. Still, we can try it.

regards, tom lane

#27Boxuan Zhai
bxzhai2010@gmail.com
In reply to: Tom Lane (#26)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Dear Hackers

I considered my situation. And I found that I didn't communicate well with
you, as makes you have little confidence on my project. Most of the time I
just work by myself and not report to you frequently. I always want to
finish a solid stage progress before do a submission. This may be a bad
habit in the remote project.

In fact, I have a detailed design on how to implement the command and I am
working hard these days to catch the schedule.

In my design,
1. the merge command is firstly transformed to a "MergeStmt" node in
parser. And analyzer will generate a left out join query as the top query
(or main query). This query is similar to a SELECT command query, but I set
target relation in it. The top query will drive the scanning and joining
over target and source tables.

The merge actions are transformed into lower level queries. I create a Query
node for each of them and append them in a newly create List field
mergeActQry. The action queries have different command type and specific
target list and qual list, according to their declaration by user. But they
all share the same range table. This is because we don't need the action
queries to be planned latter. The joining strategy is decided by the top
query. We are only interest in their specific action qualifications. In
other words, these action queries are only containers for their target list
and qualifications.

2. When the query is ready, it will be send to rewriter. In this part, we
can call RewriteQuery() to handle the action queries. The UPDATE action will
trigger rules on UPDATE, and so on. What need to be noticed are: 1. the
actions of the same type should not be rewritten repeatedly. If there are
two UPDATE actions in merge command, we should not trigger the ON UPDATE
rules twice. 2. if an action type is fully replaced by rules, we should
remove all actions of this type from the action list.
Rewriter will also do some process on the target list of each action.

The first submission has finished the above part.

3. In planner, the top level query is handled in a normal way. Since it has
almost the same structure as a SELECT query, the planner() function can work
on it straight forward. However, we need a small change here. The merge
command has a target relation, which need a ctid junk attribute in the
target list. The ctid is required by the UPDATE and DELETE actions.

Besides, for each of the action queries, we also need to create a Plan node.
We don't need to do a full plan on the action queries. The crucial point is
to preprocess the target list and qualification of each action. (Explanation
for this point. The execution of a merge action is composed by two parts.
The top plan will be executed in the main loop, and return the joined tuples
one by one. And a action will apply its qualification on the returned
tuples. If succeed, it will take the action and do corresponding
modification on the target table. Thus, even we have a Plan node created for
each action, we don't want to throw it directly into Planner() function.
That will generate a new plan over the tables in Range Table, which is very
probably different with the top-level plan. If we run the action plans
directly, they will be confilict with each other).

I create a function merge_action_planner() to do this job. This part is
added at the end of standard_planner(). After that, all the plans of merge
actions are linked into a new List filed in PlannedStmt result of the top
plan.

4. When planner is finished, the plan will be send to executor through
PortalRun(). As a new command, merge will chose the PORTAL_MULTI_QUERY
strategy, and be sent to ProcessQuery() function.

5. As in the ExecutorStart() part, we need to set junkfilter for merge
command, since we have a ctid junk attr in target list. And, the merge
action plans should also be initialized and transformed into PlanState
nodes. However, the initialization over action plan is only focus on the
target list and quals. We don't need other part of traditional plan
initialization, since these action plans are not for scanning or joining
(this is the job of top plan). We only want to transform the action
information into standard format that can be used by qualification evaluator
in executor.
I HAVE DONE ALL THE ABOVE IN A SECOND SUBMISSION.

6. In ExecutorRun() part, the top plan will be passed into ExecutePlan().
The action planstates can be found in the
estate->es_plannedstmt field.
The top plan can return tuples of the left out join on source table and
target table. (I can see the tuple be returned in my codes). Thus, the
design is correct. At least the top plan can do its work well. In the
junkfilter, if we can find a non-null ctid, it is a matched tuple, or else,
it is a NOT MATCHED tuple. Then we need to evaluate the additional quals of
the actions one by one. If the evaluations of one action succeed, we will
take this action and skip the remaining ones.

Since the target list and qual expressions are all processed by rewriter,
planner and InitPlan(), I think they will be accepted by the ExecQual()
function without many problems.

This is the last step, and I am still working on it.

PS: Heikki asked me about what the "EXPLAIN MERGE ..." command will do.
Well, I have not test it, but it may through an error or just explain the
top plan, since I put the action plans in a new field, which cannot be
recognized by old functions.

Thanks!

Yours Boxuan.

#28Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Boxuan Zhai (#27)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On 16/07/10 03:26, Boxuan Zhai wrote:

PS: Heikki asked me about what the "EXPLAIN MERGE ..." command will do.
Well, I have not test it, but it may through an error or just explain the
top plan, since I put the action plans in a new field, which cannot be
recognized by old functions.

I meant what EXPLAIN MERGE output will look like after the project is
finished, not what it will do at this stage. I was trying to get a
picture of how you're thinking to implement the executor, what nodes
there is in a MERGE plan.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#29Boxuan Zhai
bxzhai2010@gmail.com
In reply to: Heikki Linnakangas (#28)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Hi,

For the EXPLAIN MERGE command, I expect it to return a result similar to
that of a SELECT command.

I think the EXPLAIN command is to show how the tables in a query is scaned
and joined. In my design, the merge command will generate a top-level query
(and plan) as the main query. It is in fact a left join select query over
the source and target tables. This main query (plan) decides how the tables
are scanned. The merge actions will not effect this process. So when we
explain the merge command, a similar result will be returned.

For example the command
EXPLAIN
MERGE INTO Stock USING Sale ON Stock.stock_id = Sale.sale_id
WHEN MATCHED THEN UPDATE SET balance = balance + sale.vol;
WHEN ....
.....

Will return a result just like that of the following command:

EXPLAIN
SELECT * FROM Sale LEFT JOIN Stock ON stock_id = sale_id;

Yours Boxuan.

2010/7/16 Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>

Show quoted text

On 16/07/10 03:26, Boxuan Zhai wrote:

PS: Heikki asked me about what the "EXPLAIN MERGE ..." command will do.
Well, I have not test it, but it may through an error or just explain the
top plan, since I put the action plans in a new field, which cannot be
recognized by old functions.

I meant what EXPLAIN MERGE output will look like after the project is
finished, not what it will do at this stage. I was trying to get a picture
of how you're thinking to implement the executor, what nodes there is in a
MERGE plan.

--
Heikki Linnakangas

EnterpriseDB http://www.enterprisedb.com

#30Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Boxuan Zhai (#29)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On 16/07/10 12:26, Boxuan Zhai wrote:

For the EXPLAIN MERGE command, I expect it to return a result similar to
that of a SELECT command.

I think the EXPLAIN command is to show how the tables in a query is scaned
and joined. In my design, the merge command will generate a top-level query
(and plan) as the main query. It is in fact a left join select query over
the source and target tables. This main query (plan) decides how the tables
are scanned. The merge actions will not effect this process. So when we
explain the merge command, a similar result will be returned.

For example the command
EXPLAIN
MERGE INTO Stock USING Sale ON Stock.stock_id = Sale.sale_id
WHEN MATCHED THEN UPDATE SET balance = balance + sale.vol;
WHEN ....
.....

Will return a result just like that of the following command:

EXPLAIN
SELECT * FROM Sale LEFT JOIN Stock ON stock_id = sale_id;

You really need to look at the changes in 9.0 in this area, you now have
a Update/Delete/Insert node (implemented in
src/backend/executor/nodeModifyTable.c) at the top of the plan for
update/insert/delete commands:

postgres=# explain UPDATE foo SET id = 456 WHERE id = 123;
QUERY PLAN
-----------------------------------------------------------
Update (cost=0.00..40.00 rows=12 width=6)
-> Seq Scan on foo (cost=0.00..40.00 rows=12 width=6)
Filter: (id = 123)
(3 rows)

I would expect there to be a Merge node similar to that, with
Update/Insert/Delete subnodes for each action.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#31Simon Riggs
simon@2ndQuadrant.com
In reply to: Boxuan Zhai (#27)
Re: gSoC - ADD MERGE COMMAND - code patch submission

On Fri, 2010-07-16 at 08:26 +0800, Boxuan Zhai wrote:

The merge actions are transformed into lower level queries. I create a
Query node for each of them and append them in a newly create List
field mergeActQry. The action queries have different command type and
specific target list and qual list, according to their declaration by
user. But they all share the same range table. This is because we
don't need the action queries to be planned latter. The joining
strategy is decided by the top query. We are only interest in their
specific action qualifications. In other words, these action queries
are only containers for their target list and qualifications.

2. When the query is ready, it will be send to rewriter. In this part,
we can call RewriteQuery() to handle the action queries. The UPDATE
action will trigger rules on UPDATE, and so on. What need to be
noticed are: 1. the actions of the same type should not be rewritten
repeatedly. If there are two UPDATE actions in merge command, we
should not trigger the ON UPDATE rules twice. 2. if an action type is
fully replaced by rules, we should remove all actions of this type
from the action list.
Rewriter will also do some process on the target list of each action.

IMHO it is a bad thing that we are attempting to execute each action
statement as a query. That means we need to execute an inner SQL
statement for each row returned by the top level query.

That design makes MERGE similar in performance to an upsert PL/pgsql
function, which will perform terribly on large numbers of rows.

This was exactly the point where I stopped implementation previously:
attempting to make MERGE work with rules is enough to prevent a tighter
in-executor implementation of the action list.

[To Boxuan, on a personal note, you seem to be coping quite well with
the code and the process; congratulations and keep going.]

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Training and Services

#32Boxuan Zhai
bxzhai2010@gmail.com
In reply to: Boxuan Zhai (#1)
Fwd: gSoC - ADD MERGE COMMAND - code patch submission

---------- Forwarded message ----------
From: Boxuan Zhai <bxzhai2010@gmail.com>
Date: 2010/7/17
Subject: Re: [HACKERS] gSoC - ADD MERGE COMMAND - code patch submission
To: Simon Riggs <simon@2ndquadrant.com>

2010/7/17 Simon Riggs <simon@2ndquadrant.com>

On Fri, 2010-07-16 at 08:26 +0800, Boxuan Zhai wrote:

The merge actions are transformed into lower level queries. I create a
Query node for each of them and append them in a newly create List
field mergeActQry. The action queries have different command type and
specific target list and qual list, according to their declaration by
user. But they all share the same range table. This is because we
don't need the action queries to be planned latter. The joining
strategy is decided by the top query. We are only interest in their
specific action qualifications. In other words, these action queries
are only containers for their target list and qualifications.

2. When the query is ready, it will be send to rewriter. In this part,
we can call RewriteQuery() to handle the action queries. The UPDATE
action will trigger rules on UPDATE, and so on. What need to be
noticed are: 1. the actions of the same type should not be rewritten
repeatedly. If there are two UPDATE actions in merge command, we
should not trigger the ON UPDATE rules twice. 2. if an action type is
fully replaced by rules, we should remove all actions of this type
from the action list.
Rewriter will also do some process on the target list of each action.

IMHO it is a bad thing that we are attempting to execute each action
statement as a query. That means we need to execute an inner SQL
statement for each row returned by the top level query.

That design makes MERGE similar in performance to an upsert PL/pgsql
function, which will perform terribly on large numbers of rows.

Dear Simmon,

Thanks for your feedback. I may not present my idea clearly.
In my design, the merge actions are not executed as separate queries. Only
the top level query (that is a query like "<source table> LEFT JOIN
<target_table> ON <matching_qual>" ) will be planned and executed. For each
tuple return by this plan, we will choose a proper action for it and do the
corresponding modification. The tables will only be scanned and joined
once. One merge action will not do a full run of tables join and then modify
table as a standard UPDATE/DELETE/INSERT query. (Is this what you are
worried about?)

In fact, for one action, we only need the information of: 1. the action type
(UPDATE or DELTE or INSERT). 2 the target list. and 3. the additional
qualifications. And a Query node is a perfect container for these infor.
That's why I transform them in to Query nodes. But all through the analyzer,
rewriter, planner and executor. I just call related functions to formalize
the expressions in their target list and qual lists. The range table and
join tree is only dermined by the top level query, they will not be effected
by merge actions.

This was exactly the point where I stopped implementation previously:
attempting to make MERGE work with rules is enough to prevent a tighter
in-executor implementation of the action list.

I am sorry that I don't catch your meanning here clearly.
As my understanding, if there is a rule on the target table, the rewriter
will add a new query in the execution queue. (or replace the original
query). I think the rule queries will not effect the process within the
original query, because they are totally separate queries which will be run
before or after the original query. Are you suggest that we should not allow
rules on MERGE command?

[To Boxuan, on a personal note, you seem to be coping quite well with
the code and the process; congratulations and keep going.]

Thank you. Your encouragement is very important to me.

Show quoted text

--

Simon Riggs www.2ndQuadrant.com <http://www.2ndquadrant.com/&gt;
PostgreSQL Development, 24x7 Support, Training and Services

#33Boxuan Zhai
bxzhai2010@gmail.com
In reply to: Boxuan Zhai (#32)
1 attachment(s)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Hi,

I have just moved my modifications to the latest git edition. And I made a
patch file through git diff as the second submission. I think the format is
much better the my last submission.

As I mentioned before, our progress has come into the executor. So far, the
executor can accept the top-level query and return tuples for it. The next
step is to add action qualification evaluation on the returned tuple slot.

Thanks

Boxuan

2010/7/17 Boxuan Zhai <bxzhai2010@gmail.com>

Show quoted text

---------- Forwarded message ----------
From: Boxuan Zhai <bxzhai2010@gmail.com>
Date: 2010/7/17
Subject: Re: [HACKERS] gSoC - ADD MERGE COMMAND - code patch submission
To: Simon Riggs <simon@2ndquadrant.com>

2010/7/17 Simon Riggs <simon@2ndquadrant.com>

On Fri, 2010-07-16 at 08:26 +0800, Boxuan Zhai wrote:

The merge actions are transformed into lower level queries. I create a
Query node for each of them and append them in a newly create List
field mergeActQry. The action queries have different command type and
specific target list and qual list, according to their declaration by
user. But they all share the same range table. This is because we
don't need the action queries to be planned latter. The joining
strategy is decided by the top query. We are only interest in their
specific action qualifications. In other words, these action queries
are only containers for their target list and qualifications.

2. When the query is ready, it will be send to rewriter. In this part,
we can call RewriteQuery() to handle the action queries. The UPDATE
action will trigger rules on UPDATE, and so on. What need to be
noticed are: 1. the actions of the same type should not be rewritten
repeatedly. If there are two UPDATE actions in merge command, we
should not trigger the ON UPDATE rules twice. 2. if an action type is
fully replaced by rules, we should remove all actions of this type
from the action list.
Rewriter will also do some process on the target list of each action.

IMHO it is a bad thing that we are attempting to execute each action
statement as a query. That means we need to execute an inner SQL
statement for each row returned by the top level query.

That design makes MERGE similar in performance to an upsert PL/pgsql
function, which will perform terribly on large numbers of rows.

Dear Simmon,

Thanks for your feedback. I may not present my idea clearly.
In my design, the merge actions are not executed as separate queries. Only
the top level query (that is a query like "<source table> LEFT JOIN
<target_table> ON <matching_qual>" ) will be planned and executed. For each
tuple return by this plan, we will choose a proper action for it and do the
corresponding modification. The tables will only be scanned and joined
once. One merge action will not do a full run of tables join and then modify
table as a standard UPDATE/DELETE/INSERT query. (Is this what you are
worried about?)

In fact, for one action, we only need the information of: 1. the action
type (UPDATE or DELTE or INSERT). 2 the target list. and 3. the additional
qualifications. And a Query node is a perfect container for these infor.
That's why I transform them in to Query nodes. But all through the analyzer,
rewriter, planner and executor. I just call related functions to formalize
the expressions in their target list and qual lists. The range table and
join tree is only dermined by the top level query, they will not be effected
by merge actions.

This was exactly the point where I stopped implementation previously:
attempting to make MERGE work with rules is enough to prevent a tighter
in-executor implementation of the action list.

I am sorry that I don't catch your meanning here clearly.
As my understanding, if there is a rule on the target table, the rewriter
will add a new query in the execution queue. (or replace the original
query). I think the rule queries will not effect the process within the
original query, because they are totally separate queries which will be run
before or after the original query. Are you suggest that we should not allow
rules on MERGE command?

[To Boxuan, on a personal note, you seem to be coping quite well with
the code and the process; congratulations and keep going.]

Thank you. Your encouragement is very important to me.

--

Simon Riggs www.2ndQuadrant.com <http://www.2ndquadrant.com/&gt;
PostgreSQL Development, 24x7 Support, Training and Services

Attachments:

merge_command_submission2.patchtext/plain; charset=US-ASCII; name=merge_command_submission2.patchDownload
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index 2f33fdb..9f17eca 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -86,7 +86,9 @@ static void intorel_startup(DestReceiver *self, int operation, TupleDesc typeinf
 static void intorel_receive(TupleTableSlot *slot, DestReceiver *self);
 static void intorel_shutdown(DestReceiver *self);
 static void intorel_destroy(DestReceiver *self);
-
+static void ExecMerge(TupleTableSlot * slot,ItemPointer tupleid,	
+						TupleTableSlot * planSlot,DestReceiver * dest,
+						EState * estate);
 /* end of local decls */
 
 
@@ -171,6 +173,7 @@ standard_ExecutorStart(QueryDesc *queryDesc, int eflags)
 		case CMD_INSERT:
 		case CMD_DELETE:
 		case CMD_UPDATE:
+		case CMD_MERGE:	
 			estate->es_output_cid = GetCurrentCommandId(true);
 			break;
 
@@ -795,6 +798,32 @@ InitPlan(QueryDesc *queryDesc, int eflags)
 		i++;
 	}
 
+
+
+
+	/*
+	* for the merge actions, we need to similar things as above
+	*/
+	
+	if(operation == CMD_MERGE)
+	{
+		ListCell *eachact;
+		foreach(eachact, queryDesc->plannedstmt->mergeActPlan)
+		{
+			Plan *actplan = (Plan *)lfirst(eachact);
+			PlanState *actpstate;
+			
+			Assert(IsA(actplan,Plan));
+
+			//here, I call ExecInitNode directly. (correct or not?)
+			actpstate = ExecInitMergeActNode(actplan,estate,0);
+			//replace the plan with this planstate. Still put them in the plannedstmt->mergeActPlan list,
+
+			lfirst(eachact) = actpstate;
+		}
+	}
+	
+
 	/*
 	 * Initialize the private state information for all the nodes in the query
 	 * tree.  This opens files, allocates storage and leaves us ready to start
diff --git a/src/backend/executor/execProcnode.c b/src/backend/executor/execProcnode.c
index f4cc7d9..cc549ea 100644
--- a/src/backend/executor/execProcnode.c
+++ b/src/backend/executor/execProcnode.c
@@ -327,6 +327,54 @@ ExecInitNode(Plan *node, EState *estate, int eflags)
 }
 
 
+/*
+*	When init a merge plan, we also need init its action plans. 
+*	However, these action plans are "pure" plans. We only want to handle the tlist and quals
+*/
+PlanState *
+ExecInitMergeActNode(Plan *node, EState *estate, int eflags)
+{
+	PlanState  *result;
+	
+	/*
+	 * do nothing when we get to the end of a leaf on tree.
+	 */
+	if (node == NULL)
+		return NULL;
+
+	
+	/*
+	 * create state structure
+	 */
+	result = makeNode(PlanState);
+	result->plan = node;
+	result->state = estate;
+	
+	/*
+	 * Miscellaneous initialization
+	 *
+	 * create expression context for node
+	 */
+	 
+	ExecAssignExprContext(estate, result);
+
+	/*
+	 * initialize child expressions
+	 */
+	result->targetlist = (List *)
+		ExecInitExpr((Expr *) node->targetlist,  result);
+	result->qual = (List *)
+		ExecInitExpr((Expr *) node->qual, result);
+
+
+	/* Set up instrumentation for this node if requested */
+	if (estate->es_instrument)
+		result->instrument = InstrAlloc(1, estate->es_instrument);
+
+	return result;
+}
+
+
 /* ----------------------------------------------------------------
  *		ExecProcNode
  *
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index 8619ce3..ea0ce87 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -583,6 +583,18 @@ lreplace:;
 }
 
 
+static TupleTableSlot *
+ExecMerge(ItemPointer tupleid,
+		   TupleTableSlot *slot,
+		   TupleTableSlot *planSlot,
+		   EPQState *epqstate,
+		   EState *estate)
+{
+	printf("get a tuple for merge \n");
+	return NULL;
+	
+}
+
 /*
  * Process BEFORE EACH STATEMENT triggers
  */
@@ -603,6 +615,9 @@ fireBSTriggers(ModifyTableState *node)
 			ExecBSDeleteTriggers(node->ps.state,
 								 node->ps.state->es_result_relations);
 			break;
+		case CMD_MERGE:
+			printf("not sure about the BS triggers of merge\n");
+			break;
 		default:
 			elog(ERROR, "unknown operation");
 			break;
@@ -629,6 +644,9 @@ fireASTriggers(ModifyTableState *node)
 			ExecASDeleteTriggers(node->ps.state,
 								 node->ps.state->es_result_relations);
 			break;
+		case CMD_MERGE:
+			printf("not sure about the AS triggers of merge\n");
+			break;	
 		default:
 			elog(ERROR, "unknown operation");
 			break;
@@ -744,6 +762,11 @@ ExecModifyTable(ModifyTableState *node)
 				slot = ExecDelete(tupleid, planSlot,
 								  &node->mt_epqstate, estate);
 				break;
+			case CMD_MERGE:
+				slot = ExecMerge(tupleid, slot, planSlot,
+								  &node->mt_epqstate, estate);
+				break;	
+				
 			default:
 				elog(ERROR, "unknown operation");
 				break;
@@ -955,6 +978,7 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
 				break;
 			case CMD_UPDATE:
 			case CMD_DELETE:
+			case CMD_MERGE:	
 				junk_filter_needed = true;
 				break;
 			default:
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index 93dcef5..ff22fa2 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -90,6 +90,7 @@ _copyPlannedStmt(PlannedStmt *from)
 	COPY_NODE_FIELD(relationOids);
 	COPY_NODE_FIELD(invalItems);
 	COPY_SCALAR_FIELD(nParamExec);
+	COPY_NODE_FIELD(mergeActPlan);
 
 	return newnode;
 }
@@ -2273,6 +2274,9 @@ _copyQuery(Query *from)
 	COPY_NODE_FIELD(rowMarks);
 	COPY_NODE_FIELD(setOperations);
 
+	/*merge action list*/
+	COPY_NODE_FIELD(mergeActQry); 
+
 	return newnode;
 }
 
@@ -2343,6 +2347,64 @@ _copySelectStmt(SelectStmt *from)
 	return newnode;
 }
 
+
+static MergeStmt *
+_copyMergeStmt(MergeStmt *from)
+{
+	MergeStmt *newnode = makeNode(MergeStmt);
+
+	COPY_NODE_FIELD(relation);
+	COPY_NODE_FIELD(source);
+	COPY_NODE_FIELD(matchCondition);
+	COPY_NODE_FIELD(actions);
+	
+	return newnode;
+	
+}
+
+
+static MergeConditionAction *
+_copyMergeConditionAction(MergeConditionAction *from)
+{
+	MergeConditionAction *newnode = makeNode(MergeConditionAction);
+
+	COPY_SCALAR_FIELD(match);
+	COPY_NODE_FIELD(condition);
+	COPY_NODE_FIELD(action);
+
+	return newnode;
+}
+
+static MergeUpdate *
+_copyMergeUpdate(MergeUpdate *from)
+{
+	MergeUpdate *newNode = (MergeUpdate *)_copyUpdateStmt((UpdateStmt *) from);
+	newNode->type = T_MergeUpdate;
+
+	return newNode;
+}
+
+static MergeInsert *
+_copyMergeInsert(MergeInsert *from)
+{
+	MergeInsert *newNode = (MergeInsert *)_copyInsertStmt((InsertStmt *) from);
+	newNode->type = T_MergeInsert;
+
+	return newNode;
+}
+
+
+static MergeDelete *
+_copyMergeDelete(MergeDelete *from)
+{
+	MergeDelete *newNode = (MergeDelete *)_copyDeleteStmt((DeleteStmt *) from);
+	newNode->type = T_MergeDelete;
+
+	return newNode;
+}
+
+
+
 static SetOperationStmt *
 _copySetOperationStmt(SetOperationStmt *from)
 {
@@ -3902,7 +3964,22 @@ copyObject(void *from)
 			break;
 		case T_SelectStmt:
 			retval = _copySelectStmt(from);
-			break;
+			break;		
+		case T_MergeStmt:
+			retval = _copyMergeStmt(from);
+			break;			
+		case T_MergeConditionAction:
+			retval = _copyMergeConditionAction(from);
+			break;	
+		case T_MergeUpdate:
+			retval = _copyMergeUpdate(from);
+			break;
+		case T_MergeInsert:
+			retval = _copyMergeInsert(from);
+			break;	
+		case T_MergeDelete:
+			retval = _copyMergeDelete(from);
+			break;	
 		case T_SetOperationStmt:
 			retval = _copySetOperationStmt(from);
 			break;
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 5d83727..f797f64 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -877,7 +877,7 @@ _equalQuery(Query *a, Query *b)
 	COMPARE_NODE_FIELD(limitCount);
 	COMPARE_NODE_FIELD(rowMarks);
 	COMPARE_NODE_FIELD(setOperations);
-
+	
 	return true;
 }
 
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 79baf4f..dae9f31 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -255,6 +255,7 @@ _outPlannedStmt(StringInfo str, PlannedStmt *node)
 	WRITE_NODE_FIELD(relationOids);
 	WRITE_NODE_FIELD(invalItems);
 	WRITE_INT_FIELD(nParamExec);
+	WRITE_NODE_FIELD(mergeActPlan);
 }
 
 /*
@@ -2019,9 +2020,51 @@ _outQuery(StringInfo str, Query *node)
 	WRITE_NODE_FIELD(limitCount);
 	WRITE_NODE_FIELD(rowMarks);
 	WRITE_NODE_FIELD(setOperations);
+	WRITE_NODE_FIELD(mergeActQry);
+}
+
+
+static void
+_outMergeConditionAction(StringInfo str, MergeConditionAction *node)
+{
+	WRITE_NODE_TYPE("MERGECONDITIONACTION");
+
+	WRITE_BOOL_FIELD(match);
+	
+	WRITE_NODE_FIELD(condition);
+	WRITE_NODE_FIELD(action);
+
+
 }
 
 static void
+_outMergeStmt(StringInfo str, MergeStmt *node)
+{
+	WRITE_NODE_TYPE("MERGESTMT");
+
+	WRITE_NODE_FIELD(relation);
+	WRITE_NODE_FIELD(source);
+	WRITE_NODE_FIELD(matchCondition);
+	WRITE_NODE_FIELD(actions);
+
+}
+
+static void 
+_outDeleteStmt(StringInfo str, DeleteStmt *node)
+{
+	WRITE_NODE_TYPE("DELETESTMT");
+
+	WRITE_NODE_FIELD(relation);
+	WRITE_NODE_FIELD(usingClause);
+	WRITE_NODE_FIELD(whereClause);
+	WRITE_NODE_FIELD(returningList);
+
+
+}
+
+
+
+static void
 _outSortGroupClause(StringInfo str, SortGroupClause *node)
 {
 	WRITE_NODE_TYPE("SORTGROUPCLAUSE");
@@ -2905,6 +2948,17 @@ _outNode(StringInfo str, void *obj)
 				_outXmlSerialize(str, obj);
 				break;
 
+			case T_MergeStmt:
+				_outMergeStmt(str, obj);
+				break;
+			case T_MergeConditionAction:
+				_outMergeConditionAction(str,obj);
+				break;
+			case T_DeleteStmt:
+				_outDeleteStmt(str,obj);
+				break;
+					
+
 			default:
 
 				/*
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 3950ab4..04bb60d 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -251,6 +251,25 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams)
 	result->invalItems = glob->invalItems;
 	result->nParamExec = list_length(glob->paramlist);
 
+	/*do a simple plan for each actions in the merge command.
+	//put them in mergeActPlan list;
+	*/
+	if(parse->commandType == CMD_MERGE)
+	{
+		ListCell *l;
+
+		
+		foreach(l, parse->mergeActQry)
+		{
+			
+			Plan *actplan = merge_action_planner(glob, (Query *)lfirst(l), NULL,
+								false, tuple_fraction, &root);
+
+			result->mergeActPlan = lappend(result->mergeActPlan, actplan);
+		}
+
+	}
+
 	return result;
 }
 
@@ -584,6 +603,74 @@ subquery_planner(PlannerGlobal *glob, Query *parse,
 	return plan;
 }
 
+
+
+Plan *
+merge_action_planner(PlannerGlobal *glob, Query *parse,
+				 PlannerInfo *parent_root,
+				 bool hasRecursion, double tuple_fraction,
+				 PlannerInfo **subroot)
+{
+	PlannerInfo *root;
+	Plan	   *plan;
+	
+	
+
+	/* Create a PlannerInfo data structure for this subquery */
+	root = makeNode(PlannerInfo);
+	root->parse = parse;
+	root->glob = glob;
+	root->query_level = 1;
+	root->parent_root = NULL;
+	root->planner_cxt = CurrentMemoryContext;
+	root->init_plans = NIL;
+	root->cte_plan_ids = NIL;
+	root->eq_classes = NIL;
+	root->append_rel_list = NIL;
+
+	root->hasRecursion = false;
+	root->wt_param_id = -1;
+	root->non_recursive_plan = NULL;
+
+
+
+
+	/*
+	 * no having clause in a merge action
+	 */
+	Assert(parse->havingQual == NULL);
+
+	/* Clear this flag; might get set in distribute_qual_to_rels */
+	root->hasPseudoConstantQuals = false;
+
+	/*
+	 * Do expression preprocessing on targetlist and quals.
+	 */
+	parse->targetList = (List *)
+		preprocess_expression(root, (Node *) parse->targetList,
+							  EXPRKIND_TARGET);
+
+	
+	preprocess_qual_conditions(root, (Node *) parse->jointree);
+
+	
+
+
+	/*
+	 * Do the main planning.  If we have an inherited target relation, that
+	 * needs special processing, else go straight to grouping_planner.
+	 */
+	if (parse->resultRelation &&
+		rt_fetch(parse->resultRelation, parse->rtable)->inh)
+		plan = inheritance_planner(root);
+	else
+		plan = grouping_planner(root, tuple_fraction);
+
+	
+	return plan;
+}
+
+
 /*
  * preprocess_expression
  *		Do subquery_planner's preprocessing work for an expression,
diff --git a/src/backend/optimizer/prep/preptlist.c b/src/backend/optimizer/prep/preptlist.c
index 59d3518..adf8795 100644
--- a/src/backend/optimizer/prep/preptlist.c
+++ b/src/backend/optimizer/prep/preptlist.c
@@ -84,7 +84,7 @@ preprocess_targetlist(PlannerInfo *root, List *tlist)
 	 * delete.	This extra field is marked "junk" so that it is not stored
 	 * back into the tuple.
 	 */
-	if (command_type == CMD_UPDATE || command_type == CMD_DELETE)
+	if (command_type == CMD_UPDATE || command_type == CMD_DELETE || command_type == CMD_MERGE)
 	{
 		TargetEntry *tle;
 		Var		   *var;
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 6b99a10..8c6af99 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -47,6 +47,8 @@ static Query *transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt);
 static Query *transformInsertStmt(ParseState *pstate, InsertStmt *stmt);
 static List *transformInsertRow(ParseState *pstate, List *exprlist,
 				   List *stmtcols, List *icolumns, List *attrnos);
+
+static Query *transformMergeStmt(ParseState *pstate, MergeStmt *stmt);
 static Query *transformSelectStmt(ParseState *pstate, SelectStmt *stmt);
 static Query *transformValuesClause(ParseState *pstate, SelectStmt *stmt);
 static Query *transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt);
@@ -164,17 +166,24 @@ transformStmt(ParseState *pstate, Node *parseTree)
 			 * Optimizable statements
 			 */
 		case T_InsertStmt:
+		case T_MergeInsert:
 			result = transformInsertStmt(pstate, (InsertStmt *) parseTree);
 			break;
 
 		case T_DeleteStmt:
+		case T_MergeDelete:
 			result = transformDeleteStmt(pstate, (DeleteStmt *) parseTree);
 			break;
 
 		case T_UpdateStmt:
+		case T_MergeUpdate:
 			result = transformUpdateStmt(pstate, (UpdateStmt *) parseTree);
 			break;
 
+		case T_MergeStmt:
+			result = transformMergeStmt(pstate, (MergeStmt *)parseTree);
+			break; 
+
 		case T_SelectStmt:
 			{
 				SelectStmt *n = (SelectStmt *) parseTree;
@@ -282,22 +291,32 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt)
 
 	qry->commandType = CMD_DELETE;
 
-	/* set up range table with just the result rel */
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
-								  interpretInhOption(stmt->relation->inhOpt),
-										 true,
-										 ACL_DELETE);
-
 	qry->distinctClause = NIL;
 
+
 	/*
-	 * The USING clause is non-standard SQL syntax, and is equivalent in
-	 * functionality to the FROM list that can be specified for UPDATE. The
-	 * USING keyword is used rather than FROM because FROM is already a
-	 * keyword in the DELETE syntax.
-	 */
-	transformFromClause(pstate, stmt->usingClause);
+	* The input stmt could be a MergeDelete node. 
+	* In this case, we don't need the process on range table.
+	*/
+	if(IsA(stmt, DeleteStmt))
+	{
+		/* set up range table with just the result rel */
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
+									  interpretInhOption(stmt->relation->inhOpt),
+											 true,
+											 ACL_DELETE);
 
+		
+
+		/*
+		 * The USING clause is non-standard SQL syntax, and is equivalent in
+		 * functionality to the FROM list that can be specified for UPDATE. The
+		 * USING keyword is used rather than FROM because FROM is already a
+		 * keyword in the DELETE syntax.
+		 */
+		transformFromClause(pstate, stmt->usingClause);
+	}
+	
 	qual = transformWhereClause(pstate, stmt->whereClause, "WHERE");
 
 	qry->returningList = transformReturningList(pstate, stmt->returningList);
@@ -347,6 +366,8 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 	 * VALUES list, or general SELECT input.  We special-case VALUES, both for
 	 * efficiency and so we can handle DEFAULT specifications.
 	 */
+
+	/*a MergeInsert statment is always a VALUE clause*/
 	isGeneralSelect = (selectStmt && selectStmt->valuesLists == NIL);
 
 	/*
@@ -382,7 +403,8 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
 	 * mentioned in the SELECT part.  Note that the target table is not added
 	 * to the joinlist or namespace.
 	 */
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
+	if(IsA(stmt,InsertStmt))/*for MergeInsert, no need to do this*/ 
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
 										 false, false, ACL_INSERT);
 
 	/* Validate stmt->cols list, or build default list if no list given */
@@ -1730,17 +1752,19 @@ transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt)
 	qry->commandType = CMD_UPDATE;
 	pstate->p_is_update = true;
 
-	qry->resultRelation = setTargetTable(pstate, stmt->relation,
-								  interpretInhOption(stmt->relation->inhOpt),
-										 true,
-										 ACL_UPDATE);
-
-	/*
-	 * the FROM clause is non-standard SQL syntax. We used to be able to do
-	 * this with REPLACE in POSTQUEL so we keep the feature.
-	 */
-	transformFromClause(pstate, stmt->fromClause);
+	if(IsA(stmt, UpdateStmt))/*for MergeUpdate, no need to do this*/
+	{
+		qry->resultRelation = setTargetTable(pstate, stmt->relation,
+									  interpretInhOption(stmt->relation->inhOpt),
+											 true,
+											 ACL_UPDATE);
 
+		/*
+		 * the FROM clause is non-standard SQL syntax. We used to be able to do
+		 * this with REPLACE in POSTQUEL so we keep the feature.
+		 */
+		transformFromClause(pstate, stmt->fromClause);
+	}
 	qry->targetList = transformTargetList(pstate, stmt->targetList);
 
 	qual = transformWhereClause(pstate, stmt->whereClause, "WHERE");
@@ -2241,3 +2265,336 @@ applyLockingClause(Query *qry, Index rtindex,
 	rc->pushedDown = pushedDown;
 	qry->rowMarks = lappend(qry->rowMarks, rc);
 }
+
+
+
+/*transform a action of merge command into a query. 
+No change of the pstate range table is allowed in this function. 
+*/
+static Query *
+transformMergeActions(ParseState *pstate, MergeStmt *stmt, MergeConditionAction *condact)
+{
+	Query *actqry = makeNode(Query);
+	A_Expr *match_expr; //the expr of matched/not matched
+	A_Expr *act_qual_expr;
+
+	/*firstly, we need to make sure that DELETE and UPDATE actions are only taken in MATCHED condition 
+	and INSERTs are only takend when not MATCHED
+	*/
+	if(IsA(condact->action, MergeDelete)) 
+	{	
+		if(!condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The DELETE action in MERGE command is not allowed when NOT MATCHED")));
+	}
+	else if(IsA(condact->action, MergeUpdate))
+	{	
+		if(!condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The UPDATE action in MERGE command is not allowed when NOT MATCHED")));
+	}
+	else if(IsA(condact->action, MergeInsert))
+	{	
+		if(condact->match) 
+			ereport(ERROR,
+				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+		 		errmsg("The INSERT action in MERGE command is not allowed when MATCHED")));
+	}
+	else
+		ereport(ERROR,
+			(errcode(ERRCODE_SYNTAX_ERROR),
+			 errmsg("UNKONWN action type in MERGE")));
+
+
+		
+	/*combine the condtion of this act with the ON qual of the merge command
+	do a copy of the merge condtion for safety. 
+	*/
+
+	/*
+	if(condact->match) 
+		match_expr = copyObject(stmt->matchCondition);
+	else
+		match_expr = makeA_Expr(AEXPR_NOT, NIL, NULL, 
+									copyObject(stmt->matchCondition), 1);
+											
+
+	if(condact->condition)
+		act_qual_expr = makeA_Expr(AEXPR_AND, NIL, condact->condition, (Node *)match_expr, 2);
+	else
+		act_qual_expr = match_expr;
+
+	*/
+
+	act_qual_expr = condact->condition;
+	
+	/*use the transfomStmt() to parse all types of actions*/
+	if(IsA(condact->action, MergeDelete))
+	{
+		/*a delete action*/
+		MergeDelete *deleteact = (MergeDelete *)(condact->action);
+		Assert(IsA(deleteact,DeleteStmt));
+		
+		deleteact->relation = stmt->relation;
+		deleteact->usingClause = stmt->source;
+		deleteact->whereClause = (Node *)act_qual_expr;
+
+		/*parse the action query*/
+		actqry = transformStmt(pstate, (Node *)deleteact);
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_DELETE || actqry->utilityStmt != NULL)
+			elog(ERROR, "improper DELETE action in merge stmt");
+
+		return actqry;
+	}
+	else if(IsA(condact->action, MergeUpdate))
+	{
+		/*an update action*/
+		MergeUpdate *updateact = (MergeUpdate *)(condact->action);
+
+		/*the "targetlist" of the updateact is filled in the parser */
+		updateact->relation = stmt->relation;
+		updateact->fromClause = stmt->source;
+		updateact->whereClause = (Node *)act_qual_expr;
+
+		/*parse the action query*/
+		actqry = transformStmt(pstate, (Node *)updateact);
+
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_UPDATE|| actqry->utilityStmt != NULL)
+			elog(ERROR, "improper UPDATE action in merge stmt");
+
+		return actqry;
+	}
+	else if(IsA(condact->action, MergeInsert))
+	{
+		/*an insert action*/
+		Node *qual;
+		MergeInsert *insertact;
+
+		insertact = (MergeInsert *)(condact->action);
+		
+		
+		/*the "cols" and "selectStmt" of the insertact is filled in the parser */
+		insertact->relation = stmt->relation;
+
+		/*
+		the merge insert action has a strange feature. 
+		In an ordinary INSERT, the VALUES list can only contains constants and DEFAULT. (am I right??)
+		But in the INSERT action of MERGE command, the VALUES list can have expressions with variables(attributes of the targe and source tables).
+		Besides, in the ordinary INSERT, a VALUES list can never be followed by a WHERE clause. But in MERGE INSERT action, there are matching conditions. 
+
+		Thus, the output qry of this function is an INSERT query in the style of "INSERT...VALUES...", except that we have other range tables and a WHERE clause.
+		Note that it is also different from the "INSERT ... SELECT..." query, in which the whole SELECT is a subquery. (We don't have subquery here).
+		We construct this novel query structure in order to keep consitency with other merge action types (DELETE, UPDATE). 
+		In this way, all the merge action queries are in fact share the very same Range Table, They only differs in their target lists and join trees
+		
+		*/
+		
+				
+		/*parse the action query, this will call transformInsertStmt() which analyzes the VALUES list.*/
+		actqry = transformStmt(pstate, (Node *)insertact);
+
+		/*do the WHERE clause here, Since the transformInsertStmt() function only analyzes the VALUES list but not the WHERE clause*/
+		qual = transformWhereClause(pstate,(Node *)act_qual_expr, "WHERE");
+		
+		actqry->jointree = makeFromExpr(pstate->p_joinlist, qual);
+
+		
+		if(!IsA(actqry, Query) || actqry->commandType != CMD_INSERT|| actqry->utilityStmt != NULL)
+			elog(ERROR, "improper INSERT action in merge stmt");
+
+
+		return actqry;
+	}
+	else
+		elog(ERROR, "unknown action type in MERGE");
+
+	/*never comes here*/
+	return NULL;
+}
+
+
+
+static Query *
+transformMergeStmt(ParseState *pstate, MergeStmt *stmt)
+{
+	Query	   *qry; 
+
+	ColumnRef *starRef;
+	ResTarget *starResTarget;
+	ListCell *act;
+	ListCell *l;
+	JoinExpr *joinexp;
+	int 	rtindex;
+
+	/*this will never happen, since the garm.y is restricted that only one rel name is allowed to appear in the source table position. 
+	However, if we extent the command in future, we may need to note this check here. 
+	*/
+	if(list_length(stmt->source) != 1) 
+		ereport(ERROR,
+			(errcode(ERRCODE_SYNTAX_ERROR),
+			 errmsg("now we only accept merge command with only ONE source table")));
+		
+	/*now, do the real tranformation of the merge command. */
+	qry = makeNode(Query);
+	qry->commandType = CMD_MERGE;
+
+	/*
+	What we are doing here is to create a query like 
+		"SELECT * FROM <source_rel> LEFT JOIN <target_rel> ON <match_condition>;"
+	Note:	
+	1. we set the "match condition" as the join qualification. 
+	The left join will scan both the matched and non-matched tuples.
+
+	2. a normal SELECT query has no "target relation". 
+	But here we need to set the targe relation in query, like the UPDATE/DELETE/INSERT queries. 
+	So this is a left join SELECT with a "target table" in its range table. 
+
+	3. We don't have a specific ACL level for Merge, here we just use ACL_SELECT. 
+	But we will add other ACL levels when handle each merge actions.  
+	*/
+
+
+	/*before analyze the FROM clause, we need to set the target table. 
+	We cannot call setTargetTable() function directly. 
+	We only need the lock target relation, without adding it to Range table. 
+	*/
+	
+	
+	setTargetTableLock(pstate, stmt->relation);
+	
+	
+	
+	/*create the FROM clause. Make the join expression first*/
+	joinexp = makeNode(JoinExpr);
+	joinexp->jointype = JOIN_LEFT;
+	joinexp->isNatural = FALSE;
+	joinexp->larg = linitial(stmt->source);//source list has only one element
+	joinexp->rarg = (Node *)stmt->relation;
+	joinexp->quals = stmt->matchCondition; //match condtion
+
+	/*transform the FROM clause. The target relation and source relation will be add to Rtable here.	*/
+	transformFromClause(pstate, list_make1(joinexp));
+
+	/*the targetList of the main query is "*"	  
+	*/
+	starRef = makeNode(ColumnRef);	
+	starRef->fields = list_make1(makeNode(A_Star));					
+	starRef->location = 1;					
+
+	starResTarget = makeNode(ResTarget);					
+	starResTarget->name = NULL;					
+	starResTarget->indirection = NIL;					
+	starResTarget->val = (Node *)starRef;					
+	starResTarget->location = 1;
+	
+	qry->targetList = transformTargetList(pstate, list_make1(starResTarget));
+
+	/*we don't need the WHERE clause here. Set it null. */
+	qry->jointree = makeFromExpr(pstate->p_joinlist, NULL);
+
+	/*now , we find out the RTE for the target relation, and do some unfinished jobs*/
+	rtindex = 1;
+	foreach(l, pstate->p_rtable)
+	{
+		RangeTblEntry *rte = (RangeTblEntry *)lfirst(l);
+		if(rte->relid == pstate->p_target_relation->rd_id) /*find the RTE*/
+		{
+			pstate->p_target_rangetblentry = rte;
+			rte->requiredPerms = ACL_SELECT;	
+			qry->resultRelation = rtindex;
+			break;
+		}
+		rtindex++;
+	}
+
+	if(pstate->p_target_rangetblentry == NULL)
+		elog(ERROR, "cannot find the RTE for target table");
+	
+
+	qry->rtable = pstate->p_rtable;
+
+	qry->hasSubLinks = pstate->p_hasSubLinks;
+
+	/*
+	 * Top-level aggregates are simply disallowed in MERGE
+	 */
+	if (pstate->p_hasAggs)
+		ereport(ERROR,
+				(errcode(ERRCODE_GROUPING_ERROR),
+				 errmsg("cannot use aggregate function in top level of MERGE"),
+				 parser_errposition(pstate,
+									locate_agg_of_level((Node *) qry, 0))));
+	if (pstate->p_hasWindowFuncs)
+		ereport(ERROR,
+				(errcode(ERRCODE_WINDOWING_ERROR),
+				 errmsg("cannot use window function in MERGE"),
+				 parser_errposition(pstate,
+									locate_windowfunc((Node *) qry))));
+
+
+
+
+	/*
+		the main query is done.
+	then for each actions ,we transform it to a seperate query.
+	the action queries shares the exactly same range table with the main query. 
+	in other words, in the extra condtions of the sub actions, we don't allow involvement of new tables
+	*/
+	
+	qry->mergeActQry = NIL;
+
+	foreach(act,stmt->actions)
+	{
+		MergeConditionAction *mca = lfirst(act);
+		Query *actqry;
+
+		switch(mca->action->type)
+		{
+			case T_MergeDelete:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_DELETE;
+				break;
+			case T_MergeUpdate:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_UPDATE;
+				break;
+			case T_MergeInsert:
+				pstate->p_target_rangetblentry->requiredPerms |= ACL_INSERT;				
+				break;
+			default:
+				elog(ERROR, "unknown MERGE action type %d", mca->type);
+				break;
+
+		}
+
+
+		/*transform the act (and its condition) as a single query. Link it to the top-level query*/
+		actqry = transformMergeActions(pstate, stmt, mca);
+
+		/*since we don't invoke setTargetTable() in transformMergeActions(), we need to set actqry->resultRelation here
+		*/
+		actqry->resultRelation = qry->resultRelation;
+
+
+		qry->mergeActQry = lappend(qry->mergeActQry, actqry);
+	}
+
+
+	/*for a single-action merge, we just stransform it into a orignial update/delete command.
+	but the insert action cannot take this shortcut.
+	*/
+	/*
+	if(list_length(stmt->actions) == 1)
+	{
+		Query *q = linitial(qry->mergeActQry);
+		if(q->commandType == CMD_DELETE || q->commandType == CMD_UPDATE)
+			return q;
+	}
+	*/
+	return qry;
+
+	
+}
+
+
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 3f6eeeb..c139bd7 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -212,6 +212,12 @@ static TypeName *TableFuncTypeName(List *columns);
 		DropOwnedStmt ReassignOwnedStmt
 		AlterTSConfigurationStmt AlterTSDictionaryStmt
 
+%type <node>	MergeStmt  opt_and_condition  merge_condition_action   merge_action
+%type <boolean> opt_not	
+%type <list> 	merge_condition_action_list
+
+
+
 %type <node>	select_no_parens select_with_parens select_clause
 				simple_select values_clause
 
@@ -233,7 +239,8 @@ static TypeName *TableFuncTypeName(List *columns);
 %type <boolean>	opt_force opt_or_replace
 				opt_grant_grant_option opt_grant_admin_option
 				opt_nowait opt_if_exists opt_with_data
-
+				
+				
 %type <list>	OptRoleList AlterOptRoleList
 %type <defelt>	CreateOptRoleElem AlterOptRoleElem
 
@@ -504,6 +511,8 @@ static TypeName *TableFuncTypeName(List *columns);
 
 	MAPPING MATCH MAXVALUE MINUTE_P MINVALUE MODE MONTH_P MOVE
 
+	MATCHED MERGE
+	
 	NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NO NOCREATEDB
 	NOCREATEROLE NOCREATEUSER NOINHERIT NOLOGIN_P NONE NOSUPERUSER
 	NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NULLS_P NUMERIC
@@ -725,6 +734,7 @@ stmt :
 			| ListenStmt
 			| LoadStmt
 			| LockStmt
+			| MergeStmt 
 			| NotifyStmt
 			| PrepareStmt
 			| ReassignOwnedStmt
@@ -7297,6 +7307,101 @@ set_target_list:
 /*****************************************************************************
  *
  *		QUERY:
+ *				MERGE STATEMENT
+ *
+ *****************************************************************************/
+
+
+MergeStmt: 
+			MERGE INTO relation_expr_opt_alias
+			USING  table_ref
+			ON a_expr
+			merge_condition_action_list
+				{
+					MergeStmt *m = makeNode(MergeStmt);
+
+					m->relation = $3;
+					m->source = list_make1($5);  /*although we have only one USING table, but we still make it a list, maybe in future we will allow mutliple USING tables.*/
+					m->matchCondition = $7;
+					m->actions = $8;
+
+					$$ = (Node *)m;
+				}
+				;
+	
+merge_condition_action_list: 
+							merge_condition_action 		
+								{ $$ = list_make1($1); }
+							| merge_condition_action_list merge_condition_action   
+								{ $$ = lappend($1,$2); }
+							;	
+
+merge_condition_action: 	
+							WHEN opt_not MATCHED opt_and_condition THEN merge_action
+							{
+								MergeConditionAction *m = makeNode(MergeConditionAction);
+
+								m->match = $2;
+								m->condition = $4;
+								m->action = $6;
+
+								$$ = (Node *)m;
+							}
+							;
+
+
+opt_and_condition:	
+					AND a_expr 		{$$ = $2;}
+					| /*EMPTY*/ 		{$$ = NULL;}
+					;
+
+opt_not:	
+			NOT			{$$ = false;}
+			| /*EMPTY*/	{$$ = true;}
+			;
+
+merge_action: 	
+				DELETE_P	
+					{$$ = (Node *)makeNode(MergeDelete);}
+				| UPDATE SET set_clause_list 
+					{
+						UpdateStmt *n = makeNode(MergeUpdate);
+						n->targetList = $3;
+						$$ = (Node *)n;
+					}
+				| INSERT values_clause
+					{
+						InsertStmt *n = makeNode(MergeInsert);
+						n->cols = NIL;
+						n->selectStmt = $2;
+
+						$$ = (Node *)n;
+					}
+					
+				| INSERT '(' insert_column_list ')' values_clause
+					{
+						InsertStmt *n = makeNode(MergeInsert);
+						n->cols = $3;
+						n->selectStmt = $5;
+
+						$$ = (Node *)n;
+					}
+				| INSERT DEFAULT VALUES
+					{
+						InsertStmt *n = makeNode(MergeInsert);
+						n->cols = NIL;
+						n->selectStmt = NULL;
+
+						$$ = (Node *)n; 
+					}
+					
+				;	
+				
+
+
+/*****************************************************************************
+ *
+ *		QUERY:
  *				CURSOR STATEMENTS
  *
  *****************************************************************************/
@@ -10935,7 +11040,9 @@ unreserved_keyword:
 			| LOGIN_P
 			| MAPPING
 			| MATCH
+			| MATCHED
 			| MAXVALUE
+			| MERGE
 			| MINUTE_P
 			| MINVALUE
 			| MODE
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index f30132a..657dd9c 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -213,6 +213,29 @@ setTargetTable(ParseState *pstate, RangeVar *relation,
 	return rtindex;
 }
 
+
+void
+setTargetTableLock(ParseState *pstate, RangeVar *relation)
+{
+	
+	/* Close old target; this could only happen for multi-action rules */
+	if (pstate->p_target_relation != NULL)
+		heap_close(pstate->p_target_relation, NoLock);
+
+	/*
+	 * Open target rel and grab suitable lock (which we will hold till end of
+	 * transaction).
+	 *
+	 * free_parsestate() will eventually do the corresponding heap_close(),
+	 * but *not* release the lock.
+	 */
+	pstate->p_target_relation = parserOpenTable(pstate, relation,
+												RowExclusiveLock);
+
+	
+}
+
+
 /*
  * Simplify InhOption (yes/no/default) into boolean yes/no.
  *
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 25b44dd..5567188 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -1837,6 +1837,45 @@ RewriteQuery(Query *parsetree, List *rewrite_events)
 }
 
 
+#define insert_rewrite (1<<0) /*insert merge action has already been processed by rewriter*/
+#define delete_rewrite (1<<1) 
+#define update_rewrite (1<<2)
+
+#define	insert_instead (1<<3) /*insert merge action is fully replace by rules.*/
+#define delete_instead (1<<4)
+#define update_instead (1<<5)
+
+
+#define merge_action_already_rewrite(acttype, flag) \
+	((acttype == CMD_INSERT && (flag & insert_rewrite)) || \
+		(acttype == CMD_UPDATE && (flag & update_rewrite)) || \
+		(acttype == CMD_DELETE && (flag & delete_rewrite)))
+
+
+#define set_action_rewrite(acttype, flag)	\
+				if(acttype == CMD_INSERT)  \
+					{flag |= insert_rewrite;}\
+				else if(acttype == CMD_UPDATE)  \
+					{flag |= update_rewrite;}\
+				else if(acttype == CMD_DELETE)  \
+					{flag |= delete_rewrite;}
+
+
+				
+#define merge_action_instead(acttype, flag)		\
+			((acttype == CMD_INSERT && (flag & insert_instead)) || \
+				(acttype == CMD_UPDATE && (flag & update_instead)) || \
+				(acttype == CMD_DELETE && (flag & delete_instead)))
+
+#define set_action_instead(acttype, flag)\
+				if(acttype == CMD_INSERT)  \
+					{flag |= insert_instead;}\
+				else if(acttype == CMD_UPDATE)  \
+					{flag |= update_instead;}\
+				else if(acttype == CMD_DELETE)  \
+					{flag |= delete_instead;}
+
+
 /*
  * QueryRewrite -
  *	  Primary entry point to the query rewriter.
@@ -1861,7 +1900,131 @@ QueryRewrite(Query *parsetree)
 	 *
 	 * Apply all non-SELECT rules possibly getting 0 or many queries
 	 */
-	querylist = RewriteQuery(parsetree, NIL);
+
+	
+	if(parsetree->commandType == CMD_MERGE)
+	{
+		/*for merge query, we have a set of lower-level action queries (not subquery).
+		//each of these action queries should be applied to RewriteQuery(). 
+		*/
+		ListCell   *cell,
+				   *prev,
+				   *next;
+
+		int flag = 0;
+
+		
+		List *pre_qry = NIL;
+		List *post_qry = NIL;
+
+
+		querylist = NIL;
+		
+
+		/*rewrite the merge action queries one by one.*/
+		prev = NULL;
+
+		for (cell = list_head(parsetree->mergeActQry); cell; cell = next)
+		{
+			List *queryList4action = NIL;
+			Query *actionqry;
+			Query *q;
+
+			
+			actionqry = lfirst(cell);
+
+			next = lnext(cell);
+
+			/*if this kind of actions are fully replaced by rules, we delete it from the action list*/	
+			if(merge_action_instead(actionqry->commandType, flag))
+			{
+				parsetree->mergeActQry = list_delete_cell(parsetree->mergeActQry, cell, prev);
+				continue;
+			}
+
+
+			/*if this kind of actions are already processed by rewriter, skip it.*/
+			if(merge_action_already_rewrite(actionqry->commandType, flag))
+			{
+				prev = cell; 
+				continue;
+			}
+
+			/*ok this action has not been processed before, let's do it now.*/
+			
+			queryList4action = RewriteQuery(actionqry, NIL);
+			set_action_rewrite(actionqry->commandType,flag); /*this kind of actions has been processed.*/
+
+			/*if the returning list is nil, this merge action is replaced by a do-nothing rule*/
+			if(queryList4action == NIL) 
+			{
+				/*set the flag for other merge actions of the same type*/
+				set_action_instead(actionqry->commandType, flag);
+
+				/*delete the action.*/
+				parsetree->mergeActQry = list_delete_cell(parsetree->mergeActQry, cell, prev);
+				continue;
+			}
+
+			
+			/*the merge action query could be one of the elements in the rewriten list. 
+			//if it is in the list, it must be the head or tail.
+			*/
+			q = (Query *)linitial(queryList4action);
+			if(q->querySource == QSRC_ORIGINAL)
+			{
+				/*the merge action is the head, the remaining part of the list are the queries generated by rules
+				//we put them in the post_qry list. 
+				*/
+				if(querylist == NIL)
+					querylist = list_make1(parsetree);
+
+				queryList4action = list_delete_first(queryList4action);
+				post_qry = list_concat(post_qry,queryList4action);
+				prev = cell; 
+				continue;
+
+			}
+			
+			
+			q = (Query *)llast(queryList4action);
+			if(q->querySource == QSRC_ORIGINAL)
+			{
+				/*the merge action is the tail. Put the rule queries in pre_qry list*/
+
+				if(querylist == NIL)
+					querylist = list_make1(parsetree);
+					
+				queryList4action = list_truncate(queryList4action,list_length(queryList4action)-1);
+
+				pre_qry = list_concat(pre_qry,queryList4action);
+
+				prev = cell; 
+				continue;
+
+			}	
+				
+
+			/*here, the merge action query is not in the rewriten query list, which means the action should be deleted
+			//It is replaced by INSTEAD rule(s). We need to delete the action  
+			*/
+			post_qry = list_concat(post_qry,queryList4action);	
+			set_action_instead(actionqry->commandType, flag);
+			parsetree->mergeActQry = list_delete_cell(parsetree->mergeActQry, cell, prev);
+		}				
+
+		
+
+		/*finally, put the 3 lists into one. 
+		If all the merge actions are replaced by rules, the original merge query 
+		will not be involved in the querylist.
+		*/
+		querylist = list_concat(pre_qry,querylist);
+		querylist = list_concat(querylist, post_qry);
+			
+	}
+	else
+		querylist = RewriteQuery(parsetree, NIL);
 
 	/*
 	 * Step 2
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 8960246..2733e5d 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -125,6 +125,7 @@ CommandIsReadOnly(Node *parsetree)
 			case CMD_UPDATE:
 			case CMD_INSERT:
 			case CMD_DELETE:
+			case CMD_MERGE:
 				return false;
 			default:
 				elog(WARNING, "unrecognized commandType: %d",
@@ -1398,6 +1399,10 @@ CreateCommandTag(Node *parsetree)
 			tag = "SELECT";
 			break;
 
+		case T_MergeStmt:
+			tag = "MERGE";
+			break;
+		
 			/* utility statements --- same whether raw or cooked */
 		case T_TransactionStmt:
 			{
@@ -2235,6 +2240,7 @@ GetCommandLogLevel(Node *parsetree)
 		case T_InsertStmt:
 		case T_DeleteStmt:
 		case T_UpdateStmt:
+		case T_MergeStmt:
 			lev = LOGSTMT_MOD;
 			break;
 

diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h
index 9fe6e4c..8b75855 100644
--- a/src/include/executor/executor.h
+++ b/src/include/executor/executor.h
@@ -194,6 +194,7 @@ extern DestReceiver *CreateIntoRelDestReceiver(void);
  * prototypes from functions in execProcnode.c
  */
 extern PlanState *ExecInitNode(Plan *node, EState *estate, int eflags);
+extern PlanState *ExecInitMergeActNode(Plan *node, EState *estate, int eflags);
 extern TupleTableSlot *ExecProcNode(PlanState *node);
 extern Node *MultiExecProcNode(PlanState *node);
 extern void ExecEndNode(PlanState *node);
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index a5f5df5..38bea7c 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -261,6 +261,15 @@ typedef enum NodeTag
 	T_DeleteStmt,
 	T_UpdateStmt,
 	T_SelectStmt,
+
+	
+	T_MergeStmt,
+	T_MergeConditionAction,
+	T_MergeUpdate, 
+	T_MergeDelete,  
+	T_MergeInsert,
+
+	
 	T_AlterTableStmt,
 	T_AlterTableCmd,
 	T_AlterDomainStmt,
@@ -511,6 +520,7 @@ typedef enum CmdType
 	CMD_UPDATE,					/* update stmt */
 	CMD_INSERT,					/* insert stmt */
 	CMD_DELETE,
+	CMD_MERGE,						/*merge stmt*/
 	CMD_UTILITY,				/* cmds like create, destroy, copy, vacuum,
 								 * etc. */
 	CMD_NOTHING					/* dummy command for instead nothing rules
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index b591073..392d7f7 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -146,6 +146,9 @@ typedef struct Query
 
 	Node	   *setOperations;	/* set-operation tree if this is top level of
 								 * a UNION/INTERSECT/EXCEPT query */
+
+	List 		*mergeActQry; /* the list of all the merge actions. 
+								* used only for merge query statment*/							 
 } Query;
 
 
@@ -990,6 +993,30 @@ typedef struct SelectStmt
 	/* Eventually add fields for CORRESPONDING spec here */
 } SelectStmt;
 
+/*ZBX: the structure for MERGE command statement*/
+typedef struct MergeStmt
+{
+	NodeTag		type;
+	RangeVar   	*relation;		/*targe relation for merge */
+	List		*source;		/* source relations for the merge. Currently, we only allwo single-source merge, so the length of this list should always be 1 */
+	Node	   	*matchCondition;	/* qualifications of the merge*/
+	List	   	*actions;		/*list  of MergeConditionAction structure. It stores all the match / non-matching conditions and the corresponding actions*/
+
+}MergeStmt;
+
+/*the structure for the actions of MERGE command. Holds info of the clauses like "... WHEN MATCHED AND ... THEN UPDATE/DELETE/INSERT"
+*/
+typedef struct MergeConditionAction
+{
+	NodeTag		type;
+	bool 		match; /*match or not match*/
+	Node		*condition;/*the AND condition for this action*/
+	Node 		*action; /*the actions: delete , insert or update*/
+}MergeConditionAction;
+
+typedef UpdateStmt MergeUpdate;
+typedef DeleteStmt MergeDelete;
+typedef InsertStmt MergeInsert;
 
 /* ----------------------
  *		Set Operation node for post-analysis query trees
diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h
index 037bc0b..236b0c7 100644
--- a/src/include/nodes/plannodes.h
+++ b/src/include/nodes/plannodes.h
@@ -66,6 +66,9 @@ typedef struct PlannedStmt
 	List	   *invalItems;		/* other dependencies, as PlanInvalItems */
 
 	int			nParamExec;		/* number of PARAM_EXEC Params used */
+
+	List 		*mergeActPlan;  /*the plans for merge actions*/
+	
 } PlannedStmt;
 
 /* macro for fetching the Plan associated with a SubPlan node */
diff --git a/src/include/optimizer/planner.h b/src/include/optimizer/planner.h
index 805dee7..ae705ec 100644
--- a/src/include/optimizer/planner.h
+++ b/src/include/optimizer/planner.h
@@ -34,6 +34,10 @@ extern Plan *subquery_planner(PlannerGlobal *glob, Query *parse,
 				 PlannerInfo *parent_root,
 				 bool hasRecursion, double tuple_fraction,
 				 PlannerInfo **subroot);
+extern Plan *merge_action_planner(PlannerGlobal *glob, Query *parse,
+				 PlannerInfo *parent_root,
+				 bool hasRecursion, double tuple_fraction,
+				 PlannerInfo **subroot);
 
 extern Expr *expression_planner(Expr *expr);
 
diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h
index 49d4b6c..436d459 100644
--- a/src/include/parser/kwlist.h
+++ b/src/include/parser/kwlist.h
@@ -229,7 +229,9 @@ PG_KEYWORD("lock", LOCK_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("login", LOGIN_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("mapping", MAPPING, UNRESERVED_KEYWORD)
 PG_KEYWORD("match", MATCH, UNRESERVED_KEYWORD)
+PG_KEYWORD("matched", MATCHED, UNRESERVED_KEYWORD)
 PG_KEYWORD("maxvalue", MAXVALUE, UNRESERVED_KEYWORD)
+PG_KEYWORD("merge", MERGE, UNRESERVED_KEYWORD)
 PG_KEYWORD("minute", MINUTE_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("minvalue", MINVALUE, UNRESERVED_KEYWORD)
 PG_KEYWORD("mode", MODE, UNRESERVED_KEYWORD)
diff --git a/src/include/parser/parse_clause.h b/src/include/parser/parse_clause.h
index f3d3ee9..e4312d8 100644
--- a/src/include/parser/parse_clause.h
+++ b/src/include/parser/parse_clause.h
@@ -19,6 +19,8 @@
 extern void transformFromClause(ParseState *pstate, List *frmList);
 extern int setTargetTable(ParseState *pstate, RangeVar *relation,
 			   bool inh, bool alsoSource, AclMode requiredPerms);
+extern void setTargetTableLock(ParseState *pstate, RangeVar *relation);
+
 extern bool interpretInhOption(InhOption inhOpt);
 extern bool interpretOidsOption(List *defList);
 
#34taskov
nikolay.taskov@sci.sc
In reply to: Peter Eisentraut (#20)
Re: gSoC - ADD MERGE COMMAND - code patch submission

Hello,
could you tell me where I can find the latest version of the MERGE PATCH
file? I need to use it on PostgreSQL 9.3.
I couldn't find it anywhere in git.

Regards,
Nikolay

--
View this message in context: http://postgresql.1045698.n5.nabble.com/gSoC-ADD-MERGE-COMMAND-code-patch-submission-tp1956415p5785822.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers