Contention preventing locking

Started by Konstantin Knizhnikalmost 8 years ago19 messages
#1Konstantin Knizhnik
k.knizhnik@postgrespro.ru
3 attachment(s)

Hi,

PostgreSQL performance degrades signficantly in case of high contention.
You can look at the attached YCSB results (ycsb-zipf-pool.png) to
estimate the level of this degradation.

Postgres is acquiring two kind of heavy weight locks during update: it
locks TID of the updated tuple and XID of transaction created this version.
In debugger I see the following picture: if several transactions are
trying to update the same record, then first of all they compete for
SnapshotDirty.xmax transaction lock in EvalPlanQualFetch.
Then in heap_tuple_update they are trying to lock TID of the updated
tuple: heap_acquire_tuplock in heapam.c
After that transactions wait completion of the transaction updated the
tuple: XactLockTableWait in heapam.c

So in heap_acquire_tuplock all competing transactions are waiting for
TID of the updated version. When transaction which changed this tuple is
committed, one of the competitors will grant this lock and proceed,
creating new version of the tuple. Then all other competitors will be
awaken and ... find out that locked tuple is not the last version any more.
Then they will locate new version and try to lock it... The more
competitors we have, then more attempts they all have to perform
(quadratic complexity).

My idea was that we can avoid such performance degradation if we somehow
queue competing transactions so that they will get control one-by-one,
without doing useless work.
First of all I tried to replace TID  lock with PK (primary key) lock.
Unlike TID, PK of record  is not changed during hot update. The second
idea is that instead immediate releasing lock after update we can hold
it until the end of transaction. And this optimization really provides
improve of performance - it corresponds to pg_f1_opt configuration at
the attached diagram.
For some workloads it provides up to two times improvement comparing
with vanilla Postgres. But there are many problems with correct
(non-prototype) implementation of this approach:
handling different types of PK, including compound keys, PK updates,...

Another approach,  which I have recently implemented, is much simpler
and address another lock kind: transaction lock.
The idea o this approach is mostly the same: all competing transaction
are waiting for transaction which is changing the tuple.
Then one of them is given a chance to proceed and now all other
transactions are waiting for this transaction and so on:

T1<-T2,T3,T4,T5,T6,T7,T8,T9
T2<-T3,T4,T5,T6,T7,T8,T9
T3<-T4,T5,T6,T7,T8,T9
...

<- here corresponds to "wait for" dependency between transactions.

If we change this picture to

T1<-T2, T2<-T3, T3<-T4, T4<-T5, T5<-T6, T6<-T7, T7<-T8, T8<-T9

then number of lock requests can be significantly reduced.
And it can be implemented using very simple patch (attached xlock.patch).
I hope that I have not done something incorrect here.
Effect of this simple patch is even larger:  more than 3 times for
50..70 clients.
Please look at the attached xlock.pdf spreadsheet.

Unfortunately combination of this two approaches gives worser result
than just single xlock.patch.
Certainly this patch also requires further improvement, for example it
will not correctly work in case of aborting transactions due to deadlock
or some other reasons.
I just want to know option of community if the proposed approaches to
reduce contention are really promising and it makes sense to continue
work in this direction.

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

Attachments:

ycsb-zipf-pool.pngimage/png; name=ycsb-zipf-pool.pngDownload
�PNG


IHDR���'W IDATx���y|��8����}�fws'$ 	�#����P�(*�j+`/����<�h���E�E�V�\U��V�3�I !!���#{����'L���Iv'���f�}v��Mx2����<!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!��@7`���)))�
�?���~�a�=f��@ �U�9s����'�K�.=~����`��]��������}��a�K.�:tH�P��
6���K�j��f�X�V�@�"���h��V�^����c��ju�r��s�����������j�0UUU��x��%�H������qO����Y�t���^����������������]�v]�t)��n��mBB
t;�aRSS�J�@7��h4r�YYY��=������^ot[��LF6�JeVVV���1c��E�}���,�F�}����s:����A�T���
t+P/���a�N��R��Q�F�5g��={������k����B,���0iiir�|���5�{*���n���{��T&��d2M�8��?������]�vaO&��3ln�>VEhH������qqq�������y��]{���
��m���?��O�>�Dr����?�!��G� 4�(�������3g���
H{B�S����=���V����.\HvW�X���_P�BW�q���u�]�nuu�����Cnn����I��%K�=��w�
P3B�ez���*�DB��v;��0c����~G�"���W^^�/9q��J������h4�F��2@�C]�(�����)�-���#G^|�E��Mvw���x��{����._��2������g�y&''���^R���7o�L�����_|�l�z��\�Gy����lS5s����ggddh4��y����~��'��I����z�!�}�}��4�r��I�&���������y����cll,X��_�������\N�-!���p����D����z-Kii��]�.^�RS�V/[�l��i������o�y��w�iFWf��E6,���~z��w@\\���#KKK�p@���Y	�Yu���s$(:��2u�=U�{�����#G����������q��,�c���S��3���0L7�tB�?0(�"���c��!&&�{�����U�o�=�l455UVV�m�Z��c��?���V�������~��<����M��h\�n]LLp�;B0�n�:r���z�~���oz���z���o�v�R�Z�NKK�3g��/���7�p/%&&>��sz������%K�dff���n�i�&M�D�8��~���3gbP��agE�Yue��Qd��vWWWG��
3�S�����I����#2����o���'�*�
��"�����8v��=v�X���c����VH���;F���4��_�������l6��w��t���+W�[�n�Z���e�������tS�W-�������#r��W��j�4��_���u�dee���v����M�V69x�`UU��f��]�B!���@��
�bq:ONN��������W�m��r�z{L���SA�{*2�8t�P�u<��e�AEePd�?��s��=p�n�tT����fR��sL�>}��	d�����G��������#G�������n���y����V�7�|�g������n���y����
6>|���UKf��M6jkk|��;����?�����N
�R)�"����SRR�vQQ���������_��&n�%��VTT����HIll,7!�)�����l6����3��r�-��;v����}8&BW����S�:�^)B	�2(2X�=~�8�&(�"wUUU��<��n)X�=q��������z����eY����s�qcb;]<���s?���^|��
6t|V�������lo�����?��Bz��e��������}����.,,��O6n��V�a��~���]�p�n���G���N�M����d<3:t�Lo��20s��^�+
vV�tV�s��g�����u{�h�T*��l���v�k�BB��������#�bq||�R���{�z<�|��
�-++��%%%��C����s��|�	��j������{N���&�[�����z���m�*z��g�}v��u��������r��q�n����������d"�a���I�������

�����	J\,������9s�L���P�������L&{���,X�c"4�`O���K"#���	!4�0�/����H$9rd\\�-***++���"�
�$^�nC,�tq�1�������v;�U�yQ���
�Dr�m����[�_BZ;����\������8.L�am6[sss�I�]��]r�\�12��|�1���F�:w�\�D�
��UW��`gETWWs���D"IJJ���{�t�U�V���W�D�
�=UW��HO�p8�k�h4�2!4�p�����&�O���c��B (++#1���OGG6�r9��������Vn�c�9���}���.\���t��-�0a�_���E�q����_|�E��O�:��-���d������}��.�?p�Lu;+�rg���[^^����s;w��~��
{*�fO�_`;!!��:�G�^xY���B��0(�"��!3f��|��y���
��={6|K
�B����M5�L!����@���������'�"���{���~�Z"�y��\���7����;x��M�6�������9,EQO��0�-�B=��*��U�Z[[[ZZ�6�!!��T���������n���:�-z�2�� ���2(����YYY$C���g��{�V:<y����'�,�r�esssi�{��yyy�6�k8�y�������i���e��W-�����;x��7w��MF�v������Mx��������)����n�����f��������hvV�3����lWWWG��
K�SA�z�C�q��f���q�Tll,����f~B��,��H:}�4I�����b1\�{���%Oc��"������l$$$,Z��+����"g�����_��|��-\����rO"��p_*@*��
���_9,�rkF���]u�Ud[.��������@���������^�*�&����U�:+>�X��3z���������=7��{���{���Tv����>#������&M���Q�F��7���;{�����B��#�P$y<���"��� 7�,����N�8�+?z�(��~���7�,�H`������EEEIII�]w������[���?���_������_����U��[�=�j����x�������S�;vp9z���666����8��&���_����T�������
��1c��Mx!��>�(&&f���_JOO��'�O����>��{�m��%���:�����^g�g6�_y���^---���o�pX���SE����eK^^y�J�����t:+++�z=j��b	s�)��)�"����f�qb����������U__����r�3�L�r�����3����s�Nn�l��_��R��u�]$r���[RWWw��iR�T*o����+W�?�i������{��m���O��`�����`0�Ot�
.(��zC�����=82�L8�I#G����;}����>r��=���������y��?��O����;�(uVajhhX�~=7�!�)����S�\�'�|�R(c���Gd�z��n�	G����2=�z���+|�Z�r%�>s�7�������v�.((��9�}�Ycc�C=2����e����1���%<���������d����|�����@���z�����?����|�q�o�/���_�j��q\�������_������<x��~�s�N2���_njjZ�d	7�������+�/&�`0r-�#F�����#G�t5��������k���i�����N�!���Wd2���_���/v�9����[��'�|������M��w��5k�m��o����t���:��U4:+���\~�������a����w��_�^�;�A���v?��aO��
***~��+V��7��3����>{���m6[�A�W�Bu
�h��������A��rZ�:.�����������z��^ZZZPP�.����%4M���fee���=z�����O�d2��=�d2544|��W�%������=R�T'O���[6o��b�
�.���C!���/_���{��}�f����������������e�"X�3a��0;+��`0����3�����(��N��*''G��9�s��E������l	����������������(Lg%��%�1F����)s���6l@�?>������Q�s	����fF��
���A�S�d��S�&%%i�Z��Q^^^XX�q���������t��G�aP���-kmm-,,����1c***:&���D����C.�j���������	�7���in���R�T���~�_��f��f�u|�
������uuu����a���8��S�<y�V�-**����TXXH�����G���&o_�pa����-[V�X������i���TTT8�N�Z#U�+���{���P(H��w�}W����������,�����jjj���+NGQ�����;&L(a���			���%%%�N����fa���/�?���k��Mjj����ohbb��Y��V��={�|��7�;wn���l�����;N�>}���kN�:5--���S���T���������%K�H$�O?����I��%%%�,+�_g��8g����s�NN����t999���eee�����J�����"\�6w�\�^�o���/��#F�8q��V��l��pVN|>_ccc�L�N�1�����T�?�R��h�9\������� ��h�fF��������`�^�ojjf4lLL��na�N,���
�I���V���g�[T�K�����p���RSS $.PYYY^^���n0,K�����!�B�A��"�P�%$$���GJ���#X!�B!4t�H��$��H0���2L=>>���S���o2����{l��8//�W�Z�666V�$�d��V�
��������'�D0�N)))���H$r�\�Q�999�d�U�T�@�K�UJ��ry~-�F#��B
�V��[1�B�M�r�:�!HFC�N�:�������
M&��Q��og�*-
�B��#���L&��������Wp�h���L��$I~-U*U��`���P�n!�����,`\��"X,����jC��o�����SVV���or�7n'E�H$=z4��R���\.a2[���8��QYY)�� ..���N��2)))*������������Q*�*�Ja��@VV���
���F�	�����d��x<eee}>�0Y��,6�0.�B=��BEX]]��h���!���555��illgA�BA�2'O���/������p>���(J$�<yR���t:�J����>����}��:��D�2����r����d����_Ka�!�BHx��w��a2�BC	�ddd��b��#�W#U!���0���!�B`Pf a�ai��=0w�\~��i�4�����j�����4�0�� ���otBh������a����[���������������Y7n�l4��hi�$a�"g�����I~��'�������X��%����}�rr�lt�$A�h�o3B�
�
(;��
��V?h�{���9�k���2��&Q���B�T0�����B�UCC��M�V�Z��<���MMM+W�\�x�������A�y%e�����"�����c�qz�N��.ok��.Nl��r�.r%���a
&w��hq�n����6Z��-.�M���-��+�j�
X��-�����6�0H(I�,=W1!K6:[>v�2+�,����'������OK���
�����K\��o�z�z�����yA!$4�:�B����kcbb/^�k�.RRRR�h�"�j/���B��}�#V2Zj�"�Yl4�bL���h��"�Icc�&����(5&�����l��r6�k�������r����9�b8�VR���������0�PL�4}�<s�<s�|l�<;]�J�/�K��xq��Ts���ok	X[��@%f�L�
jKK����������������i���d��a_�@��+eF��d0.���PPP@Q��Wu:�K�.����1c�T*-**����B���T���
��F�D��0�jS���v7�ehb(Fj�T���v���t��n���+�&�2,���A��;�`���B�#=�����UL������������$=��^������}�Mg�p�M����p�����P�A��`Y������@�:����������E1�"�bbE&��h�E��dCG�t>N�����J�8���so�s����#�������Yv��A:�����mG���Y62`�tE�:"�*��@7�p��8��q��yV�|�xyfh���ZV���1����t���������8�m-�38�",�:2*��a���`�%�����r0(3��&��eB(�z��E@�������WG�^������/�9H��qdCN���NFK��\�h��N/��(����K�3Z-#�����������2�(.A��7r��]��r�A:mit��H)���$=Q3$R�+�����$�`�dc��c2e�����OY�bB�5u��*4]�t\�g�\u����3+h���'���������n7��S��BP�����g����nBW(�.�bV��q���/59��
D�Bh�+��)as����&Q��V�� |�c����o��5X�MS����g����K�?k%��g�����PXXXRR��I]A�+X���J(��Qi����iU�&6Q��Z��25�R3*5��0j�!�q����D�����^[����C�����f�4�t��:��:�:�Y��q���Hc��c��3�������Jou��l���i��"wI�����F��9s�n���;�9��.�����	������"5�"�H�������?���j
4� ����g�B,���0(3�����b�B���V
H{Bh�����en�N�_��RW#\j|uCh�/�m�75����N�3��%�@ �e2Jvy��{�tDmcp���A:"-�l���5uGJIL��( �Wot=.��bU��'���x<��8X	���������/��4g�yzc���_H����;��lk��M'[�]QU�p8��NG�����	E!���m�����p�8���	qB����`H!!aPf )��A*Q;�\����B��������X�Mu������HF�4��K���I�'+:����p�.p7 ������qcp��@��;+��H�N���jRAE+u�V����J�g����RH�����A(Dc�Y�)bA����s��+���v�=�>S�:{�}���;��p��������	�)�e�JO���,$ ����t7��t�dj�����{5��^��eTF�����rq�B���@��:&i`P!��'�D��5�zK�9\�����[(L���NSd��������}�jK������������]�H/�h��e_�H:�q��9��q�����i����%t]E�����O���s�*�����8CW�s�rrrr�s��j�O��E:��1=���.o0Z�MV������R��\�����tPF{�t��n��]/g|���i� t��'1!$$����� N}��V�����!������-i�����{����E�����m6
BI+��8cFK�������\�5�6lG/���9�$�����Rqa�>$���\0����9rZ����@����}���t�}.���#.���z�Cx��:N���\*���Hi��n�����]'g�t�����Eh�
���s�=��_�z���w������K�J IDAT?�����O����~����l���lo�D[g�����q��Z�+dKB(z��7Ec99
�U��^N~:���Gn���W����5���z��Z�nw]c]8o��jV8�	�Y�:K6&[>6K6z�b�Qd����-�����5��u���'�O�dh��������	FC�Z�&����q^�����������@��.}��e��\���=�X�����z��]��b�466��7o��y�'O^�vm��@��HH�.��Bh8Y��F6.�,I�4�/��gE��u��Y������m������6�+����%���H�������u��y����I��z�%))�e�jKu������$2�Y.N�����f�D�,�$�j#���JUP�����K� z�W(�`�'X��0����1�L[�l�8�_.�o���`0<����=�\ �6m���{��Y�m��}���YG�\���=�������O�v9�!���)��������7��d����~���/�Lt���|��W?)Ba�e�Q�:�
9��M�a����S��\0�]g+q����r�8^!N�����QRM�T�*�$2*���
�_F�e��K���5��(�;���M~{��Q�i)�����2[���H������`��1$�2Em��)66���l�����-Z����o��g�y��E:p��O<���/�^��\��#���PRn���������\�����%!%+rY�v����k)��iXR����kU#4y���S �O!C`g��e�Z���3PM<d2YJJ������F�������v�H$�J�������
��
���/	��
�]^@Dj5HA��\�L&�������R��a�>L�D���D=-M���p��d#gd�(�%3�8ZG+��\�*���?���T1���.p��iWC�YpV�Z���s��j���gPA@�`mkI�d
vXF���LLL�������^�z���O=�TNNNHPf��y�}�v~v������������i:�SG����T���qq���b�n�veB�L?�27i�}s��yc�����woX�������h���---K�_�����t�S���r�H$�\M��<�h,��-��{KN{����:��|����aY��I�e��~?�,+��r��ju�#0�DL�d�8)+��i�D�"Q���	:V!���������;��]h��v���&��9���9.z��n[��Q��W�_��b�?J�B!p�N������4i���������s�����!����@�����������t�D&�:Q�����e�.��K���+HI�n��K��!%�a2����H��#�B�,�w����e��:B(��~��fknn�������N�����:�N�su�Pk�IW�)W�)���\E�Z*N�T�,+��1�`��.�	�:JHH����������$"�L5B�!V'0j�����_�h
�
{���x���;���:���m=�l>������������y������CZ��s����}��]�x�o��j��nBW�!�Q*�������Z�b���HHH��������������x��N��4�{�A���eU-rA�<G%��^�%!$�>��OU�����i:�����f����1�Bh��1��e��3s�i�V����aD=.C0�L�H�E"����L�*S���q�����r��]4���'�Zm~��g���+��rW�Y���g��m�d;L2����WB�������c��Y�lYEEE�W)�"���������S�N�X���\"�������c�&&v�L�H$�1c��5*�k��-m�2�k��%��E?�m?����������SE���1c�9W��d����J�i���*�E�����%K�p:`&;;[�O�<�JNN������9�X,��������A�����(��01%~"�������~�w����?t�u���@!%��/�[�J�Bry��v1(���`��V��2*$�������������
>�%����Z��^��k�
� ���
�,_���{�}��7���N+�4-�������D��t�p�dgg�)N����t:�M��!_�{D���)I�D"��3�s)�����=�.��E�<\��S�?�p4M��#�������V��e��c����$�x~a�
�T��'/��e�Qk BE^��r
���W�����p�}nzQ[�E�@v��$�:�Q�r��Z���G5<[����&��N���
Os���S1����!�IKK��aCII��5k��,��h�j�!at:����S��������VkAAA�-���JNN.//?w�\8W�w�I��]Y}���O`�&5+���m���o����U���������p���\s�T*=|��0�M&M�uuu�K��L�6������C,R������[[[8WzzzFFFMM���'8�H$5j��3g8L�2E��}��w�.]��L&f���~���Zm^�B�SR�{�����{.������!���h����NV�@�b#�������r&C��2%��bB��]��(Q'�BI.���M���u;��F���c�t[�}�K>���a���cv���������B�2A���gk4����O?��+�������?��c{��}�������F�^������p�pHF�p����7n�;����83��d/#��8���24%���l�����J�^�&�>����(�O&�1#���wr�V%���X��j��8Y����
sub�8���GK9�>�G�DC8�n����$�5������B���-?���#(D4!�"����$"�Q����e$��l0���e@%ft�PD+Z
0bFs�PESb�(��Q�B1��(�\.�F�#2��\��n�pa�,�]~G��^�i���/��5��]BHxC&(C�1b��!�$4SUU555������\�XL�E.��?���[M6Z�-��:y6�M�.�*(�BCZ�q��cn-�y5�����X������C�H+�x"�gd;d���,�o�
�VZ�(��Up���Th��^�Bk�~�jK�N�4),KCjR@DkIg��:)���,6�6��5>{��Z����l�>G��V����u�bVx�� 5d�2o���[o�R�m��%K�,X�`����d��=7�p���s�j�M���h���O�&�S'�Z&��]������~�e��)�a��MB���B-�I/e���C����9R���
���E�7R_�Ews���o����_6�~�BG���Wdt+��t�};>���F �	�m>{��v�g���_"�]�����c-���h��5d�2a��u�����/_��/���EQ$
�����m
q"�f���pI��[>�k�-��S�
�*���e�j��a��$"�����*��Vo�:z��7�#��xq,�����WU����`
F�hXm^5C��v:Lf8���]P��W�` ����Vy���7���_���vI����T`D!4t
��LCC��M�V�Z��<���MMM+W�\�x���5���mr���-`��di=����.9I�.��B�GE���W�a��&9�(�A1x�L�^�����m1�������5����'W����/��{���U�K�Z���i���?2��aaV'g�iZ���iZ�O��
��DQ���$������C�0B��t�����~�L�b��j<��������0�>B��3��2�v���������������,Z����M8u�J!I)�V@d!Xm�xd�JR��[x��1aZ��bbb&N��c5n�	&D�=2#%��\����_�`��U]������'��F�{��l���f�2��A�S���|����y����h4����T*�9#�I@ff����t			�E�R�L&������{��
��S�������3L�T�$�KF��.Rz�,��k�Y�AO[a�R	EQ,�������� �Ao{MrD�H!��.��g7�>�����_�o-��B
C;(�t����N�s������3f��J�EEE�}�����m��������!�[>��2ZY�Z�a����6B��e�X
{��P(�������Q)3������]��B��\\<k��-F'v18�������[��}�'g��};iFF��l��l�|�GQ�����;F���6�J�T*/^�XRR"��t:��l�\0z�h8u�����t���n����N�s%&&&$$�����Z
������w����l�9q�����&%%�,[]]�s�~X����M�,��B�3��2]aY��������u�����,s��i �&�@�v���WmB�O�r
������~|I�_~����W?��c��~{�y+�@	���xq�����v���w����V��RPF�q��9n�{����"��gPf�#��:�!q����U�f.)L�-��Bhh1*�\������k���v����k�����:O�@�������gt�$��Z[�jIj���w>��S�B���
��NG��U�|�m��fI�L�2�����!�\t��a�`a����A
'?4�z�n>���#34��4��VH8��V~���B]A0(30���N����U-�%����D	���kB��Q�O6B��\b�F���f�����p�C�(�^Iz��v����}d���m�Y�;�:�B�e�S�����W��{n��]�&!�P�$��:���K��;�}� �pg��![�B����gc�&
���>#��/������u�6�B�
e�L�C����2��q����4%��!4X�>���N$.������7�./�
SR�&atQoBE�<�
w��i����X	WN���������!��0(3\�������I5#j-B��t�_�o�O������&%��F!�Pti�����<���&�="C���?�;���
!�����/
RlnUhv�����I�u���Q!����/}���n*��P�&�(Q�n�A1��gWU6o��}.D+B(
�'>�$M��D��IR��
����,��Bh����]������w�j��}��g�q�N��RX�s��B�aTN�*�y��������/O��������x��"�P4�VO�t����i��R�_�>~���kB�A
�/
��������c��#5��QlBE���W{�C2g@��xq��\�J2bb���jBE����#���U�=Z�^��������Bu	�2@.N�j�L�������5�B���KOY������W�U3�=!�O'��hV����B��7���8PMB!4$�����$Z����,K&1��Z�^.��[PT�b��B}DS�;�J����^U[���kX>�Q��&%>[5u\�|`=/<p��}�@=5�O�t!�;W)'��_��rT�B�������I!��
)3�+��X������dRN����6B
 �|C�}���\U���8\���\�X������mh=PR�7nW#3>�7��!��KBI����t�&���S�
v���!�z�A������-@CQL����mBu��������I�����<M��2������X�cO���q����7!���g3?ymZr��)9w��	��B!�
���e�;��0~,>:8����;,����`r�j[�
��V!4��(����^���S���G�`��P�pU�te�U��?�z�b/-�6����2!�� u���~{�5^�=$#9_Y�%���
!���A�)��� P�aB^=�a�:���\VY�g0%jof(i���B}AF�8y�,���5�{*�rdc�c�^2O{���Z��e�M��^>!+���n0B�����
���S��1T[�56�
`�B
-��\�@6�<�M�|^��5��MB�eD�����q��H��4��|�a��}���d;��5�����X��?BA����*nw|��:yvt�B}�������I{D&������A�k[�Bh�������o rk��!'�kD����a�\a����{�����B��Q9���]���M�#��\I��?s��)Fl��_�z��!n���SS����A�!4��R~���ONi������L�D!���Kb���i�L�P(z�)�@,w_Y�A6�N���W1 �Dsb�����+�o�L%i������t�c2����pE@�E���b���9�L&!?L���R�`�$�D"aNG��I�D"���ry��P�:f��d�K��a�Q���x�z�S������)���A{��j�����R��s�cz�L�+�!����x_��w+x[����Z{��
!���A��d�������kj4��t�W�c2��[���
r�!�T>va��g���_��q�
qJ����T�H$
�aA�l���k�Z�N�T*8�ZNQ�`�D"����Hh0@�R	suE	�I����l�H$};BLLLD[t�3*��P���	�i~�����2"�I�s{����
�+��V&j��LL|�����)�n�B()�+���G��Ij
,���;�7w�.�B�+��������9u�T�5�r��`hhh���>]z�&t�qA��k��x2O����%OX/�<����y��YZZZ8
��Q�F�D����744p����a.^�(���z��Q����`ffffuu��&����������a�N,�?^�O2>>^�PTUU]�p�oG����h��pT�2���/D���;8�f=�z����
�2S[��<mMHP���\|tf�����VLM��y�u��,Bh`%oM�s�K�~gv_�_�
g~2��B!4�aN�)�m9e�4���LPdE�0�zj��s�I:L+��`�v���������o��i�m���������[o���444|��Gw�}7�<8���#�"c+/�����m�t��l��W�=E�$�������}�e���f�����!����0��m����7�7�����>^��4�
C!4�aPFh���~/�;��/���
Y����}
��U2>�GhP�v��v@kk+�6j�(��l!��N'w�������#��s�^�oll�7o�������?
�u�V��2�
>����2�G7����n��5��|�hn?Z�K
Ir�B�K���|���~�����~k����?-���!��0(#0J.�Z��H�?|����&�b�����wV[?b�@�Q��U���"�����`0>|��p<������Q�<��`�y��w�
r�|������'����;v����].��5kf������r
K��}�\U�����:V������v���H�i!u\���U��v��fJ����!����q��8������O�m���U��8�!�P?`PFP2���� �|����h�}^�yP��o���v��7G�������<k������$��L&KJJ*--
]�e��E)))���{��gH�<���z�j��wF����Le�
�j_Mm�����_c�~�M��i����Z���}��&j����d�B�'f�������D�����-����)�\��!�0(#(n���2O���n����0d�F'���o����`2+��)iT[������^x���>��q#)IKK�(������k��y�}�v�m��o����'�Z%�)&��.<������]���R�R�_n���-Qu�����?������,��M�z���>:x�`�/���*Ru�"�jf���[����4���>��{�����7�m!���A}�?�pY~�����lnk�	n7HA��L�iexA�TQWE�����(j��
R��G?�^!	eJKK�-[�q��]�v=��3�]w�������W_�+++���
Y�|��+&2����R��X8�8��������fd��Iwu���^8^�nW*��O�KZ��c���7�xc�/���*Ru�"�j���{���/)G���1��*����_�6�v9�!�
e�eZyA���fO�������\��aS����S��j�k��P�P_��3���o��a�� IDAT���#G�#�<��{�=����r�O<�w����zK�P�:			P_:������� fTN	���k/�o�����n���������y�Z�:��t���z�>n7U�,E���mFh���d������E"Q�W��c�:C�I9m��/�%��5�Z]p��5/�v���!�V:�#��Gqy�Ro=lY�%`�K�<~)�r���	]&����Xs�2%Z�
0�B�M����N���>�/'#eX�]�j�'�|�����?���{��t����?NQ	�477����	���������������c��fyyy���$���F`y���|L�4U���x:}#[�����qt���Ru:Vk�?���(h�v4}��TK���T�j���p>��0�yyy�g���� %%�\f�I$�\.��8999>�O��T�@ ���"���J%�����Z��s����-�7o^�bE73�y���0�c���/�^�z��}�3$L����[)0*�����~��_��"��s.8�*Z_����!����AA����M�>��������=(s9�o�$9M�r�S�U�j����)��� �{@
��v���������:~��C���;n�����o���8p����k��VWW'���c������/�|:�n��e���h$��0��r�����xs������Y�������������������KT7t^�i'Xn'�"��y2�z�
Ed��{4Qe2�L&����\py��$�H��k�Ru����������dZ�pa�
]��z���I�`0�:�m��(&#�
���<���k������a���3N����.���BDB]	0(#(2R���^����
�\I��=������=��v�_{-F���0�[�6l]�y��-+<x�����5k����w��m�X�F�V�
,C��w�������op����EEE=�P$�=��&�Y"���^B�.t��z���v��z;��Kg��l��r�.��~���gG1��T����/6���~��a0���GeeegG�������:aF�����T���Z2x*��R�R��\������$
m�&���
p.�Z�����x����|�����p)]���:
�t��*==�`0X,�H��m��w�h�[��Z
��)*~DfA���'�~[^��k��D'�@!���2�"9e<������5����R��P����g����	����������,�Ah0����4i��_~YQQ�[N�>=k���c��������h4�����I�[SS���O���{�B� A��'OF*����?&�����������h9���a�X:N���J�?f%-�PT�aN���tZ�R������]S`���q�@�$������8���G�E�D��'O
3@���T������aNg6��9\�;�+�_jj����%������n��?������n�X������[,�H��
�J%��z��� 66V�����od�P_j:�V{~{�A�l�N����y:�a ##���u��j0�=��?2�S$M���O)LF�Q�P�5��`0��:�abbb�$��n��}^[ !!ax,����0(#(�8��,��v�9o5���G��i�Z��8p�:4�LU����Bh�X�jl��)���(r����C^"^jkk���&;;;##����� �G�ae�Q9�����0����,��-�����7�>��R����>������f�������� �JI���?��i�/�+M8y�N�:�:#G�3f)9rdyyy���;%�|=������b^&����g<4�R����#������C
6"��DZ�Ab%����$h(a�i����>��d2aP�>���pZ& �f����t[�K_5���A?E��D����2������3���~���Y�OQ�?;,�������/����v�
y�l6���666&$$��Q����N��={��p�
s�����O�:��M�h4�����l�\G_�S��/MV��<�����>9�J��W��-V���[���������$�"�<���6=T���z��}o=BW$��{�c�:�����|��p���BObcc�juSS�s���s����!�����"I�mP������?
��'���4M_�x��$��E�M3_O&�%%%���;��yz���p�#<&&F���l��C���a�N���(�� 99Y*�����y�bkk�0�yf0(#�8��b���K�v������T&3�=J:�fg_~.~��j~P��o�GdB����S5����;�����=zt���k��y����e��M�<����$(�u�����/_���^ cg(�Z�f
l��Q�K�-*F����2�������?���QG����d�<�������@���s�����|KQP@OM��Q��@���k@�Jz�c�:�B��q���pfrM�:U�V_�t�����oE.[���x1@M������L�����5�@d�����H$���"a�6%%%�,[]]-���FcRR���;r$�������]QQ!������^��� ��I��������p.����J����/^��F��A��@�i�� 	e�"p��^247y��'��LGd�)��U��gEn'�]��!���3�Z�u��u�`�������.\�d���������N0|���������M�6���~����r��W_���c���.\x��������FSj�W�^�_����^�~���m�.U;���������������^�!$�N�Y�<V��3h��e�;�!2di���~T��HEdB!>��$��h�3/��r����L��J��g�a��0.�������o����/��b���


>�����m��=������3g�<x� Wm���;v������k��_}�}������7O�1�}C�p&Yz�P��R���|��5O_�M��~c��O���y�2�W�C�pIFF�0$�U��Z]Ed�KwA[.�������@mB!t����p����e�U�Y��=�'?(c��p���a�<�lc���i���E�����
;w�1b�~��_��?��Og��1n����8���K�����]�v��u,?~|qq����HHB��f�����']�[r�
�/%�N��H����?�<X�
��?�(fZ��4%�]����������/�c��������������k&�JB ,	[DED��^���Uhk�������.�Z����YDTDE�!a�@!�}2�e�����q�;�d�Yx�=g�{��I�w�yO�b��0�j���t��B���I��������M5����3h�#��J$�V�
���Ah8s�\�7o~����|�����^wBe������^{��7m��=>�B/���b��{��}L�VSj����d������6��ZS���Z2nl��zG�.e�W���|K�.MJJb{z���T���s�L�SH���y�o:|���!�baR&v��4pU����<��k��j*��Yp�;f��`�!4��H�$��+	��I��\����������x�@��O���_;<�b�c�+!G��]���c��!$#��^�;7�~0!�.#l�$����[o��������8q���?~��7C>L���y������4MEE��5k>����b���D;S&x�R���<()C{����:�m��M��U��B>���K�=6B(f��I.��k�)fl�v��-�q��	����/�O����?���,��>0;w�$	�(�����-_�\��-Z�h���lOMM�����XE*f�ZA@��`�\F&85�Eu�=�Te�Bh�FRR� �O?�t��PSSc�Z'M�4m���o���+�`�/�Y�fm��Q���L&��<�����O�4i��������8�0���W���P
���W{5��9�8����'/�����d����4�;z�T��G�6�����$BE�^6�TPf��'��=���]�e<f9�M�;�m&L}�u������/Nw�����6e�"�s�;��F�SYYI��8�u�JJJf��!��;�u����"3l)�������������P1B���HZ��d��455�����������1�����$�����Z��O?���TPPPVV�t:�-[6s���c����C�^����M�ANc�4�M�h�up������0�����|L���2B�K��v~A����}�A_3xol�"Y3����+���m����4�w��=
O8u�"3I���C��������&�CB!t�II��K��/������=�O�~��g`���l���322v���r�J��`��]+V��G}4�����<B�vI�c�V�y[�7`����s�+3z^�������qt��Raz��B�P�����<��>���Ct�lq�Np����?��3�mx�k���`�
��_������g~��vBE�HJ����;O�<	999ls����~����0��������$�0c"N"L����fY�Ok�%��
��R�V�A�9C>U����������������Et�!�;1�@�$sM��)���.{����0����Z��Y����8���lW/���d�P���V|��4�s���`B]�FRR���n7n����?N��oT���	��o�9{�l]]�T*�j�a�D\�*�=���3e�\�EAJJ��Jz^�l�h���k����Db�!�����2%�^�(�U���}�(W7�L,[6�){�>�	Z��B"	�({b_�2%��B�K�H*�{�X���P(�h4s��y���}>��/��������Z��h4���$''�L�pb�N�T����t:�N������Bh���c?l���K��D�P06���9tlsi��n��H P��<��, ���]V�J���� �rss�W/��r9I�QJ�������z��E�N�S(n�;������hb��H����1{%e2ddd�T��]���E���Ow���e,����f�W��V���e����17U����~Nqz[+Y��*�+�"�����l�����"�B12��2�\n�Z�c��r�5����@�2���9�������92`�^����c;;::���������!H��<�[/Y�n-U�P��ku�K���Jk:N'X�������v�����s�S��������V�����9��eeeE���I�EE�_��ILL���@�T����8�������:�sU*U_���������a���WQ5������0���A��>�����O���aa^!���������U	�� �BC4"�2E�_�^�V�;611����M7�t��1�$%	������V����������;���;����!k�z����R�:;;��^�Ib�"@����_G����+3�j�����f�m�(e��M'��>��T*�D��l�B[��p�����:������x���.�+����T*%I�f���^"�(==��������j�������F���l��������<�,�����bq[[���PZ�6��
� c,����,C/(s������&u��l3a�-�W����&�i<Th"!�B���I���x�b
��>���O>��������|>�������H�)j��F#EQ�w�l�����{�Ld���*��������=��+��@SL1������v�^���>=k{������+���)@ >��a�2�,;;���#�����N�_�X��8{B�f�~�a�)55U"�?~��=K�SRRx<^CC�"E�����S�W9"
���,�XL�3f�N�3���yv�`��q������@�V����������]!�S�.&Jq�+I�5������4c�k\R�'�h��j��N_����]2�����:�j��TBv��,�B(�FR���<�SO=U__���SZZ
mmm��hB"��$---a�D�D����@���gdp�_�2�t�{��^7�fn���\���r�cF��$h.s��R�`��#����}�l	��
e�`k���>�3�[��0CC�x��N�^_����_�R�1>���*!�O�G�B�"7b�2����W�^�bEH?M�'N��s�x�)�"K ��P�G���8� 5d�%h����'|g��u�V���NoKM{`Y�|f�r���B}����	������':����������0F�3���0��NT\q]�������<2�C�X�Q?���4���{-� ��"�B�3b�2N����n�����*gzz:�����-[`������OW*�������pb"�G�E|�y3el����{{�>��n�Vl(N��H��y}n4s����u&��@��/1Bhe�r��6*���2���>{`Ii_{c��"�?{,����6*�d���'����#IBP`x����35�Dv���$���)\S�a
�|��e{���B�R5b��744���&%%��'?	��7o^QQ��l������W�|��K�&%%�A,[��y�_� ����R���=9_�����x��w,N(����k��,���n��:��^��Iq�f�PF�B=�I)��f��w	v�#\����M{�����b}~��w:|y����.����T�:+��+s?��"5T�������(��S����I�B17b�2���������^���o����^zi�����������������^bb�g�}v��7��5��w�]�hQ}}���k�K�YRA�G��R�eX.c`�8����z����J��~�U������5���� Fd9g�������(���2�����7�} ��i]��:��]k�GH��T����+Ny�G��:!tQJ�/th��m^������^
!�PT�����W�����?��c�=��c���mmm�?���u�������t�E������Y�p��n�����_�WH1�vj��	�U�Wu���j8����P�Z���=��}��m;��|i���R<z�����F�� �$���9��!A�.�;8})^Ks��u���lS7�����^���c��N��=%�oj���GJ�����,���p�e[$�����;�>*�j����^���6&�B������W_}u��U�^{mff��n?~�xEE��z^I6���x�����3f�D�c��m�����\hLI���*��6���Gk�:B��WY�Ei��x��jrH��;��~��K��:���]M��
��E������������z:�K�,�������i�4�����$s��v��K��D
������
�:F��-�G'<4!uep�_�x�Uy_��\����������L�A��r�Q���`��~!���FXR�����Y��0��������NL�H�	��P
�����}3����k3e�'��}k�IM	W(fl�|���J�BvrM0��n]9=������7��'��d1����dS�
�pM���=���l�P��}�=��i�{�����u������������s����o0�i9B�T�u��@sz��3�r
�2!��`����
���R��������v�L�
���#��\�������`��U����:����@�f\�
O!4dJ}�OH�O1F��'xj�H��=(Wsx�v�����
6O}p���.Mu^A�N6��SB#^R�-^i��n�}�s����r!��`����
7@�"�=�g�9w�;�����MF����������zM�����&�P������1������[����~���x�q1<�a���{�\�����`��P���zA$I�3�~X���n���f�����-=�H���_���/�o/0<V����Z�Z����N��y��	/�_�� �������e�/f�H���� ��;F��2L��%��
Bl��.$!��*�*
if���:v��F!�����K����
�V��g��u\R�'�8EQ�?o���a��e�t�+�>�-J�um��.�q�O!4��t�	&�����?~��n$.��M�����8E��7��S�H��k�T����9�v�:G IDAT'\~t�����j�v���|V��	f�@�����-2����%d�����a�kH�J%����d���.������B��;p\������.r��b�P^L�F�]��9����v��b��L� ��L��Z�H'�V���q�>{�;H��t��\a�Z�0�`�3���`�EI��k||�0f#��r�P��L������RiNN���op3e&�
���.}��}�������g2�:;;q�`��3�F��H��I9�����y/��`�X�y)�T|���er�b�!pG����y�++�>� �C��I����O�Q�pB.��d��������N�V���F�
G���l1�]ff���jk��r��������u����������.e)�}�9������B���mX!�.aXS&����p?�����^?guq���g��Kl���r<��������:����Yr#�����h~�#Ra� ��9LI��0�]�O�����������2����9L���5�n�K���_�3�k?;���zH��D��,M�O�n~
B(J��7�A�H�ev���G���B���I���22��M=wMb}QZ������|��0��q��\a�Jxs�e�8�6m�+�W��<�7�!)���?�s>�y�?L[ t�2���)fl�1�.[��^
f��87��H������=TWe��/�O1�+��IBP`xtA��T��
#��K.�b�3���I�X)���}��B�R�I�(b���`s4��������\��e�a�@���
������j�
� A0���x;��k�'sz1O�_����&�:!���k��	&��b���8������mG���sM���<A���������{�<��,��rQ�������\&���\��p���g�P�im����m_� �B��o��%d�R0�S�X�������|nO�i�)N(�����������V ���U ��F0u�ss���}�����p��/�{���w���-���M�B1@�<az����a�mL��p#(xol�2E]��?�C�]k��gG���<��Zp�����gIB�[#��'9�F�*��f����q�q4ncB!t��B�qs{	����5m������H���A;����<���=��(�i��IR��z�TU �J�q�|!�{&�����_����B1���K��\a�<���r������Es���8h'0�un�Xm�2^�2>��t�����{�A�41%�D�4��v|�u{�z�b��4e#
��'����������S"�����e���D�^NoKy��������7���������g��7�mx���#�"�G�d�.���[�d���}e���X��F!�z�I���g��zn��gj�o�?v��M����Px#{������;/�O��������w��u��u�D:�f�T?E�� !�C��Z������G�=��B�U�8$Ac�c�:� <���13�S_M��S�8����pO�v;���v��q�l'-�	��u��]N&���v��q��:w�s����Sz{���<�kO�5�����k�^���J+
/S��_bYn����(`���o�����eL��M�7Fqm�����/L�eq��<R��k$�����
_T��qxb��Bh(��\I���.��M�A!o�����U�,�on��I���\�~��2���	�@�0�Z~x&��l��v�Q��}K&�98As�,u*u7�����������!�<";%u�����1�c������k1)���o\���2%�u�3�JA`+�N_wL�MY�����h;���G,�t3�/�A`hR5���m_�g1�tU��1>+�t3�!�I�\t ��MS������+m�����V:�����w��z�'R�MC���?�=�w�����t����F�j^�#�
�/(�>�����2�a;B�XhA�`��l���B!��L��<7�j�����i2��v����v�q�<�R�L�t7��W�i��������J�s�}����q�����>j}�vI��dx��E�������������$��2�ui��!�����������<K��������"�����G��
��xID��������G����/�Gd��Zh+�P��d�!����F���������m5���0��lS3vI�WOx��}_�������T�O�x#�����)M5[w{�������B]C�M��D����#�������	!���L���	a������4V��_�,N(�t7zO��b��
������lk���\��Va��@�D�D��OL�J$����F�F��<0)���I����_�N�,c��2�8�!����>	O���@������������(���IO���IK��:��������	!wra�gqM��)������B!��L�T� ���������	f���wu{l���l��GA�=6��I�Jc���B����;��\R�~/�#������( �������M�+m#�����JF>���N�c��0��]��Ot	�	!�"��1�����5HH�^�#I�k�����=w��}�\���uD %�"��"�'��X��h����������p�m����R�?�m&Ly�u�s����Y������m��0%��y�O����������3�� ������vir��O`A�B����:B"���- �
�l��eX.��@R��������p���)��J��K��J��J�<64p������C����s#n7(����A��H�nM�N�`h�t��&_g��m���}.������|�������x����p�.YC���
������E����-^���?r�j����$HO�=$ rR�5E�PJ� II�����b��'$��f�*��$�M5/h�N6�,K��,M�-I0�z�K��e	��K�U��r��C[kf]9�)���b~�O"H)�z?GwW���-���\!3)�v]�9��.���mW���B&eb�J�c�����F�OH���2���W{�2��Xb���r�P�sI����9����i%��3�S&J��@��f�l�����N��m?�+:|�p<�*:;\	"=_��+z�Z(���6����"xuZ�?}�u���Y6�I�����������O�]d��655Y,���K0���B�	GA�#����3Gw�w�8qb�`����E���+�Dr�AH$����h@�S_�s�e���������L���3��&O�R���vX�8�m&���y�������������t���D�?�I����;������):FSxB��"E����������V��O�B��I�����}4z��iRX�d�k�L{u�2�v��1���kS�G�d%:�6�q��$��2}����c����
�:�'��~��4��'P��9�w�zH�b(�m��&���s}n��o7�w�op�����F3w�\���n���?��	N0@'�Ol��d�{����w�GkdA��q��U�'XJJDAi9O&Z���)��"�������������������~3������������c?�Y���l��)SK�q�<RR��L����g�l�*�C���\����)*�N�V�w	!��0�I�H$�������#5
�t������3b|:�`��@����(�$��1_�P4��qw�z��Ts�\������N��z"�
$xt�3���!��������|��[)�xj�k�j��A��@qY�G�
|����X�TP]����.�u�t�L���q�H$`���'B��wu����^Zeh@�T�~[FAAD�^.8����a����9.3X��
��P�H���Y��2��0��?�%�d��lT�&^�1�vn��������?
���
Q���/��7�9��#N�����(����@Y��N�V�w�B!�2�x<���MMMFj�Z�Ng����	 5�@BB�e����)����8�|�g�z�&���sM�i�*�MG��N�?�3��=����{�UG='�mk2U��
��B"E`������\�i6��6tC�g��p�
R��	��H��[��	t<��'J 	~f��2 e �c�����)o�j�<f�m�y;h���t��,��o�����=�0edd�L&��1p��I$���d��������������K���eee���������=
6�Frq�������w�.{�m�
n�W���0�����3�k'�>��;/���Zp��+���X��1L,�!NR���A3��=��5qb�'�B��I�Pe���)���x��vyjJ�ak��t�&��XN9�����s��R�0����>f�����U�����?�*v�+[���{�X���|H)�Wv��<v��-/e������%��m�����@O��w�	B
_���
|��/2��z�*M!������D��q��W�|	Y������m��j�g���6���9�Sn('��`h�����r1����>�wQ�p8.������n�z����@ �����FN�y?A\�/J�{?-;O

���
X����w��8�O����8������;�t�wr�_����O�&�>��Y����f{EG�P��|�R�N.��P(�XNp?��L"#�k�(m��w��jM���D"��xC�W���R�0C�3b��a��<;�B$I�����x
���
$��b1�D��<;�@@D,_I������J�[U 4���.!OM�H�4x��g���U���2V��f��C!�pG���{��P�����_�)�'�=���������6�,'�))$���@�c���"=_��'xC}C�5���M��Y���\4{@��D%���v����h7
�����]���H7C�����E�n&�R4�?��2T��G��9"��=}.�g��Y�5���f���fP��&��U�//��4uU���m
F/�k��`�5uoi�~76��EI���N�J'�-�U���������]��|�Z����F��~�Ri8��H.��]*6{�i�U���W���|>��
I��R�b�J`omr��������T*{�h�J� �b��H���+���@�P�|��{��h��#B��`R&��
TNE��;|�v�!�����/��H��m�}�;��a���x��7Z�D�9&����w����c^��P��^RW	B��4�^ ��E�H��"=_���,�� ���M��	c�9�,��+�g����
S�4�c�g;��bh���k��������E�|9�t<���"����,M{��K1@{�R�0�k��y����6�r{I���U����X���!r�f4��wH,�vl�]����o�(���	 G'<�����MO�����U)Ghdr�\g�����0R���t����p���6��f4����a��>��P(����x���>utrk�����0Ll2�������b�b�3����f���^��p���g'�
c�J�5J*������������/�.2���.�,
��
&8����4�
�4�-���7S�i����ao	�l~����lC�S%�z�t��chp�������	!��D	�&�o��/��!�o'��,��(�=U����Qac(�g��B4������)�V~G�u"�%#�wD��32l@��2�3;��{ei��f�n�>����Y�'������~J����4�_��N�|;[w{����G�8B�.b<B�J�m	��2�����32!�PaR&����������6���d��3e�q��7��QE�� ������92��5uoi�nOT\�6��h��i���b\F���G��O��<�A��T�����p4yr�M��|"8��b���?U�����#I$% ���.zfd�����-�'b<�$�~
���T�����c;���!?�a�|�����i�@�
��y���9���������B���2�%�&��i2�f�>�4����m^���"
W�L���M������]��{�#%c���8�p�.>�1>��h����'�y�'"H	���	��H��y��'&H!���������r�x�"��k
��R��,w���rw?w�?@���$�`��ip�)0�s��0�W����{�����1����
�|���^��@��6=7�<�|+���KuW6,;e~oj�[z�4��$�G347W5��L��8���O�r^pA�iF�|m�>^CB!�B`R&���a5x��g��OP�ci��V������P����������<�������/V�l�}qP�<��Wz��N�r3���w�U��5�b�%��(_4f�������{����� �� EA�"���s9#��A(�
��t���OB�_\9�b����?�q�}���_�~�����fNN��O?���]QQ�f��?�0d�u811&O�oZV����I�J���xn���<�O��Y���M�xW �K������rtw���E��q�RA����s�7�=���S�"tQI�/h	�;��v���mO���B��2�%���y^��S��.k#������M'���lK��{5�A���D��ZH 	Aq��?��#��d��Y�n���<�Qn����1���;�%���o������5���AB�'�����H 	8�_J|� �r2//O*�6�6X��9w� ~rss�b��dOw<k���7j�Z��d6����?��I�&-_���bbO�P�?����f�}%e�}�[I�?A����6l0u��7ML�s��>����Z�4���m/m�3���B�_rQ6���-;�j��v����vE@!�bdD��U=;w���bh�8���2O�t:�
�0���U#�[� _�V��=���f�}�����e��N���]�s��\a7W���m��,�����6t5l�:����}3��B�7��c�����trss�n�V�U���;�d$�����Z��O?���TPPPVV�t:�-[6s���cb��	y���a�v�#6e/"|vc���C:���;.<��=g�z���*�<RR����1���s�56�.)�y����9V*�I�����B!�&e��>�LW{ G 6E|�~�0�i��)���-���Ri1H��������'ORT�k�.\����s���+W�a�v�Z�b<�������X?���)����c�md,5�C�`F��-�+��T�U�����:+�c� ��sB�KU�������l+&eB
'���"������<��=��#)T�W��!��~����=e^�5��7&��G��@�,��Mz���&�������?��_��i���p�u��$fL��
��4�J������h���s8O�a����������\�P����/0,���5���B(.x�H�2��5��6/4z��]5qB!�&e���My:.<S� �bmn�Gr��Y�����|�o�Pl�~
[P����K�,y��w6n��r����g�dff�����;��=[WW'�J�Zm�1�'�����%���3����o���[���!�����.Mu^A�N6%��� ���rW��k
if��_�f�
o&��a�a�M����n�:��������L�DK?�dX[��4pw�1�@d4V09�M5����e���#~�.J�F��Gyd��5?���n���+V|��7�V��J�o	RRR�h�}��$''�{���!�dX�7|��dMc�����9����*�Z����4�_-��t�e�K�j�-h��D�OL1��2!���})*�|�N�_`h��\+I�6����ei�S��^O�6'�����
������2��w�}_~�%EQs��y��W�����������A�	�����s;:: 99���#�>|��a$$$L�<y������KKK�yv'/���pn*�*11����^B���~-y�!7��4��^_ZZ�=�7����q�L)�^�������B��*�P(�H$*�*J��Uqq�������r9KP?& IDATEQ1��L&�D2�/�^�������.~����	�&[P��[�qB!�L�DQ��E`�r�+A����#w�����$��c�K��R\����L�7`b�}���W�%?�6u��t����O�q/�.&{����l6l����>������]�v=��co��F[[�D"���	��j��$�cB�u:��~�3��������V0A@��r*�-���[����������D���u*��S�)�.�R�������[�3������"�]�wQ
�C�&����EO.�����~�e�T��|qB!�L�D#
��r/�]�$�c��Rfp�_It�2p���������}'�����snc&�P�>������w���c�e�]6i��M�6�L&�^�R�B&�����F#EQ����l6���\��w�9v��������G��p�����E4���t�\F��cj�~��xB�o��������2�c<bC���\D���8��� �D"�L�N�����"8y�$���6�RIQ��n8t�
Ezz���>u���/����!]�R���A��\�(�p�%����o���{��>}zKK��;�y����/^����l������?���+����N����">)��Tx�����:��2p~�_QB>A���>�v���Ii/�M�8?[{[���h������G/������M�6�����z�F�pa�����@81�0��pTR��M�:th�TB���o�&�%//�d2�\�I	�^���---���!����K�������Ol��m	������i:���a�V:ij�[=k�����P���������]�j��`����>5lR����f�
<t���.����-�JMMMOOw�\����%�?A��<[PR���C0XP�af���+V�`�5MQQ���_.�����%K�u�Z������;��7o�����"5X�7��<5�
cSY�&��]m���w��|�P��!�p��
���k�O�=����]L���\��`lgkk+�K�������,��pbb)��X���/CS��������!x���k9W�qT��������~f�|�x�q���c���J'�#tq��T�u��jH���`�l��UqB�|s���22�~������
�Y�9y�d��7o��f�v��D"y��wy��|\�P�`R&��-�O��G;����&��V���l��Z�@�����qM�037��(�����`�z����B�0�� ���8r�l�����3}�t�RY^^n�X���%�*!;���Ez��C3�oq
��U	�b<�01���?�t�����I����Y��8�Ac���$*.������U��7���8O�T���!4|,����s5�H&�{�[�^&e�B�������Y�f��I��sOqq��?���Y��?��`�����'3g�t:�����d����hyI��~��W���N����Co��f�2�999�V����ioo��y��w�I��3D"YZ���
/�L,_��>����kF��/����W`q����<E�n�������o�>�N�l����%K�L�4���lRf���>�o���IIIlA�)����NL��EX���h�I���f�S�������R ���sijX;O
+��������25��E�
��&��)Qq9I>���OJ~�O���k.p@h���t�gW�<���>��v�SO=��Y?����u����Z��=�@�g�%e^x��O>���k�!���YYY=�PMM��1c��Y�f��������h4f�y�������+��|�pb�N$M	n*<�'-()v�_�+hS�j������k��	�	?����~����4��������7�p��7����o��?��i��d�hoo���?���o�q��Y�����E������]�^'�����d�(8�:�Q��i���l��Mpyb��{���L���b��J'�Mzr���K&t]��������E�B�U��p��6��[XP��#??�=hhh8{�,��{��~���kWp��V��Ch�II�i��=���4M�q��a���)))�V�R��}��@ �D�z�j�V���O'%%���9��e����9��N81!�&7^�������)��
�����J]���NG`7�������8���m�/^���~���������{������f��������7l�0y���7�����{�����?~��/���O�$e��m��agu�gS��q���M�\O������N9�����x�>���Ii������_?������f����E�S���������4��=
�����
!��N�cB��s�����^�T�������h4��#4b�������^x��WV�^���l�x`��Y���������\�paFF���;W�\�n,�k��+V��/y��Gw��	��D�@XWE0 �2vu�����iN�B�[��9���+s?gB��A�>�wDh���O������������r�����}!�@;��������1C$;vl���!���3�����Y6
;���r�Q����}�����0���O�s��c�O[]E���_���RUU���H��H&$+�NR\���� z�_^.�������a|�������>�p������Z�"(��`,�_v�!������fee�x<���M3����������F�bpWl4����LAA������g����F��8qbee����`����[��_��/��u�]G�$M���Dd�Bi )#��?�P��q�I�H��'�<tM�����'*.g�B�����"�'���y������q�a�������!���8��;���
�FfR(WW�����m�&����������{:��:�Hb��Q���:�����KR�NR^���'��O|��D+-)N~��ko�no�lk����6�x�
Q��d@H1�efN�:�v�E"�B�X�p�����~����~�Z�p�J�b'�q�]w��l�>�F���|��O?}�����C�
������	��o8{�l]]�T*�j�a�DO����0����Iw�F/���$]�j�"	u�d?6��b�D�
�f�}S��0��'�J�!���
h�|vc���O��3F��k�"9�����|�s��3l8�����=gh��D�������<���M��9Z�}F�/#	a_�
sl���S��5b��BC�r�����������%K���x���+W�s�J���i��)S���>���I�&��������A#5#i���������9s���^�t:w��)))`4���FcNNNrr��d
'����x�D.��
[�F(r�B���zQ��mE�����p�y>�gk�+�����������p��6��D��l���
n/a6���fL��$��>;�T*� bs;�DR�4R��������c���|�@ ��+���@,��2�,�#���K�cv��v���3�}���4������v��l�H�;�g���s�����E��]W��G��<Rb��HR\���Z+-�+^%.b����F�mW�u[c�g���WQ]"��&�.b��H����0,�P�^|��;��S&����5k�p�4M�d��(��9s��={�;_z��������(II��-Z����$���{���� 6���Z��������92`M����N��KQ�C��rssss�������s�
cSjS��F]?=�g�j$;�O�d����|�+]-����U��`xl��|+5����7��|���_�����hjjjjjj�n����{���'N�N:*���ny�Ll8o�p��p"��u��_s����� #�����U�?g���[P�������mHI��kRU��s�<u��|R�����ls��X��Z�5[��R�������A
g�������������_`K���~����z�+��W^���k���6�y��'_|������I����^x��[n��^z�O��$���r�C76b+e���pb8���...�g�4_�+��U�.���v���&�l,{���������M���B�A�����6)3r��p�kk��r�}���l�$y|�][j��C����{1qz[����?��������},m.l��i�����
��a��,s{	��F
?��[t��immm���


���jH������+V��������������+�����K��x�_��+W��D'N�x������_Q��(�����U*U�D�Z
F�1��y�������}m�2y�����c��<x���q����r/cU>W��?�������/	S�7\�[A�����R���/:�������r������b3Q����;����[�.�������&�%�3�3������3=�1E�@ 7n��}�bp/�3g�^���kW}}����������w�iG���Y���v_\����}��|����,}j��_��w-�����������b~����'�g$�gLL���f�������s��%�#GVW%�����>����l<��y��������0�=Oyyyl~�E(fFR�_�j�;v�x���l6�C=4n�8.#�jkk��6�g������"w���V���2��f�[�1���/3��g�G��USg� 7B
�k�H�4������l9x����Sc�e�n���f&�E�+�������+��X�QL��R��o`�/*n�_X91��d��X
+�WzB!��d$%e$���^VV�k���'���[^o���lJ%///�S deeq��AI���������^�}0E^��������.|�����d�p#�.J��a��)!�PU�������������h���Q��z�m�|Q?g]:�t�q�k���Y{@�M����/t8��
&��JK�$������L��*���2�0+��E����d*7����!�.)#))s������}��gW\qE_[�l�s��
��>}�R�,//g��� ��GTS�vz0�d�g7�\�` ��(��O�E���6L���&p�lA��)g��)�\�3?�Z�����r���%��[�=>��b�����-�����9���������a�����p���cOM�|;Ss���b�����e�_��B��H�������������W����K�.}��Z[[� �e���;��~�����r^
/�"��{��}�����<s{L�b��MO�3����M���;�P�I
������oO�S�N�����6rd�ce.�W��������#��}��]��a�j��[2�������
�������74�P��j�����u�C��\��Lh�1I�\�n��5=��{�]�~}{{�{��w�}�}��g�=�\GG��w��h������k���������A����?)3��2�2$e�?Sf�5JW�n���Oe�r���� �bF�������EVP&������o���n��n�@��?��������$��I��SU�I����Q�3��5�#G%�d�K����]<���@ P*���;I���"�R0b�2l�P�z���?�|�r�N�h���7�=555.��U��"�PO�.�������Pf�j��f�����KSTs�7>Qkz?�D�" P$b)����q\�I�:����{�n^��w5]�O)��a���������t�=�����4�����,�{u�<p���)�V�c�e�������=�n��M��d��~�� �B�1I�#G�DX{0;��������1C$;vl���!+���"�4
����2Vn�L��o�N�H�I�<z���_�W��L�|;K{��3�Y��QB(6�	���L�.��K��	R�y��p����G����W���bs�7�v����&���W���W��z
f�k�%�@����Vo������s&��F#�,y�C;?�!Q��� �B�1I��0Leeeee�c�B(K	n*��Uj���t�}��]�� �����}��Z�VW�J.�H$��mkoo�&��8������?{������3�]�,��ncl�
�CC�Pl���	�	�����n�&Y�H��%�4��`Z0`S
���^U�>3�c$!K�,[��}��w��{F�G���(;-��������$qY�@ <�u�%��H%�*5���I^�6�4����u�������������U]*=0�!X����RCD��t��@p����@�/�P�T-W2�*����0h�����=-�@ �=��S�y��F�#�����~���h�+��AMc	�&' �s���x�������"6
6��i�A�FJ�8[������3��'���Y~��X}�������'$�=7V����Vuu��"���a~����$�A���	]�:�Ru�F8�����.2�9� �3��y
&W����i��*$���enq��8T�Q����?W���?PG\�8%!{P��t�W�!��&��{B���T����5&t���K}eOw�J|����7��t�hnA�����x:�,J���>9��W��������z�fD��&a���dJ��,A �� Q�S0�r��E{t�\��_�2@�n�w��������H
Z1-1/H8�W�!�`�����E������;�'�kicX���dC���n��TS���\���WC���������	�a�530B2gD��9������a�(��1�G��a���v������������ddd,X��eR?W�x
�� �K���<����x��~9>��1�5��q{V�d����8�s�����n{��W�zZ�@ \���������������g�^Ig,2>c=ah����O�����{ �w��~����	S��f�9���0�N�N
Za"�U����+5J�lv�"66�J%�`�w�Fc�=ztzz�T*�������:u���S���_y��6��l� &�@tZ�����s�<td�\�l�X�a����)i��/�wA��c��h�����%���2�2yX=��T�$�����L���d����^�h��h���[%�����n��h�r�����s�dII�N� Yk4A�x���o�W������o���Q��]bcc�z�T*�{�P�\�����R�������F���j�-[6j�(��x,W>9�;x�����t�u��\��?���@ D� Q�S�8"�:|	�1��-���\��#����|�~.3xL��q��y�P_��@ \���'��x��^#���I��$K��h����Qs��{?�C�zj}QA��SEsw\�?xs����kr������d���7w@���#IA+�����t*8NXXXaa!�;,�����������S���=�j�*x���]�ex�PB�77�&����>1�@ ���DOA�<td}]!i������k�*�7^����0v�x����8�bt��@tZ82�(��i$\����%3$��Z�������Y�O�F���U=
�4������p4�N���?��|D���]�M�;QQQ������m����{�n�����w���>J��\�e���tV��q
�iB��@ �H��46������5�$L����f�S���8��T�����m
c��~C#��������W�!'�R�����z��3�S@����2�=4&7v�A�Z�c������{���9�R��
�Q'�����h����w�PcN�a=.��P���p���7nLOO����� DD�8q�����������I�R�x	���;9^��+���o	�@ n��nJ���Vg�pR��=hknr<r���As��?�%��?�]����G�\�^����5i���D�A&�����:��h��'''�@H�����6�R�[?�D"O�s����G-��K�f��HA>�j�����3����u�Rv����W/�P��%<�J:�o��Fc[��6�Q%p��Oc0�!v�Y��A�4a�Up�U���	�8N{^���111��K/q�\�g����V���e���K�\�!!!P]]m3���::::��2h IDAT88�����1N����<�zM�C]�X,V����F6Y���S���.���5<���:
�X��3����!I�;gG}�0����b�x<���&����c�X��XR�n����F �$�x
�����L{|d���o@�%on�2wU'
"I����Jv
��`]�N���g/������49>������]�|��a</::�\�bS��
�`��P���?�|0KT�������kllt���R�\y)��vu|��~���6���.�_jSY��y�P(���eee^XN,�����B/����p��M�Z��1�l;:H0!P8!X8�I�/�A,�T���E��c���J�Q�����CBBBBBBt:]{>�


�4���!Ir��E��q|����}��������z�-�(���Z���������k�������@@se���������H�����>Nh�k��M#!Z�_��MO������������G�>�k�f��Ow�-p�����u������^[�RT�������+��}��@tu�(�)Hv�S����^m�7n���~������{�C��5T��G�S�������<��pLN8{����eo��&'G@ �!I�I�N3�18��e��H�n�^�T�z����'[?���p���C��R���
�L�{�(?lHsS5�����U{<��z���bz��t���_Q�)Ph
nU��1��a��i��T)/�Q:3;:���'���������6�����X��_���P���s��j��={��?O�l��5??����o���W_}UUUE�8��z���7����FkuL������Z���C�y"-�����F���d>�NG��@ ��@��G��F0-:��H*�J������5v��:���}������Cz}e]�	/����+]R�<�C��u�%	�j���O��n�Wl���q^Hs��/�����c��}!:$i�VgU��.��($J
O�2������R���XY�<R��_�<b�����i�m���3;;����c��INN>p�@mm�L&��6�0��R]]��x�cZ�RUe	�s������\������
������k�z�������Z���&=i��������P(�����^J������X���L��������$YV��<;2�l���:�n���^X���JJJ��d�������t��m���Q�lv�>}<������'K$�����w��w������{�c�����~,�������@�R@�^��z�;��3c������������Z�����F�-^�����KHH�q���[�����u�Ys73i��E��1B.�+����;v|��w6����VVV��o[�`A\\��`�����i��-[L&��/����O?���}�����yyy�����m��+>���_�5--�={>9�y&]LZ�7L���a��#��5�
���d���34����	q�GDne3��E ��Z�	���DY~[�����5�)
��w�$�wF!Z�&=p���:�I'I����R�����x�t��u��A�'�m�**�MEE��c����u��x�)��J[��9z���"-4��{����^z)""��b<��������KOO_�~�����X,~���6o��f���c��M����g�		a2�2�������orrr����p��C�}������B��������}��/��Be�2���>�i���#G��b�@0l��-[�|���vC����+���Eg��������@��
���W���K��S�?p�oA�������OK���_�3���
?p�y�J(s
�2�05��o�d�����S��r:;$������k���,=Q8��vC����x*=pR��I�O�P5:zG�l1���E��?���v�a��0�����������J\\��&�I�����2������f|#~�F z�����/,k�����III?��#���_�re���?���C=��OP���|�M�\n��f��g�}�^��d��!C���;w�������&��r�/��b��	k��2dH``�������`��Y3f���y��	&@zz���s��������t��/��B�#�g�W Q�#�ya���B#���#D�t!���7�+Yr��X���u?�4"r��6��A ��$y�y�e���#����M����������8S�C�m�D��)��+Y��Zdz^���%%
;����x6C!�34��Y�����=���`Q*c����*��A#  �h4VVVR�c�`F���~<x&O�l=f���"����3J���1�D2���+^aB����@�G����#Gn��������.�u�p���[�>��S.\������_^y����III�����7�|�?>r��
6��������'�X�z58����o��������������TWWgffN�2E����Q�����7g����Og���s����������
+((�����a���+�(���������C}��v!��E���2n�Z�/rv�����e��W�� O�V1(�����]�#���a�����G�/*��p�h����
&^���^���;���	/O�;2g`���#IA+�<��������RUUu��E�e��Y���;799�����(�}�v�����OQ0��l����qe�7aZ�.%zB�#������@ :"�l��)?�Rk�d2�<y��^�r�u�u�r�����h��_~�:�I�|���;w��[����+�7o���w���� 8���l��%P[[���o[[RQQaE�N{����l~�uc(I�4�p\g����r�
Nh������!u>��c���>�����e����#R������5���k��[�9����1���{�(�c�
�K��
��Ke+���j����Eu�&��X4^�(uP��S����-�m�d�n�0/��_�+V� ��?���og���������?��A/��"�Q���f����������9s��������Y�f����:�+c��.&�
4N�����B�@ �9996=T���r�����:��}���'NPY��1�L�`���d�&����2[0e
���u�V�������e��� |���
���O&��:�������d"i��#��(oW�����,��l6[&����f�`�4����aB;W��AJ,��*��r�f�������c<so�`����E�/�����'
�0O�nva0b�����C�x<��i��rt:���$�B�W�J�G�C"Ux��Y����V��I���nv����]�Q�����j ��3V�4�,i��at	w`�(5H�(K�����Qq��q��$�7h/W(�&��0/��������G���={����/^�x1�y������ggg�����+����f�JOO�z����������4�;H�����h:���Y�@ �=���6�Z��&66���O�{�aPAAA6������md0T�.�86��������{w�=_�D�V`0|>_$�:����f�E"Gd����H5O����q\7�F�1k�
{Xq��N�o���r?��U�P���o��v 
��e���?�H��;V�f�`�m�[jS�E4�
���:��q�N��x�I��f���dz������^IJ��r�n�HIr��d7�Q�S�o���.���j���q����?Q������N#L:����H����kr�W~�bH�����I!�Ge���;
h�{������&L�������.]�t��E�����F��={vJJ���#�l��7>l0�:�;H�V��x�)%�A �#���^H+�6QQQ���xii)�m#�466�z�������=���w���e���+�(�
:����������������EEE�h�����HR���TEEeN��&�|~TTTQQ����������8������t��oJ����d2���kj<�PtF'��'z�I�T����	w�~�{�u���%I��}	�p�]����SQQ��l�\.�W�^j��;g�d2�����W2&&F TWW�w�?��Z��2��t�\��������T�0fB�����3I����!:����aGI������A��P�M��t:��N������p�u�$�������m���#��]�)�w����=q��t��L;Q(B����>�0�{�I�7_���2�_���Ax��)#���K�K$��?������~��w��z��:���@��J�y���S��y�Ga4F��-4�ky�R��B����m����d��%^
M��eD��Q.�k���eK�4��3��e�#�{$j�
=��������Rz`D��
d�f�h���M��@ �
-�������($*��%��
�qp����p�"""�i��K�ILL�x�buu�SO=E�p��3g�,[�l��!'N����}��)sb���c���HO�:O��V��������	�O��5�D����N�p���&�e����fx)q	���r��;3��#E?�!qK�$����7���wspBkN��j����N�6�o7cD�Q*��%�g��!�NB�����f(d��1T�&L�������\����rB?~|�����������	��M���4h�u�k���������o���
�����^3�t��[Lh$�|�=�)Cq��k��Rs3h�rA�('��
e��o�����e!�3=1/���C �+9{���$�����@��O����/8/r�&�������[|mE���
7�Y�����j�P�@��#G�@HH�����|ll��O>i�{���)S�����f�����}{������/
�z�������c��������SSSg��I}�~�����1���q,�}B�(@�1O����=�����E�����znE�a�9w��5V�{ �8�8"r���>��/�h��F�A�G�������"%�'?�k�:���&�8� g�����g[��
�Y�P�@��={��_|a� �~��=z�N��L��k��}�/��B��@FF�Y��0l���/����q�k� :�E��������������}���u��o=�����b�5p��������,j��H(�
����n���hnrd�C&���+z�juV��AW+�eS;T<uz����XG$HB ��e:������>o���{���/���� ]��H%C
V����l$� _`0�����T*6���?��{w���yyyW�\�����k��]s������-2�Laaa�/_�v���***>����g�>|�R�x�D��~�A*u�u�1c�@CC���'�� �_�i�'�S`Y���F���{�P�=��0f[C5G����>u�)O��pBw�������#���?d�g���B?��.Y���b1D�]��n����v>4�m���M��c3����Zv+��n�3���i�	�*�ST�q!�=
��J���c��Q(��I�A���4���Jc���A =�.�=��o�:thXXXXX�_VV��k���J���,,,������������o_���X�`Azz:TW?p��=���}Q�����[*}�7N�:E�g�T/�H�����4o���� M�Q�;��!�������=
��"����C�I����v������Sz}b]T.�h���U�^-�'N��D��R��:]�e�������G�9��_at���L��wI\_���>�
��p��L����?�KkD�D�Vcfw���+W�\���d2��r���������o���2�L�T���eee�F����4����������������t��3grrr@.�CQ�M� |���LQQ��/_�B�����������D���z$�J#0�*�J_g"	'3:U������C�RM�4:t�{w3^�������vC�������.�M��IA+B��f�,�m����DW������r��_r�����s���91���&LM��	�h���m�:���<~��'t�$n�����V!]��d�f��tV�b���!I����W�^���N�6-!!���t��/^�x��y�\.������2����p�e.\�0`���+W���o


K�,����o�>��y��Q���\=M�3-���@(�
}��c���;�\;��K5���x#]u�����;�
���y(����~���$�.�����7����"�*��L�q����b��}���@�Z��&LM8�%q
!��pk�(�����YAc-O��&�%������*�K#��!��{�x�����A ��v�Z�Bq������]/��2���������y���~n��k���_����+W�P	�333���C����6o�����oU������..a������k
ah*���%�$F�x|3�%p:��R��s�����m����d��'����+��n�#��%4��y�LQ<G2��\����g���I��^��*'rY~�����Rv���`X��o���;�����`�Fde���i{���Q���[�R���c��M�4���1��~��}��Wo��6�[�N�T��L����)�����/|��7"��*�����l�2j������[j����_'�Tb���n�*��z<��5�����_�j�%Q��|pw�K���k�L�g��4��P�z���<f��1�%
;/��Mgr��%��p]y�@d��7&
�-3j+�2����)3j�
�r#�is�'���)�:Y��{������!���-r��05\���v!]������Em�e���_�MJJJ������>h����L0�LT�W��o�����K���}Q6n����3}����{��sg����`6�$���s���U�V���%`�Bh3����K6�e�C?��G5��M��~e�a���.e�������:1�
�<u���	�^����v��C �(�����/,����qla�����?��T�eFm��0���cb4�es����,�I���"��7;�`4z��m��I���6�:�����]�)���l�,�:�Kk��dffFGG���k?�pTT�P(�w�^vv��m������ �%�e���K�.]j���g�}�I�b��[7	v=�B�!��;��^t
��0,b��7�����m���T���b����b�%/)�.�m/��s�/6J|h!�������/&''����S�N����55'�
6,Z������w��=�����^�z��#$�������m��y���7G���S�\�Gc�.�����SH��h.-�)i�X���Y�8�����k��4eFM�A[f�!��:Qja�(���1%��R����������r���/���^�KxB��M�&���Omeb�x���/�A �SQQ���o��
�Gh�(s����{�����������b�4X�@�6F��_��)c���l��u�#_k6L:������}K�I��L���}_��/:fy�"�2=��������$�M���|��G��/������/'%%�������5j�����1����T*m����F����.�Jkkk����N�:u�����W^y��g����t"��������0�!L^(��rX�
8LNS2����_
h�I�HG�Q��$��w�T��
�0��J�$I�8ij�?���~=���$~�����Y��u����r��~����h�Ol�]"�"-�g#e���R�uAm��f|�i]S�O-B �}� �h4���{o��5����:s����,�8������&�����%���o��&s��F�C�4�HWd���A�����)2�El�����4���#$s�K������B �`��a��/'b���?��#A���/�|���������F������R���k�\.w���R�t������p>|��c��-[�k����,O���@������@�pp2}����)M�
�����_��
�i�rS��L�����x�L^(������A��f����;�P-�����!�(/�����&�����.�C|�=#�"EM�= IDAT$�s�5MH\��	3a4�.�E9�K����zgpI�XZ{���F��0N#�$������^}�)�����)D�%p�3�4�g���Y�!����)���wr|��H�����9�����T�c��p�6�2c�����3f�x���^y��+V�����������?��~u ���������y�i��y���,sS��M����u�>���4j�2�+{>9�c&]h����''��Y�������f���*�@��s�=�}�������Z�d����G�����999',,����HKK���z���)o��g��Z���O?}���=$�P��}��A��p����g�6���O-$M��RQ�K�	P�J\��7u���2x!Ln���6x!L���Q���f
|Yqq��~0�C�����
~�!����X����Vl�t�1��C-��f%u���*�&���L��Dqv����'�A��Y2J�Q�]��E�@�O��nkjj6m��i�&�@0e���{l��yK�.mll�����{333�]�{&���-4*�
|�)Mw���>	��j2E�a��[������	DA��{����/��O��IA+�%�g�,6X�E � !!N�:e�i0���bbb
����a��[��g����{�n�����w����>�(�F��g"Wb���!n�����y��	A����uE�L���������6�"qR[n���N��0n�gQj��/��u���]'�����L�fE�0
s7H�<M��6��ss���S;d	EeG}m�hj�:??�W�#gDg��G�j�z���;w�d�X���{���f��9�|�V����w�����w��]:[d��$0�*�����
���V�{O�6����,j�������������EH�	�����	�������q��RH@�2�6�����>}���36��������;w���r�<//������7�����'NX������(::�J4��S�H,!*AZ���Y�	� ��,Ug�����a ��
M��~��6�Do�S��|S�N��Y��5t6Fc�����0�=t:��~�hC`�#0��o�s�9�M��S� m��Y��B:��M�B z�R�m{�/���v�^��:Tz	��b�L&�Z���Q�
Dg��~��!33333s�����
{���������p?q����{���{���~��������?l����\)_��'4����.4�*��W�KfH��x����1:���x���_���m{v��)i�Y�<:(��8���.\�3q��y);}f�+�����5j�#�<��jO�<	111��K/q��U�f���j��-[�,]��r0		��j�d�����������E��j-��|����������|�
����=ah��K�h^���-�D*��t����[����[��]�$((�����w���`[�q����?��!�u�������e6�e�8{�W�1hlg_�0�cSi@��Ub0,������d}��H�r6�%1����������`8�}������^��S�0H ����q�',�x�3����BRn2�\�9sBD �???WnZ<��3gPl�S�a��A�9s���3��/OJJ����������:����{?����Zbbb&M���k'��+�K<Z������
�J��a��M���������j2E!��|R��Y�Z�ex���%w���?>�*w���U�@�9�,�h�f����h4��5k������I��-:t���'N����.\X^^��[oaF�2-�|(�����k�����7w�\s3   11\�zp��8&PK���y��H���d���e��|����F��d�_^�6#����7~w����Vps��L������?N�s��X'�T��e\�d���& Y8`�"�I�v�j�Cw}�T�X���E����mP�&���@ ��K�gL$I2/////�������HKK{�����Y�Q����0a���k��{�q�|��K�0�<s�X����+���e�����	�������3��k���[��O��������W'��a�P ]�QQQ}���9s`��������s�����={��?����uk~~���g�x���������r���m�O�����oll��a��9t�����s�0���H��s��L�� 
����r��=j��� MPv��P��$�u:]������r���\��(�Z�`��LVWW�^�%���H^�.cd���e-���LHH��'[�2�/
<q�,���*�?�](�����;����q�V����|~pp��`(--���z����~}���y��Bn;�7g�<@_����x��EII��u���['�u���-[���7�Fs��J�O�8��-~�B#��)�u��x��AL��AL�3�Q�9i����?&Bs�l����a��}
�p4��H�S�}�N�N��W��}6�}������o��3���m[�)���'O�3fLrr��jkke2�X,�q�����aM6���\��z	�G�2999��#��d5@�d:��i���c��U'U�~w�.L\\��~�^K.�k��I��!0KNN�t�R�D�������L��������oo�4�2c����x��������/  �k�)Q�����Q"""t:���iBCC����Zm�_�`;%�[�����R�*���i~yQ5+�@t	:F�������_tttLL�F�)(((,,<w��J��t�������ghTq��\)_��',�3g����/Qh�/U��0x�;T�){���]|k���m�>x399rU���v<�x�D45h.�ir�5���Sj�/��H������1�����W_����\|����1c�$$$8p���J&�I$����������,?K(F��3�F��<^��RVv��)~�=����M�����)�z�A���=��i|����@b�8r����e��} �Rg���@ �NN{E�!C�|��'�G�n�K�R}������^�w���������e\)_��'8��!�����2Pq���������?h~�����{������v�:G�0h|�`�\0�jjwk��k��k���k.��7\��.�K)2g����_�r��]����t0�l/Tfee%TTT$%%���Y*�0�L���s����(#1��R�f��2��j���^��pt���?��q�����[���ya@�+��������8�X3%����L�V2\�@ DG����6<�����fEF��������SM�P��[o�8qB$��L�qR����]�60
,KT3���W_��$L�{�#qK*��������$��ht��x�^�9)a�<�;�/S��	�*�������{�x��#F������n��@@@��h���d����aXJJ
������`����c�.���9�T*=d?Oby��!
u�t.-h���YvPI�:�2���W6O�v������+����U�o������m�?a�)t�B����{�y�e|�@ ��}O���{o���F����M�6}����o���\���SW�^����C�~����>��*?��/���kS��Hb�b�J{�����{���`@t2����=t:�����r���K~�G/��|���~�^{��x6�
�
�N
F6��a�b���*��=��1��)/�S�7��L�h"��k�4�	�|>�7��a&�V%�Z(111**��#H$�2n{x��`���TF��TUU]�x199y��ek��5���;799�����(�}������O>��G}D��`�l�2��qc;�tGc�������":�"��e��%��)�T����g�X�G=>���d�Z���J�Ze�0��h0i]�Q[a�U��&]�QSa�U�g�f�u��@ ���J��o��b�p�6m���G�wi����w������C�����gV�^}���v[�
4���%��7n\\\���O������ m��l+ ��9{D�6���������:n4�2���	��O���ws�N����;�����w��M�M5��$����;�)"��,�Ph������n?��5�b��2P��#�@��wo8w����s�=�{��+Vdff~������L&s���/��"A/��"�����l��y��E���[�fM}}��O?=k������;w��N'0�a�� 
�k(	�fyY7u�oNBX�Tz�p����4���M��yP��o
C |B�n2�����G{<� �-�f�����>G'�(�?�@ <��������/��Qd������/UUU4-55����w{-�q���%��9q�����Nu>���F���e��-�������%8��	r�.BG����ls�����&������N���~"���Z3p�@&�y��M�������0�+�Z�x<^RR��/^t8J4�	�<Z���"b<��Z��L~�j(�
$����*�b������


�k�	���aaa����o���rt:=44����k@�>}AQQQ]���m��d�v3���c}��d���Gg���~����/^���u������ggg����+����f�JOo�U�����������.La�9�y��(�K��{��#7��*:~{���y�0F�U�0����.>��@�*5��`��~�Cz��X�������Y�?�)h�!��'�����6�q}�I_g24PM���d�3�z7�D_�<��@�@����Q%,�p�E*������?jkk/_������D-��J��6�8��t����.-�H�r�����4q�u�������>��a�+�9�0X�^����%�-!����cv������d�������cEW			���v�st8�$))� ^���-.3���"����R�4��i0���|zs�mcS
��[�9W��[�>e�=����f����T��}T\��d��|��QQQ���������#�+��M^^��P{������&L�������.]�t��EmN����=;%%e���l6����v�aX�mi����D�����e�he���_��~r'Fk��V�����I�o�B�@t{�CF����p����o�ozH���0N��t4��D�kL�zS�dC�5����d�7�Md���Sr�h��Mt/�B���)�,�H�;��R�/��(S__�j^*�B�p>��p�|�GK�`,�����Se�����G�>3�a�7~�i�~s����U]�������b?`C��-���F��S��>���21y r 2�$����k�Jng5h.������N�N�������p2�$�����������	�%}�D��� �9��O���u��4�H����Q��5��2c-�L�9� zbY�y;Xm:�k�����7�":/��
eq���a��~�|���G�
0*q}���"�5F}�)�	i���4�n��e��Z��HYC <���FYYY�?�����:�h���U[���3n/�&<���:y����Ls�M�W���RG�o"�<E���mI��w-���K���3�V�������a]�45j�7j��n&],��F��R��,���/��9�bNb��|0��F��juV��tmS���
�$DO��gI��H�;���{�����t��v�X�E��`v
&"]�� �,_�2����
bF����[�~@��B�+n�F
3��������0Et��U[�����0����g6����t�5��~�������`8�q��7�_:$&�C���"��4�?��OF��~����4�@�z�'B���qp�iT?��M�UL&�|�whd���fpI�����8�4"e
����2k��MKK{��W:d7���d�����`?~���+�0�
�R���%N0+QFh TR�����2���������|H5<Yx����g���.�WT(�V(�s-	��T��?/���
s�
L�P.)���Zc%��kr�498��44���7<�hwo�Y��A�N��-t����/}m�K0��[��Y
�H��-�	���<��D8�{:1��-g�$������R[�`Kl9������*��X����,pv���D)R^��`j��"�� ����>��&��rD��rd�I�;J�����0��&f}�Dn@c��9���G������
��p_�9w����K��_��o�m����������������O�2e������EEE.lg*M�q�|�GK��X"���D�JC]gw��<�V�0M1�j���!�T��}kU�A�/R������&�����
�()g8��|.�!�!�il�^�V�����kr���a=��#���d����@��P��UL�$C�-w��!�������$���C�O���1mu���-g���<��]uqy*~:�e��Fm��e?C@���,	�-g������g��t�����Y�=�6�M0v���L���MJ��:~8��=���"3H�At'�ev��������K�,Y�d	I����"��� �H$:q�D����mv�tW��x��	�ie�FR�W�:qN�fH�d��}�~��lv�
�����Fe�o��~�u�:��TWVU�T*��L�9sl�aL)/E�K��Zce�&�N�[��[��2�^�T���p%���d�
V��vEHx�,a�i�/6��n*=�t7��h��R�K,��*@���j#z�������]��m�o�o
��Q�����N1�	�Zw`��l����_��382�g\E�������������g����C����F��J�9r���?���o9�F�=����>�l��}�tz^^�����m��b��>���_MKK��� �.��2�?��M�a-�,�d2�L��*����qT����%�+q�`	��B��)
�8��]����������t�_���+�6��Vu{��-��
OO�-���H_��p��N��A�A�	`TUh�r5����,u�i�������
K��xWXqXRF�Y7��Sj�
7C}K`7n�h}�k��Qi�W�y���KK��ct`��_�0����$���N�G����~�>���C��hK���B�g�����4��A|>_���8Nc������k��
|�~MN�S>�r�1ow����E���_O�7������-Z�p��~����|>��_�0a��g��a��
�0a��[�:�D��}Q��w��@;:W��x��	�iqv�r��x�@��O���D�����i���]��[�zN�����'sm��u��J�&�F���P�f�3��_��p��5m�f
��	��	���
���4���YC��_}�����{�v�\��T
AAA��Ha�����:��d����Mt�E���������h���1�MT<����b��8�������h�O��:��p�\�����_:�.y-��q:� 8�I� ��e2YcccEE�!1��O2�"1G����1���E/�FF�co
5����1�����`�d??��R�����0���?���W��;!���iii$I~�����c2�������X,�?�p��m����7o���������d��!��/_�`���w}w�.���������vt�l���H���.�)@���N|�
���O�i_��~7(���8�<���K�
M@eNx��1�����F}eF�"��=:��`t��0~�a#��������3Mw�i�s�
��h4�;w����z|����555��)%���J�����"�����t���^�(r�0>�\XX���6qs$�?m�y|����BPPI�UU�xN#�J��a�U�=t�qqqeee������0J�q�3�~X,VLL���^r�?~�������������Q3N�]��xT�v�1�t��LTT��`�:u��c������<xp���l6��O?3f�?n��9s����~��oP�{���={����qq�uU�1��2�LK>-6��h&}}e��EeG����gT��G��T��#��<�G<�-�/�
���F	�Q�L6��`����@�&�>�\��Q{���(D��3�<vu�
�V�L�bQ IDAT�������4?lFw��2E!~I���fI������,u�iMY�����#<
I��A���*b
������Z�%B��P����g�<�@��jW�l�E�����
��D����Y__���p����F��I��w/x��2I�F��;g��c����/P/�����������L�������#G�l��i����G�����D�%K�@mm��o�m�@UTT�Y����������J��2�EGG755����:r��`ZBO����	CW���>��_b�0j,��N�%?S��?�Z���D4U����YT��,����#����\cP�Nq��`��Mj�N�7�V7�6��qk��<0E�$�H�A��:	��0;vlHHHnn����fh,>/x/4E1R5��p2�18���D���`TUj�r�L4��xCt"Xi�U
��C@��k�����4\����M������Q�Lg~;�Y����n��n���K�@���)Q&%%�n��������������r��@ ��^Q��b=����<�LRR��G������#k�����k�]����A���J���(��L��W�ALa�~���Ye�Zf����$�$`��&'�.�������"s��������vs8��mK]�3��!�@��%Y����3��)
��D������D#�d�!pRy'��YuIVS�i�D��-2QJ=���V[����:Sl��6]B ��In����_�!I�n����B�^�f������`DFF���z�����w�����3i�(���1`�������,X���O����_~�e{V�R�tL�FW��H�_k�
w�2��kz��Fg�"g�������9[0�����g��L����
���V��	��v��l�M
��u��zMn����P��^F�o��'0�O����O}7>�*��Mu������
y;�A'A�� ��D�F��b�����N�Tv���tSY����s���6�a�TV�C��3#�������u��|`��TVV�
#���$>>>&&"""��w��q����D��/��X�C�������6n����_ZZ������RSS�|�I&���_��������l�����dU8c(��(���'L�M����	��|���o�B�#�TI��RUr��.3$@0���$��cl's4>�-�jj���\��S��4N���������+��3\*o���{�����"�)���1�]��(&U�
$��ko5��"'��	B=�n�����3>�jm�3��g�	i�J1H���k�(�\y�+"\r��E�*�
ERDJ� @�$��J��&��l�����n��f�;i�������9g����g�y���&�v�A���'�L;���r� �R,�J��$�LG��O,��F��8�y�����[o���{������w�}�|��C�}����v�����2��fa4�*���%E����9����,���A/���n����0�������$xn��ft��+�M�y���~�����w����9����/�2�Y��5{�e�M���VdP����k����D�=�����e]��]m�H�:��N4zu���{�hr������u*b���Dd��{���2D�3pJ��$���GY�uxW$������7������������j�������S 99y���
�o����#�dddt��e��G�u�����PZ�4HJ�y�3(PW�S����I��/)��$`N�V	9��2��c��"������$�C�%}���5M2�-��d0�����������=r����Gk��U59zS��k�Ze2���-��&���^�=�
��E��I�������N4W���	9�A�fc���3.��!���;�����Z���D/�Y~+++���CCC����Zm�BUQ��xP&&&~��'��_�p����QQQqqq�!(c"�������K��g�t��$�6�~Y+���WR�Y������v���Q#�O�=P)��T�`��@'��l��)���[k:�,�U]���uam�~����7,;�H�>,P����F'���F-�*B� n��V�j�j��K�&''�s��x<��e�@���>}�^��/�,Z�())�G�/^�<��E���0�H���r�����YvvvTT�B�p��v�L>��$zy������i)���ev��L��V�	��P�����eJQOzF'�!�������P�g�\}�Z����V'y0e���3r��ATO�N4L&�fu�}Evu��������k�c'd'�0�T�Q6�!B9(&&f�����MS�T������LOh����j4z�u����7O,���w���t\� ��������6&S{�D����LYY���o�����=��6A���,�ulfB�,K
T���]������o����j=v��<&Mi������J�����q�mwq<��u?f#[���T�������8Y�A�L.y/f�E��-
����;�H���Md���
�C�w��h�/V���=Q���F�Q�0�`��&B�HYY�F�3f���w��;��r{��E��MKK{��w�-�������i����������/��������������f������9��A��'O>��������}{uu����~�i:7Rjj����X���)�X�^�Z(;��~P0.�Yi
�wT��@�z���l��lR��3��U��8���sc����1e��KJ\��5e6����O�G/	(
H�D6��d�����{A��u������.���
��?$������T*��a�6m�4l��~��1�7m��`���o���m�v�������������S����w���)))PZZ�r�Q{�xPf��
�>�h��=w���`����/[�+f���~�zHMM�r�JKk�pI9�,�3��UM����x������������"G�J�l������!Iu*/�@�����i,[pY�)���'>����sr0>�l2���2IA��
�,��e�"���L'�gw������Dc�{���#y�s]um����hNkq���N�i{���j����#F���{��r������?����op����n�����#11������������`P5��A����o��i�������<r���k����e2Y��]L��Q��/����d�	I>��^b�J��`�����~q@�8 �o����,��=��{5���L������5{=��s���0[��PDh*j����1Q
��x&���u�*�{,���3�^�5L(���2��������l��W�p���'��/��Zv�a2�����s�2l��:$��J\ip&�� �����s���;w��6&L����������6���


�����u,�e`���������*AC�:t��7n�x���/]���R�������`�RS���a��=�{�B�Mz������{U��k0H�yYe��Rwq�{�����<���x~��)��)`�U����'�^9U����&���lg�,�����f\��f?�k���>Zs�o(������^7:1<�������*��N��:e~�.]d2Y�;�S��B�*���p��`����-d!@�����D�ZP����P�egA_��
�dw;I�R
�-�2����W��G��w}Uz����y��������u��z�j�Ju�������-X�������C��V�P;�����h|���6l�0}�����������J�������������/uu������`�F���-o��lt�iG S�<��y(sMA���n����E6�@���h�n<[�C�V�	���=n��t�`:1
�T^^�����fb��~��'������UW������D�aaa���UUl�������5�=_E���g��/��l����d��������,�P(���n�������I/��>����Q��E�j~)������'x���'��)��;Q��Z[p�����]5�t������a���������ZrZZ]�w*|�{����*G�C/��Zq�����B�������/_�P(:�t����������s����K�v�Z�Z���D�L��2�[�n�S�7� �N2|��}��
�=�os#2C��������#�1���nP]�������8�����{�`�������������Tj{_:[p���Y��({�`d���e�����*��k�&���E��fv����#v~-G�L&v�2�/)�_&;��IU�S���)�s{�����{Sn��lw�����b�p�y�u5�E��g�s�kn�e��&��%�l��Nr�� �������^"����V�B������2eJJJJ���8F��������._��5���'��2\.�hl:�����o��!��������e,'W�<y�H$���?��x#�Bi�����nQ��nA
�+�����G�g�F]u�q��=UW~���sm�Q;a���jN����_�8
OI���aq��d���{���A&e��F-EP5��F���Ze6��h��o�P!	H�v}X�/��0G�fc_�/�3�x'.���N\[p��N�;k�����S�'P&�2�������8��+�:4$$D&���s���S[�l��{wg��#�9���e���>k#.#�H�-[��+�0���H"�DFFM����2�����(��]Y;�������@������G^*�h3mI�
�A���AH�P6R6���O����A�Q(;T������1"������"""����4���l~��U	�[
��<C/!D� J��l��L<u�4��N����V����rT�Y~Q�c���Y�����=#���F;E;����:������'�>=��0��\��U�:c
�B-�b��+V4w��������>�sr<\���Or����z�~�� �I�&�[��K�.`OD�����-..�gx||������V�:�n�����������WY�o��K.�{����2S�f���C2L�}�"rB�6%�$�=i�-������^���&����������nnn���&���$��{���B����\����������|:�}�����I\R������� ���f4k>>M���L<��|�^Q�"P_��j��;������:����6���������s������3���'���x�1������%�B��A����Op��i��Yf�
		Y�~��������'������9E��g��hK
��N�Qgg<�e�v%����/&�_L&H��K�"r�[�D�w�XW�Ag�����S�k������*��B8e��t�$I���I�I=��������Q:�Am���[�7��&�0(���^�x'�H H��d~ ���P|�2����N�������a� ��r?+��r(?�A�B��A�g�yf��-�'O��c��)S�z�@ X�h�[o�%
�����W^���:��:��8�2fA���wr
�l��=^�{���R�{�,l�[�Dy�h�b�*Ar�'�c�3�r��'���7`"�,���&2�Y����.�(3hn`P�K�;��|{�I����(E�����
�4h�j��OF�n6�E��������
��3We:y�8�B��8�����?�0q��_~�e��u�|�I����l6���{��7U*������<_������N��A��l}���3H�D:�-r�"r"O����\E0W����F��g����k�
�"�����h��Q�<==O�<����J5j�x��tW�����kr1�/� Lz5�<�}��J��K���{7��F9A9,;�T��W�v�J7b�����������\�����q*�k�u���B���E)xw��a0~��������$zeZZ��y���;����'$�oYiu���`��Q]�����yb��n��'��j0e#����>�>�-<���������s�9�_!�"��d:�Zs�g���@��"[_�}��L��S<�+r��!Rh+�s;�����_�*F�Z|m��#P�c�j�*++���Z�t��yP���y�v��5y���;w
��<��/���I���p�^�/5DN+U�����gk�Z�w�G����TtK"��6&H���o�������U�v�n�f��f���{&��Y��s�8��Lz
��F��]��U$v�1�e7�)����m����;N���R�3����D��f�E��3�j���k�P[�������7q��]�v�D��={��������\#�T�rmm����*�����3H�H4������qi���xR���z�~�l�V��P]�Suyg�*��:#�~�"fYb�f�E��e'�/�����&�?W�icG��
������	/��N4����;a64��$~%u�
�,�<<���������6a,�B��2p���q�����w���A��7�v�q����2����Q���:���JM���rE�E�DiPb�0I�H6R6���Ot�W���V]�S��
T�;�j��A�L.������79�S3�U[f�����A�)�%�}	���6:�D/�d�tP:��n}��
@yz-��#��H����nb��@ �^x��g��
�H�

H�X��C��FsQuy+V�c�g�(>�>W�)�����G�hpc�w��w���%��2M���k{���2�:Q�i��D�j��('%,�,�Y1�+3���	8�8��4(Q����K�����V�h�`g����	�eyp�B��A�Db��"����:_�,K�����V�Lc�-�/�	�+��_9�-j��+����bOe�e��l��?���������W�,��Q�g�R������.!�8�^��:��:D��{'���o���W�~�Y^*�� �oeBu8����5�u��8����F��������(���^^p`��=T9Q9A�uH��	�+
(
0�=}E���������(S��5�+)�+f��D��K���8e��e'�/���K��B�p%�M���'��8~�k����k��Z�J!���5#(��w����A� ���/3�b]:}Evi������R6R>R5�'�ipc�{�w���&m�:���?T�~5h�Y�3Bm��c����%!T_aP!G��j�G��k���h���C�v�1�2IAy�C����B���9�~���=�F}9eXb�V����?E~��"'*�O�7�1G��?������=���� �~7^1����e�}j�w��1�/BN�t���AA#�^��5i��8v	!�P��A�1�,f3�:�)�>�l�-8[[p���r���<|�[�Dy�(�+��1Ar��t��v�]����E�u�-��+u�;���!�a��z������B��t� ��h0(�4��/���orZS]eN��
eg6�|�<b���xE�q<�o��^��V+�WR�)s�z�I�1�5��j����S��4�Q��O����bfYj���j[�2u<vv���L�*�BfYB�jr�t���!�PG�A��YL1K��IN[a��������Ny�("'("'J��C�l��e��5�L�J���l���Fm�IWi6h)������P���Jcm9FsP[P-|0Y�P�p�%���*�0x�`�J�o����R��)�>�L����p�B���2Nc�1�V�	j������r���yrE������#I���=�!�BR����5k/�Ak��&�����:m�Y_m�������������z�I�1i+�-�iLz�IW�'@N�q���`P!�)�e��-����=�A!�aP�i��D���>�y��X���A���eg�*;����{c7H����@ ��@�����:��K���l��
:��^��:��5����.� m���mp2��k���%Z�������Y~Bm��x���-Tt��"��u��B�e���WH�[�ZcIk���ll�v�2	���RH��B@s����:�L]��=KMz�I�2?H��2�T����^e���es]�xY1�w��s;�2�-�sH��2�e�f�EY


]�l���JeZZ4��� IDATZrr��-[(�;l�e�Pz��J�7�U^0�M,�!�be�C&
������be���I�H���o$O�)�B%G�$�B�'�����+R\!�q�Jz
I�)�bO��k�������.�vm�~t��9������y�N�c6h��^4�=�8�nu�x�-@�����=���Y:B��4hPJJ���{YYYyy��q�����C����,��Yr�����iOB-TVV�������N��;v<����x��?�����]�v]�n����Je^^^��]�/_���o���[�y���� j53(���OE���r����]�]Wr�f���
Z�AkP6��'�C6t4����������p��;\�W[��C6�W�\�ct9�)���$&m�V�7�$f�Sg��s���Bm�H$��������-[�j�*�����x������������R���e����!��}��W#G���U(��u*0(��|v��"�+��C��o��J���c
��;�^��������������

�j����6$WHrE���H�)9B%���.�C�#TA�8,H>��)��bB+���l�R����h+�Fm�?�]Qw�i#�:�+)����g���a#���<yrPP����W�XA?�:y��o��f�������Z���>��+l�B�[������k�8p���:�/_n����������S�b1��;w����WWW���V����t�%�G����+�C��1���$G����H9Y������r�6���#�q�
R �d����8BG(��e�Yy�]��	�m��L[��IJ��7��je9�K��#���q����?�l�����^�f����I�4��HA�L<���j�����
��*�P�&���/�������y����7�j�P������5k������M����1c��=�+��;�'��}s��K��.�Lw6aV��
�������T�>�/���89)�q�RR ��89G %2_��q�2��d\�)���0+Km9.���:I�Q��m�-l�BG��\������J�Avu��������+m��G9����������=J'X���'��={vBBBqq��c�>������;PnBB�+�����{���w�y���k��t��u����z����.//�|�����������3�}��s����>�h�����������\��k�>�������~)))�&=?~����xo��f�9eF����s��Auuu[�n}���.]�!!!999|d���tC���O���O>����z{{�.��w>�
Edh��������0j+��#��|G �����'v	��-,�����7|)G ��%R_F�t��h����Nc��=��eB������V�KKKCCC���Xh�o��r� #���X���7����Jett��!C�F�oO�:5!!�^vww����>}zRR�_���r�,Y�r�J�C��������6m�SO=���?�+�O���g�I�R��L&����������Q�FZg����MKKc�OHH��m������k�U7�?���kI�^F�E����q�m�9(r:���n��Q�P��f�y���			R�T����D��|�&CK�Y�!������5���y<%�+;w��L�|o���/H��f;��p������g����7��,K6vl9�R�����5=�|�����L&s�'������Gv�������v)�@ �H�)�UWW�BAr��d2���6�i��d2
�-9-�J���	��[���J��***������K-,E�P$$$��
k<����G����
4����B�
���>}����r�u��BY�G�����
c�8�H$~~~&3����~~~�|:�$%	�4��������;v___���2l��QLD���K���C������KBB��l�������'L�@�H}��������}��}�����}���?>11q�������>y�d~~~������k�d�~���={����N���r�����Y���OZv��1:���_�������3x���;�}���h�:u*I�555t��W�^��_o��111������k���<yr��!�G�����v��A�hf��_���KKt�������	

j�]�dh�+��_7�D;	�B�X����%����s��T*I���Yo	�D$I��e�����f777�������O��pd2Y3�����<��`us�57���5�tOOO�7v��nu����N}p������7l*���S�4�m�T*��U8���K���e'���ZY���@�'ZrZ2��\�$I�'^������9��5j����z9&&���;55
O����:��r�	IG�XC���!�$�f����X,�o��A_���%�^^^�_������Brr�3�<c4%��hc�i���Ss���+55U$���O�:��~��\&"�n���A�:t�L&�4i���~�����'N�3�n������������kO�<iyX�Z��O��7o@bbbjj*��_s��-�e�����V����������7N�����={���D��C��r����	bbb��������[�&/ }g�S6[�b-�@���c�86q8�����kW��OOOv�4���l�����-�);�P(X����V���j��
��~����u��-����<����d_��$�B����v����U[[[�_��xzz�����S���_,��{W�R�P���D����1����t�J�&�I�ecB�1~]]]^�u��~��'L&SYY����B��������O��t��Af����+--�J��@S��m7�E���mB�P�T����=��C���+����K�TRUUU�BYR�4**�`0ddd�P��������+�����]v�zp�\??���|�����X|����wRv
�����#>>(�z����F#���������gc{�8q��,5##�����7o�;���I���?��sz�������YYYP[[K��!C��^�u���������;v,2�*(���BGd���S������6vyVA������������W^y����v�G�eM&S��^���b������Kg�������F<k�,�\N�t�������4�]3�$)����RI�Z��MW��xA��������r���j.�Ph0��g+
�bq]]�@�H$���\�G�Z����\.�����O��?Wv��]w�c����g����������eDC��\DDDYY;_^^^*�������x�����?���4C���yyy7n��l)777ooov���A��/��X�t����
����j�-9-�I;URR����T*��`��`N	X�t����oQ�l����i�Lf6�]t��z����p���[r�i���@��


X(���3**�d2��e
���\v��X����V���t�@(��M��������b��@F���+����������S�N���*r��	:(c�����@z4��h������?�`���?O�(*--�r�S�N�A����w�`E���:���~�f���'###�����^��U8����/((����+���7s��M�69\��\q�SUUu���&5fRz�]��N"����dff������E"QZZ�e��:�����
e)���c����PDEE�����w����=z���}�Yx<^\\�9;r�8��Q�<==/^���+v�2,��4�8� �o�4V�����(&&&""";;�Y��������E�4V�R!��1c���c��z�V�X��������;^^��������0�����eJ������fa�UWW[�-++��LF��z�k�J��^��2]z��[��V�
x���D7>�+Y��a�o���B1���L�yZbb�\.OMMe�Y�k���B��a"�]�vefAooo�+��T4z�h�V���o�
��2=�H$�S�)����,���H$�J�J/��in����r����O�r�]�tqE���h^P�����sxzz������O<����N+������}���y>^: ����[�kp��G��>��?���������7����?�giA��0���+�+S9_��Q�;�:T�C�-++���"��&O����>}���&O��d='b�����C***�����I�&1���__TTTTT�t�R�V�t��9s&��H$�6m�|��;Kl���r���r����~��L��h�O]�n������/�������o���c�����*w>!�����?��������~qq1���B5�����~���9s~����+WVTT��9����������Z�v��C��}��7tF�����������3f��6�R({��Y�hQuu������z�z�_|a��~�����
k��),,LMM4h��oZ��]��'�����KJJ~��'??�O?���8S\\���?:��m�(j��M,�?�P�V�:uj��a���wEq��h^P&##�I
3c��V��YYY�����d��f�;�P��:�v���_���x���RRR�57n��<y2;�!�:�>�`�������-99�Yo6�I���&����>}������W7+
��+�}�Y__�#G�X��u���G��g�}6}���zH |��7�|���f.t�(�U�V��5K&��d2�)��F#��=;�������0?�3f���+�_��;�P���:�������'����8p�@ �r�������d��N%'''))i���L����h��7�|�Il���?3fL\\�������|�A��U�T			7n5j��l6����/�����!C����{/��������s��9|�p�Jl�������0s�Z��3�}�]f
�x��m����)���|Bm�� ����������[�"����caaa�{����IIIjjj~~>=n������o����O�>�����/,,t�����1c�����������9s��L����?�{����G����������K�.Y�����/������hp���]]�/_�|�r�����qqq			���EEE'N����_�f
�.^:vH�ef����z8�� ��&��A!�b������4;����KMMMMMma�Eeff6�!���;w��a-;*����B�RRR>��czePPP`` ����6e'b��h�}�����[�D���8��h4�,T� �8��@@D]]��lf�8�$	�0�L,�E�@ �(���e��r�&����BYtq�����Y;-�|>I����S���xyyI$�V�U�9s�������t:��+��p�f3;'<����xf���@<��c����'|�A�$;e}
���Y;U(�b������W���k��e� �;O=�����o�_(^V9Q�;���_V�|Z��W���J$OOO�V�C�:th������Z����q��C������?���g���7l���O���o�{����#r>��2��Z9k�6���
��!��UTTXuXm�bbb��Z�P�CQ��+WX������{HHHk�!�*����|�l�2e��)S��L��?���,��a����y����1h����j�k�\���L���]rB!�B����x2���JW�T��u�L&[�p����������

n���y��m����m
���XIcc��|~PP�=�l6o��]����4!�B!�X�����g��*=55�����JG�>�����6�I���w����O�����p)!�B!�B��(���l��]��������[rr�+
B!�B!��H$�'�fG~~>kI�������'W�^}��G���\ZB!�B!�P����EQ'O������ �B!�B����A�D�T*]]B!�B!�P;��������1c 77��!�B!�B�/���n�]��|�rwww����=�pA!�B!�B��A��7o������o���pA!�B!�B�k�/�t�O?���_ti)!�B!�B���=ez��m{�^��M���p!�B!���$���;��?�t�Rgs���o��v\\��l6l�����)�a�e222�X�B!�Bu�&M=z4EQ�:`\\��={x<�R �SnK8��$�BaXX������^zi����r�>}L&Sc[6l��5�����/]��F����m[TT�����;���d2���G��7j�:77�������*���u�p�fsiiiqqqkW�	"""$Ik�5CGm�8Nzz�=|��O�>���uh���EEE555�]���Daaa\.^�3������������222f�����uP&���������+��
�L���o:��III<�l6O�2���������Q������


����y���[�N�>��h�r�������:��\.g��t�b������Y������rm�a����Kc�5v�x<��zh����V�j����`0��{��k����u������y@///<i����KDk��9|}}E"Qk�5OGm�����9���I������v-P����1b��%K���S'rww�s�������r[��A�����>�h��A���h4�����wt:]KA�C"�����/����;wZ�.!�B!�7AAA�O����ui)�c�����e�|���[����)��z}nn�T*����L�����1b���j��	�E��k����zY.�w��m���
��|�K/��������������k��m����"6+�B6�={v��-
����"D�PC�i����b�QU���Y�TJ������^����y�??������������$I����?�|dd��d�~�����y�f��lu���G��3g��^^^*�*33������
Cc����K��O�������q����7m�T��$g����s����r8�����?�|��-K�,y��ww��5y�d���,)))�&M����������������+W��D�dYY�R�LIIy��G����d2f@�H$b�	-�|����~�^���]����S�N����s�$�����M�H����7n���O����SS$�7n��e=z�����'�|��s�9��uv��������������k��>>>q����� B�t:��
!��,�F��U[F�p���1?_K����S��0"2<<|���t����~��'G������GM�8���o��}���������of%�����/-�y===�:t��_|1))����~�"�h���#F�`�$&&&&&�7��'��yH$�]�vYn�������1�������X}����I�&���X��<�^2d���=z�P*��o�>zMVV�T*e68r���.S��
�B*����R���su�-�xPf���|>�d2M�0��?��|K��������������>k��e���x��m��=z����r&�R���i�|�����W���>�(�����������A<���C��������������N�����3����y�����=�6�������SSS��\.�������J�Z�x����v����#�x{{��������u+%%%??�jK�L6u����Dww����c��m���F5�WRR����`����#0(�P���j��
!d?l���B4���*"��>]a���*kiR���d�$�O�~��!77�7�x��������p��H$��}��5k��������zzz.^�x��5Lj��+W���/~��g���		y��'�N���G��{�����~��u���1b���?��c^^^���?�������{��G��k����~KGdRRR�m���������k�M�>������������a��1A�RG/���W,����/�j����Y�f��5�����%K��;��W��,����F��u��YEd�a��i%%%$I�9����s�,���?��n��������|EDD0X.w���^��������e2���K��gzMttttt��	�y���������%K<<<��$�g��%�EC]]�;��c��'� IDAT�Y5�7o^RR�R �d����Q�F�^����c�[�V��C��������GEE9kn�������B��T�*��l�h��X!����
����L�%�55@,�����Y�Ta���t1u]hc�B��G��faa��3����w�.�6o�<s�L��Jrr2������9NLL��#G ,,l���p���I�&UWW@zz��;233�������k������U�c���={������|���7D"��?�e�
6e�X�f����J�$--m������e;@s�>�����v�Zdd������?���A���������>|�~��\�t����9>��NW�|�
*++����s��������rdd$�`�F����d2��������$_{�5��j�g&�����/gv�4s�L����9s��G�(��>����Y54h��ECuu����0[�$�����h`DGG����t:�188��	P�T��+�P��&�
��W�b{%��l���r��@�i��'ot�/c�G��N�be�������h<z�(��t�R��DL�&e������������w�}�����`6�.|����k���s��9���3=�{YY��o�iY�����+W�?�����o����
c����?���]yfXI���&z��{�TTT����OAd���R�.��o�V�Tt����������CZxx�����������5����z��I/|���������KHH�)S�|��7V�FGG�T��/j4��63f��q���/��"--��iVM����x��e���B�p��t�)BCC/\�@oDo|���/�����|���s��qb����Jz� �T�w�����UHH�'�|��[�w������{@�:l��l���������?}�t�����IOO�ZSQQ���Vi����������#G�\�|��-����W_�Z�*&&� ��8v��]?[p�i��3s���Z����������"����8\;����_�����_����]���=z����O�>�����8��2�A��
�?�������}56uE����{��@}������0E���`q"�����~;++������U�V1�a�
V���7o��;w���_|�E��4111/��"����?��mVM(��z����W��'�]�Nw��Y�hL��N6j�z���999�f���?��C�U����&��xd�:l��Bc���W�^!�0�6�\o)<<��D}t"^�HT2����&��r�v����^�g�+��>v:z�(��l%	}���1z<W�~���
ttF�Vc4�6��2�W�6�L�������x�����>|��y@�d&,,������I$8t��^����
L����,�+G`` �p��i:Q6�d21I�
E�N����L���,YB�������c�=��Y5Y�r��%K�,Yr��A�H;m����z�������p�t�B�9x��e�]�����~l|-ur�X�zc���W�^ux������?��5*�*�6y���i�BBB���)L�$44������&��r�"k�~���N:���?��������s������������L&�@��_?��9x�`K&���t���������o������~��g7n����Axxx$%%-]�4:::;;{�����B��0������1��+W�deeEGG�W�������x�x��	�,��~~~��A�����\g���)S�4�m�������?>>>��2�������buX�Z]YYY8�c��Pe9�!d	���������K�,i�.!K�^5vX��WG�Y�fM�vANA]�.4���������0~��-�}�%T*�L&k0C��T���q���yn9������]Z�o��6n���C�2Yc��j�����}��:t��c���p�R��)�c����G�������s�^�xQ����O7o�
r����#��q�G@mEEE��I_%�L�����7o�������e":zA$1i��?��l/���cf�o��t/1�#�<�d'����g������<y2s�PZZZ>2�X�=L����\��#��`c��X!����`{��[�E�o�6�rD��B��G�[�n���NL%+��Z��>4�����gll,�P�~��D3d����Xwww`e2��������?����[�g�t�dxzz�5��rQ[�\
t����|�����:���B�!:�����h�_S///�cZ&�o�O��7������\.w��Y��oVM�\�����������6l����O��=�*�:���0�V�%�~A�y����,_W�\q�1����j��
!�,�^a{��|\j������W�������������AA,��;b�(..v,VXYY���
��r
`�>4����1c����{����Lbb��1c ##��5������N�h�'O���h���J��n`�8�x�"3uEQw����3���7n�h���O�>�r�DV��X����*==�>Hbbb\\��K���Y5���cf:��q��'����WUU�t::�U||���{�������-���=m�4���C�Z~L�,{�������,m��a��9�������x�	�ehh��e��T*�������l��cB[+h��
!�\�^�W�|�i����9��������=������36l�`�Vxx�?��z����/�,Z�())�G�/^�|k��E���������/\�P(3�nN�8a4�B����.������+�X�1\�|�`0�x<f/}�@�b�R)�<�y�C�z�*�k���?y���;w��{��A�{O��s<�#��l����?������J�����e71&M��I���IQTZZ���O�>}���'��DM>_j�X,fRs�������'2���K�p�`�6z�h�i#tn|�Zma���=h����ww�������q���7���z���]]��
+v+�Ph#��V���g!T�W��W9l���7o����X�n]uu��m���qqq�w��p8F�q�����u�����{��?~<�!b����Th��\]�o��6�|����c�������3g�$&&�oa�m{��<�����+W�����YCw��(���[�z�b��;w�r���w'%%��|�9sfTT��+W���CNNNv�V�o�>z�(��:b��a�kb�ov��9~~~Z�6>>>..��aw��IW^��S�N���'$$86]dd�'�|��[z����>�nm�P(1b�������������zww���D�������}��e�V�2�L����Z�p��;�?���wp�X��X���4�X����-BM�����
!����=������d[�n}���322BBB����3��W^����Iyyys����iS```FF����sss������s��I�F3z�h&���9rD����S&��Vbb"TUU�:u��u���A�A�Oi�j5���t�������b��JKK��_�����7k��Q�F1�������t�k�u�V����g����������\�|�^)�H�M�6s����8���<����f��$9`���'�������d>���h�~�m��l�����f��=QQQ
n 
o��e#%��������?�b�
z��'O����`�������+�P�`{��j���93h����O@``��	bbb�(((�6m����[x�m��
8����A����?���g���&L�s0YN6�B}�����������24:�������JdC�z�1n�����&��g�nIA�����j�@d���g��I/_�t������6e�z������'''���,Z��*Uxee�_|������[��---�j�,����������]�v=��c��������g�UVV2[���3�������_���c�����������[���`��	�6m�?�[o�UXX���O���`�^�_�r�SO=	uuuV�S����h4j4�����'O�����fq�U����y������AwAo��q����������?�Y�f���$IZ�76�T6V.j����&�>���j[�
NS^^�X�A�l�\�^�x<fY��a��B�q����j�����K�.]���z����..\�S,%&&zzz�����������v
t������u���G���D����J�2���V������T��<x���2t�Pg�������m	{���x<^rr���>jW1v���5����d�\��b>������r"I����t:��\N�duu����ADDDDFF��r�F����������>�#��(��SM�$""B.����6V� bbb����j��+WJJJlR*�������g����vq�P(
������
A�B�n�R)�����mr���p��~����������>}��9s����V�~'N�����~��g��5j���Wff����>�ls���A����;##�r������P//���2f��Y�


��I�r����Z���#�F#;j�@$�F&C������HTSS�BcE��Z�V������+OO�~���d���
+777P��6�R8��7���<���x��d2�$h���GQ�����X�V1v�X;�^��*�N�������x�]V)
� X��������������Sp�\�Tj6��ju�w]�^	�B�D���������*�$k�U2����������'$$�sY���e9"�e�����:��	"##���~��G�����������{��_~��U��Z��'�?�<���t��������U�P(����������s��*&�HBBB233Y(&O�,���9c9^�E8�����p���]](���c�����~M�9���1.^�XPP��������������455���x<^\\���v�5j���gfffNN�cG���IIIqiP�1aaa�L�	�&Mz���g������?����N���'Ji�"
�����x�����(^���������"�r� ��d�r�(��M����������4���i��-|�/^�f���|��6��g���
6��7��W`_	�|�Q__����/��x��|�A���$�������(
��n�G�QG�T��b�������=�|��F���x<�b�466��$ r�Ujkk�o�f4�Zm��"DLL444��0�!�R)EQ�Ip�H$R����t��r��9l���R�,,,�Ni��aiii����/|��W�^EEEQ����^.�{����|����N�8�p�yT*�m����mK�o�����������`]�������555��<�x�����3�c���
����S!�����~���]r[uu��O�5k��L����h����g�P��M��[�����������3�@\5�����={��?�HQ�m����;���5�����_�0�eZ��co�333�"j,�����;�!���X,���)����qqq��a�z��������u��R&����@� v���|�r�Lv����K��)H���{��'�z�)x���B{��T*���*����y}��};��2�����s�!E�@ :��a�Xv���{���_>|��g�������� ��\`���$�n�:����C�i�N�$�����2���p�<���V�m6[��]�T�����D�$$$�B�N�������rAt��f9���<�)`>�b1EQ�I
�D���.����"��D!#/:p8�J���~����(�<�$����l����!Q��D�D��X���]L�$�0�(���"�sv$IF�J�v�ry���j����������O�6m��]�
b��<��8�w�}�|�����z���{�C��L�������(�����B\e0y:�����@\�l������#G�����g�^�W�T2�, X�������������;�P(dE�����H	���z�>�I|s��j�����<�
<����)�r�-���������(L'��5Mt��fQ�����QRRRGt����������U���8��p���ZA�0RU��>�C�p8�~GG��\.7:3����3�`�aX�.&�a\.7:Z{%C��y�h^I��*��M~������E��5*--M"�TUU9rd����w�����w���}{�v)))	m����};��2%%%���IIIQ(2�@ ����7�|s�~����SWW�R�
E��������i�c`�1��@�����j�����Z�����d
������{I$.����Bf��!��MIII�D��LNNEQQ��b����6:z�L&KJJ�X,�9;�'�J�v%���D"�N�9
������6�j�K�,	�1

�V���tg����l=��S�����a�t�����aI��6�e����������p8l�K�E�9�@ z�+�@ =��E���~���/���C=��WH�AD
�F�v�kkk}1�������������>|�T*=t�Ptx�=� �n��B D���K�f����_|���O?��w�]�x�h4����?���D�A�e��������^�`��5k|���O<x���'YQf��M�W��1c��U����,X�������9�@�8�cP�%�@ �?e~���+m���n���6�E�4�n����F�.��(�?��O?��r����{�������z��O>�$M�O>�����N��g���=����[�bEcc��?<e�����m��u���Q�@tC�|�@ ��H��~����+y<'6�� �
B� �
B�"��U���]jr����8��2�i��v(��2<F;�p0N�����8
c������|j����?�<u���>�h��9s��a/^���C�w�[�paLL��)Sv����O�<�j�F��V�s�.�@ �?��
������_~���f�(���F Z���D"���A}r$Cw�a�Vg��\�W�q
B�&cH��������9�������Y�a�=F;�]���rie#��lf��v��y��;������+�
~��7?����1c����p8N�8q��q���oc���N����7b��WTT�o�>�	qW
�A��
�J�]5{aa��������t@��N�9D�es��Q�Q��Ud��TjHU�T�J��7��b���]�8/�mK���3�d�m�j��L��J�,����=&v�BY
��B[���B[�����Xi�����t�����4�������w���{��a�0L~~~~~~�����t���@ �	(q	��Yp�\�R�U��US#����&,�V�<�� d����1r\�����pBJH�D�!il�M@������j(���!������)�����
�5n����ae�+z��=� ��� #�;�DDP|SyY��+�2`1��
oa#Y��J��C*cIu��CXp���Q�i�{�Hnn�~y�j1!�)."1.�b!�"v5
>����%Z�wt2.e1QMM��BY�83���4�#ebs,���1�bv��)B���yw=� �.������.���N�EQ:�������������f�9���E�O��J�Ws�a��R��U.Q��4��K�����g�����44x�n���h�/UH
��~y�smG�	���p����q�����Ip���p���J		k�W����G���HeJ)��Xh��27Q+c#�S�Ra����&�b������8������P��H��s�UR��m	]�����;����|����/_n�_��/z(�*o'�M�Q�nh��x��Q�il�:zX��Z�P�?��vo��=4����C1#YYY���f���H	.��R1.�"1!R26G����TB��M2B"%$��#%$2B����?�8\���2�����=�V�t��N��y��2[(��q�0�(��3*��$�]�[=�e��$w�FK!�}Y�DC��;���v��3yHeF D7%tQ��^�q|����z���^QQQYY)
SRR�����
�*�*==���=��s}���2e
����m�E����c���s� ��jO�����M�B�W�D�PB�^��� IDAT���
��"!g�1.��2	.���j$j�A�v����1�\A�C���Z�q,Qx��kK����Yg��]��@ ����T
�K�j�����@ ��(�j��
6�������+V������[����{���s�����&M2j�z���/������'N��g��p���8!�$8W��`��l�Y��X�����|�f
���Uc�Z�hKHH ��R�9��fl��F�u�������s�r������oP���_����|�/���
R��x\p�2)Sr>��2�>���������^}5O����:�� DKZ��,�^D��@ �-��23g�|������n���V����O>�dYY���+7l�p�]w�t�W^yE�T��7���B�L��]E��^��A�n���=�-K� �v�a���wm�v$0B�Kd�D�\�XNHE�H��{%!��T������uv��XFH$���"^V�D�V�?Kx�q��Z�����@ -i��
b%�4���-���@ ��c��y�`���-�W�^�h��w����w��1�������7l����Et+��OD���C��o��prbr��o������)��q�&V
R�&X�	������i�"]&��sY��S}5O#Q�@t����f���R~���q/�_��E~!���2��������
�0���&L>|8+��9s����������2q	=#��A;�S�ia_����#��!�����_�Z���d�v9Q6Q�K�8K��5���/R��8S����������	Ja^��X��@ �	��M������Yjj*���r�\�$Qc�An��6�R�,
�&���S����N"��(��]w�Y�1j�v
����;���e�L���p
�@ �s.�2N��L����mLv�s]��@t�q������5��F�q��A���D��~�i���Q�
	B��)((>|�����s��+�R8p`�����!o���n�	JK{�kU��|�P(l��$I�p8�w>��aX�����i�	q�od���?��F��8��Q������</jWH���t�� rs������9R�T;v����<xA�F�<<?Q��h/�4�JQLcG2������C���;���� ;�:���b��>j�p���*��79���;�����={�������Z5��������:O�<y�������7o�j_���2�����>e����z���_������l5����?��
+����o��9����������v-�R)���`�;��$IFn��������c�?T�/��"4�?���H$��\�c9�a��������gc�"�R��X���0,�W��4
�b?�����ztu�����42��X��O����}���"�������)�x�
k���z�8��?���e�v���w�q���iz��illl%�_"��������3L�<y��Y{��E�LKBe>����������-z������������*�X���r����?<�}����x�O��n�:�L�p8��]�S�,6�M���k)�J�N�����D�����5O�������rW����2�����t��
�����FKl�B��wo�������������$�egg������������������
�UUUeee���
���GuM����\v���$� �.�G����_��K�X]e�_��<��)���5����|D �v`_�?~|���-�����3���������k�H�(CQ��w�����O�:U�V/^�����j�3g���G 99Y&����i����v�/"�\'�~+�o�U7���dN\F�P�q-�����xe�b�?�&��]V��7�,���9�!%p��)���o��<�8���]���g��?H*����AD�F'q�"����HAQT�Hrr���%� "J��~�j�N�6m���[�n�p�����m�x���o���_x���g/^����o���}���8�7���W�X����@ �n./�P�.�6lt�����~*�n!�|��K,y+0;�Vw�{�p����8��[_U��K�����J����M2�_1�S��_~�e�a�o�7�p���[kjj�Ngii��u������38����<x�h4655>|x����-]��a�]�v��W�,_��a�����0�0��
c�r8�Dbm&B����m����j�����~���'�|�W��G���'�|�0��Y�`����y%%%E��J��2>8p�� I2%%� �Ng0���2�n�')���.�R�f��C��]�O�y0��tk���f���q4G�xh���
Y�eW��UK���.��@ ���e�����'�������4NT/��s�s��Xn}���.`\���3J��U��*�g������`WSSSg��=k���3gn����R$}���c����6l��ac��9w�\g|0�����2�L,�����zp�\���/��b�����z�-�tf�H�����}�R�-�J5j��Q�F��;��;���i�6/��f0����J�@ p:�z�Z���T�L��������-D�`���{�|��������� ������F�����X�!�|�c������9�'0R��e��5�Ka�}����"z�!�6�A���Ol��"��s
9�m��V������G����[w�q�]w�����R��r����!C����g�"�k�����:��������9s���s;s)��]�����������������?��c��+XE����O<����_?}���[�@nn���{[��y��,Y�������f�K��F��za��A\\/�*i�o�A;�R����������Wq ��y�`�r���N���j^e������dw��}�sk��w��@ �yb���/P�}#Az;��!$}5O���{T�B � v�:����s$�9m�����������4��5a�6�v�������������]����of�G�=m�4X�v���>�v�>z����;��������H����d����s��w[,�����}{AA�k��6p������>��+���h��E����G�}�|K�'\�R_��/���B�D7�e6����s�}����K~O�akT�C �6�[�{	���_��w�x$;��Yx��m�Z�DX����?���,������O?�7o���#{��}��x��'@���EU|�Z�v����y8|���80�|V�aa��7�|��G���}��Q��n��	]�y��W�7F�Lw�������}#[����0#��5���@6L��|U�#�Qp��!��#L�;����6}ovK��rn}5O!Q��A�8>g������_�~$I�;wn���~����Kzz��e�n��F�Bq���-[�l����i$H����)����KXA������2\R���s�nmT�C =6i(���{o��y�����yyy��_����������>zd������ZXX�����_���7�����0,��=���h��E��?0.����������������,�[�l�S��|���%s�u�?]�t[W��@tG�����e���uyIo����
A�������a�~���I�������i�����
���{G��k�9r��]�v)�J�^���0a��	&<x����Cc9�Vd|��~h����5��.)�����t
�@��i�F���N'��KOO�$SSS�Uc��YQQ��o�;z��
g��mu+{�� ..��L��
�.��2���*8���������9sfFF�w��,�H3T��z��U��^���j
0W^���@���6�q���,�pqW
5B�c��R.�0oeo!��c���\8��y�1��z�8$.n^������	� *d-�{0�9R>��*�8���
�q��A �zxu���^��7����z���r�@ �����'M�T]]=v�X�F<--���~1b�SO=��{��@ ��i�R�\�l�o�AQ����8�`�����<x0H�.�
�)�]us�����3�����u�@X�_Xy���9�"tN���&�z����@c�6����:��V������>}�ddd@JJ
I�PUU��q*++{�(�������n���`����E� ��]"R����3g�<��#�O�^�v���~:e��"�%����������%'mf����d�N���[�C������a$�4�sIB���#qa��u�|B�
�����g��n��Yfq�y�w�[�e6W���M�@\5�IM��d|�2.�X����j6;�����]���z�@ :��3`��E�W�����������o��VV��<yrrr���_�u6d����/�����k����
.��D�c/a01�/y`��5%��k����o����h/�������/�?eO�=D m@c&�Lm�X��T"�3��&'������-��Ri�����f_�g�����A?�t3L&�D"�H$�n���rV��<���h��v_z��wg��}�=�dee�9s&�s!:
�g)��p{�F67����� wOQL��_�p!'Q�IT����0v���,��4VW��Unu�#�quP��e�6��?��2$.���u�����@ :KVV�<y��M���O�0v�����c���k�N�8�q���������q������2�EuknL��]��R��6n��{�3���$Z%�?�s]v+n��`�����D����>�-�@ HHH�����N�c�����5RRR:�IWq�����$69�%l
4����uC���3s��a@���!/�-�K>��Zh?;���-��d������HS>0 ��a)��d��+�����{s�o��������"S5'^:N��C`��v�L����`?Uo��2���),�\D����{rrr�����:�x�"��>`�����6%%%B�P�Tiy0���e�9#e��-�2�������#�p�A�\/�c~`l0	���2����X������U�`�*
CII	�z��-�{�����g�����7��a3f����7fb	��!�%��2��V(���!n�[���U+m�^�����$3�q�y��t!�M���e���U�\��]`�Ey�����y����Urh����qw4���_g1'A�IP����3vw-����]4H�[�eVW9e�j
"�!>��]�uj�7��^F������@����"�2��U(��v��o���x�~�mv�}�Y__�o}}}zzz||�^���7��pT*U\\\���7�b�8c����(#K����U���q�������9~
��$�������r�5�<
��a���0�L&��v1%�Z��R:Ixaga��Fa:�#��v%9��r����j5�V9rx�RQ�#/]�t��-����p�-[MMM��;��7�,^���;����=}����/��c�a����>�hBB��Y���[���w��l�����[��uC�MdE�����o����#:�ChH����I��O^�sE��Jg�D���|�����oe(�]�.�� 4��4W��K:�8)��gS���,Q��������� ���j7��d� E��\� �����"n���*��
8�����x�x�dP��9�v��-X��i��XS��Dw�WY�����T-�x_�U?�D�� ������f��q�~��w�0�\C�.���_PP��MFF���eFFFII�F�	�����+�������|�L�N��)*������V�����@�<����	��'��'��B����	��=zt����VD�����>:\)S&B����]� �D������w��/1�L�e�6x��>�}I����O>��P(��w���Y]��%K����mt4����������������b��y3;����{�n� <��5kZ��u��S���.��}�������Z�|�R�d���c!O�/8�������yX���E��*�s����}�����0�.S���e�`<�,��a�!|!0�c�1L�P�?��vo��N�wp�+�&Ix�bn��� �����^���Z ��/���E��]���,ir���Z���]nr�[t�B �K�a2�.C3��Or�_ee��>fGq$D ����;v��������_����{���pg�UZ6�p�\ ������u�o����"�e|Kx<��q�\�q��p�b���24.0��30��'��o~�]��������I���D"�a6�-:w�~1�6�� �@�0L@A����r=Ot�$���r�n����3a�0�S��@ �p8B�U��en�z}SS��������?N�������G�����������={��
���N�<YXXX^^>d�������755�7�Wz��r�x��H$�/��r��U'O�LKK���?+�-Z���?��+��F�
�e��^��+���=:#�_���/�(.F����W���^zw�������|�	����|,�v�H����3S����%NC������u�k�����j���'B3.����,	��5N��/��wR��
�0O)�Gb
"��!0y+Z����v<�q^����po77,S5�X���u�@���>u�T�r���/��v����o_�����U*�L&����P__OQT�6���������S�z5l����������-�%'o���2�;��,s�Po<�;����sO�$�bW-e�����W/����r���r����=:�$III�TWWGa.�Ju�m�9����/{����.//F��<������G���t</+++�w�?~�B�����R_�vIMM��:vL&����7l�0z���C���7l�0�|���
�7o�p���_���6`�6�h���3g���k����#����7r���?�x���IIIIII�xuu��E���u�n�6m�;w.���>}:����H����%����'�,Y���;���7&&f��a-7���/[���oT(G���e���q����c�d�+���-�uz�cl).���2S5����[Z)���?��(��y��@����u���2���e,s�]�2����\�Y9��5)��y�J.$Ix�"n�/"�C)�(78�xk-��N�����e�nm�ag��>v5C����W}�����r�^~��3f���2���#uuu*�J�P.l�^�V��D>�����#��5��6`�C[��>���Jn�1�����{RYY9f��A��x��R�T������W���=��O�������q�����|P���iQf���K�.m�l��Q���UN�:5|���������T*��\PPp���6��������;q�D�TZ[[���v�{.��2�
j���t�?>������q�����4r��]�v)�J�^���0a��	&<x���a������7�}L�IO�/9�8)�i�'�'/�x34f0��Ng&�H�9�xQr`V�/��V�F���SNsg�����5<MVu]��l�6"k�(�T@*@�@��Ybwkm���&gI������CD������x�����#��Xj\�e����ff���8�s8�`|�<l�>�����
���x�y1�V%I2:g��p�v%}p����HD4�$`�����~����+��r���+V���4}��������X�j�������l����ya�`l"
���	�.�aa�eq���r���,�"�-���\\
���D ��?~����m�L�4�_�~[�n
0V��l]��D�E�aN�>P���]��n,������?;��UK��L$B��|��1c��Y��X 6m��T*�-[��oP5|��,X�`�����������9�������q��}��������n��#�tR�i�+E�x��NC�������lX��XF����=���i;�F�Sj�$��g#k�Xs ������5�}�������X������������q�q
�����v��D�\�p��`i������i��a�a�>*� IDAT�����w��TO`5��f��H$����A��6a�n�?�����o��F�>��W/`������c��?���~�>\*�:t�}��M���j��i%,T]���<������fY������n:�S��"�(��O�5k��L�������?���:��t�{�J�[b��
|��6�M�<999�������:{q����^zi������g��p�\}���t����i{��U�3Us'��R��K���5^�)x;��H�H8�x�2��L�)���E; ER�
�Ixi���MZWS������3�8.PS�\	�|F�u�V��b�7��#


�h�B�033N�:�v�L�d�!�����XTk���g������D_���[vf����qqqMMM����0l����O��N��L&������)�&��5M�J���EQQQt
C���8����(��������p8:�k�OPee%�h��������|�w�qG�������6mZ�z��3V�ZU[[�-X����~����4|R���x}��S?���+n��]Q�[}�O��]��k�b�@��c������d�,]��M�����O<��SO�{�����J��������;�f���Et���2�������[��.�pSu��I6]M�V�u�]-
&L�;v�����c���k'N���8M��������[%#�����6Q�G��vS����Ki3A��a�@=�tvO?�	n����[-'�l�0���%�Q�!
B��k�C�e�Wk.Rc�t�,�p��^-�1/:Q`����2��Z����*Ab�����0�p�����svV!���|5�P�-`����A�+yd��W�T-�
w�nQ�Y	�_���a���^��q��
����������s��e��u:�g�}6{�����n�����?���)S����m�~����4<R�����i��4�c������p�]l����I���,�@ �Dyy��i�v��5h� 6<����������������W�~���:t�A�u��RW����e�\���?��#�dgg�=Y�Z������YSPP���y�va��!��2)))�����VTT�������b�e��=�$n�����K�,3������[Gb`�u���2:�W�]h:���������.�b%��qV��H�JM����`;@��5l��+�?.�;�t�q�*���.'kT]������#k�1,��?�Pp	���?`�k�n-3e���XCoH���2l�L)0��V>��#��e(�~��3_F@���F��JM#�aF�u����6mR�T+W�|��g�}������{����o��3[�paLL��)S��"P\\<y�d�����D�����*���UQ
kW�V=�c�J�F W?��Szz��E�F����&�H����9�q����w������������_�+d�j^Dg��(����w����k%Y7>>~���3f�X�x�?�������-I���u}}}zzz||�^���o������&''����/�J�1�<<O&��;��_���n~k
{h�^�������\��@���m����'>�Q.Yr2�p>66V�i�
x��s��`��	���1�PCH�	i�P�	�$���0<��R����O�X�PN�ZG5U��
�\A�+����������9��r���^��F*������&�����c@r�.��|��, �yxB��E��E�����T���pP��NU8�r�*������R��@wT*U������j�q��F)J�^�z����������+�O�a��;�^���D7��`�������������b�Z��={�����&��6u�����#F�x����}���c�����ku��UQ��Uz�L��n��B ���_���;��V�m��pAAA��	a$:��v�W"tQ�������lc�������WTT�D�����c���1�������555;v������bJ��j��y|||AAAXlT*[s����O��o��f����p�g	�;p��+���l0�p��0R�����	��]��%''',n�����``0�C*�\����p�n���Qy8*7G	!�P�!M&���xi�UqX�Dy���C:��a{RD
�Jue��`��X�()x��[n
���sk�R� LF2!����idp��8��8u@��<2Q���<b��|�L���D�
��
^V\�K1�f�&���-E�����C�l���{���g�������j3u!F�q��-m�0����6|��M�`�ZI����7D@��@ �H����9sXE��W^Y�r����~����?_�|������y��o��6�����8��h8���M���\.��[����/��#�<"�JY��mD"�����v�����a�N�m�u���I�1�U+`��4f�.��������G��0 �D�P`f6�;�s��aX�K6�9����#4)��/��S�8J�pc(~���/��~�pk9i+'l��������������n��:�`�
�.��#e���nI��$F�pZIPq�SqOPq�	M�J��D�]�����(��"�4QK�Z���	-����4�(��S���v{B_��9j��������Lo�����|u�Cw&`�s��D����@� tL�;�z��������&��2��O�-[��X����.�u�]'O������7����6�CP���U*�L&ra�@����e�?h4��9s���v=����{��]ZZz���P���Im���&n�z#�7�z������n 8%����z���c���:��'OG�m��o�IHH �����;b8��&r�)<E*W��]��pe�0��b
M�iY�G��q[�����"G]����QW��wX��������N�������\�V{���M�%b[T8]*����:��5p	:������h(�aw�49K���W����5xbcc�.�<Rn��gH��~��}K���������w=������y^�k!�@\Kt�0��Y�Mwe�-�����
m��\����&L�a�)h����2����m��6iN�:u���������N�2PWW�R�
E���T*@��������8_��S�J�� �C���S��'��4�w���<�_���)���e������(x�t�"��5�����\Q����c9�XI����n��5+5���?��h�X�>�(C��X��p8�E����F�8I"^���*���x��E���������d���#��d�K����j;}{�sO
��4������Z���u�%��D?#�!�%�=�K#*�fr���WzI�{sj�,t`�a$�!]��f+//������D�!tQF*�@YYY�f%%%YYY2��m�`�j���������9[��S�e��y����|�E��>"]`Z$�4���r�{]���2��`�>f�>v�(�������@!N!N�T������:�
�����"{]�����
�cq�Y\e�l���a�A	�	bn�w��4z�	;����/RF���C�m{�yl9*�������yY����]��w����@\5`���+���/���'5���r��M��n6H���VU��W>\�����*2�'�@D��YW�eo1�SC���E�^7h��c��]���A�@Xr^�����c��?�?Oa���R����Cl2H�lz
��.`�'����!���x�k�G�'#���z��
'7�5���"�n�r$�A�#��H��c}#�4��T���U�d�?�k!��/���d�@�a�����y��������U���W�.��R�AO8�k� gR��]��5����/�!�r����������bG.���1�����
�T5}k!�@�P���7::t�f��Be>|�=�<���_���j�>��l�������i����g���j����Z�0l���~����������J��Q(o��|N>��;���}/�����^��^�@M6_�_����h���iZF�d8���B�Lc�=��F�XOw&H�&S5���������h�A��Ft�EC���v�w)P�~Xw��`��`��	!EG� :e0���]���~x�eFx����lD���\5fm�O�)������G���:����?�D�7��~��>u�X����yQ��@ �8��2������{����o��v�������[y<��Y������C����:�)�N�����f����w��X��������2eJYY��m��k��`o�0���xP����N1x�8��}��{7���tvO����V�@_s{	S(���w����oo���,�-�}#-d�I\���|y�L�Mc�>f�=E9�B;���%�G�p	9�r�������Q�#n���=���?"�7-��C_�n��5�:}m��j��j�^����C\eH��nL�\%���\s�I�A����vk��K��D���D���O��g�-�c��*����OfW{�/�[cq�F����s�Wj�@ �k��E��q��
�f����[

~����g�VVVJ$�����o����1��s��
W�����L�2e��]�Hqq�����Vk�m�9�����)����a�����K�����^�����8��U{���
�B��ibs8�� �v��4�E��BG}�i��<R�	����T�J�PP*���K�.��
�6r�)��Y�
�;�92��dw&��`m'�M{�L{��t���U`���]00aE@���]s�|6�O�|��&������*�n��K�(4�@�[k�������DBd<9��U����|��C��y%I~8�';n������/��2�������?�����5j��Q���<���f��M~~>���Le���N����7b��WTT�o�>��	����)����O�
�LTx����	���.k�������x�Qv��"�2M��42�M{�ZK@P[n��6�Ju���v+�#B����\&���
�,+���r���5���������2A�4aJ� �pPN�+w]�io�io�y����~�=	/cx�g������/�W���2$����k���2*
U.��VF9����XNf<����_�~c���PF{A���d���jF�#���,��o.~�]`�t(X�@ �e:%�x<���{n��u3g�0`@FFFZZ��d�x���������7��]�`&??????
6����"�
��S�,��T9 g1L��M�?=��Z�i�]?���`����0.�i�<�i��-(���g�`�P�;{�� i���n�`�(#J�^�r���`hYf|Nl�������[��2��4~kv�
�� ��T����6���G����OVwv�[�|R�hE������Snb����"��������e���G;�}���_�LN�K��������cvO���@ ��)Q������6CED�����!STg�@�N�PZ`�k[�����X*�Pe.(���7WW��|D���#E����+��J�<<R�_����f(w��P�x�����^D����_�l�q���8��j��x����gI�iO�iw]�o4s��-AYl�H#��KY�(�0^m�{�|������M���r�(C1T�G���>Q�A�������lK�'7���n��b�V��(������*�[evG��V������ D0�.�x<X�|����>A�������f������5h�����u7��v����I�*����iJ<F*�|/���h����Va�����V�/�2J�K��F�������������L�^o0��%���q���dw�9����y��4��i��<������+M�:�ua8=��(�
M��K(�]��D��������kp��T���0��^�M^���n����J�7��-���W�<���e���F��^<T�p�&0�3���e&Ow�z�L5��&e��63�d��,�w�D5Y/_v�=#'�j��"\�.�444h4�&��DXh��,@0������?O9�]�"��i���&K� ����f��YO��<�T�kT���M����������Q_d��A��-aE��o�j�s��Cb�?�'V�0#���qA��s�9��2������)��w&�&)�y�sIe�bZ�b�
�?
��U�=U��-��$5�(X��������0^c��H����X���J#D�*W
�l����|�C
��m�!����q�i��~���4;��
[R����i�jWv2�2��2Vr�X�-c$���|� ���:h��2�i��q<&�2�0P�-<��8��U�d����H��lCC&��\�~2t���@t��E�/�������w��h�"6jZ
�a��	��G��l��O��2�����������4���l��� v_����<F��8������
�������Pb�+p�����i��q��"�����*��kp�
�d\�e}�����(�����4�]U
~X���*b�0���t�r175^:.I~g��6��4�0B)�S
�r�_�8K�M���{��}���%�7�t�D��(�������tS��UKP�LW�'����m�r����c��?���V�1��>Z�`W�`��E�����s��j��(�c	F������;�[~����FKn%����>����m ~�]��D[�3}�DY���J[-��BY����B�X��N���"Q�L�����v��F	]�y���8z���k�"]&:\�|���/H��`���e(3�kn��a<yjs�S�@�������`��/&��	�����8Ku��"6���;�P=�=���I
4	.��d����Y�(���W��[1���o�[s`yh�Z\e��������0N2&Q>)I6I�Ih�X�K����T�������Tws�B,�|R}C�G��<>�����?fuUt�W�s4h��z*}��eh���X���~_	���������d���t��|�����8l��|i���������@���8��?���f!fD������ �
B��n�m��F��B[��"�o����2&?\?5`/&O�Q0�]v�N;��yg��-+� ��/��Bs�D
UBe�R�#�<��k�=��3���������=[VV��:���?�DtV�i#L�g�B�E�i(uJM��{|b8O��g�	}G4zL��d�a�G��J�U}��>�lo�"��8.4�.p�9��H���a���"e<fojF����0�]�����i��_�9�Q���5�,]��mU��U��GW�K�&��T�oh�������I��I-7��DD�I�M��^����h�i���j�0@w�ch�.��[�)�(#�������$:X�����~.������:�������/Xf��������5Z2�V������������N���p���	��	��	Y'�.8�A�������yj�����j���$�����DY�jA`�L���#�����n`3������P�c�x�YE������T�3n>��q[)�l�m!��PPdS�3n��W_}5''�����G�8q���H$��s��'�.]}#M\\�V����G����!�������5{���.\�?2t���|��Q			V����sG�y��7Cp#HBe�����o��}��a�a����l:���`�
��/X��K�R#����%t��������3���il�`��0_��s���i����~��}Q�Png�{]����-!�h�ls
D���*�v��W��X�.�������`�����eH�2f�L���
h6���v����(��$�'C�A��"��K*o��_m���;T���Y�%^!���Qc@��TS�����XQ����+�},�������=ai~������Gnr^,i�������^X��������c#bFKnJ������(_|�M������e��L��E�PD��L��E�P��d�4�F�G}y�`;DS�*+�\]@3��jb�]��J������j��h����aB� IDAT��]�fc+ms5�
�(3��@e��8N"��,���;��z���9���I���J)[
�% ����p �W��W��+(/.��! ����a���ZFiK[��6�����8!M�6M�4
�}�|�:�o�|�ONJ�����<>M��dll���
����$Qw�

�1g!��(����`�:T�XmTs���SSSI�k��)0[�t�?��Os�����������5k��9;v����]��!Pq��e$�� ��$�����\���<��q�=��q�B
����EO4[���L���A_{����h*n�+�4�Y���~Pa3D���559�A���y��1#X�7�j*���K�&���������5���T~w��;�Q���=�e�~J�A8�����?r���FBs�����H57��-3e�z�A�e��e&�4g�]�m�k��l
5�����k�c��k%�J��1&`���7�z�1�p���P�5�=^�x}�����,���~��d<x��[�
D�9��!x����
�x��<�k>��<�+�	�p>��:vb��py4S�q�� ���Y�����%'DMj��~��
�,���3��`1u�����6?%����{�=�����7������G������������s��}��w���`������D#G�\�`�L&���_���������e�bq�F�ri	f;���1G�����J�r��g��4~��=1���>���$a���4]������.\A�c&M�qIs�N�Re�S����HcR�8N�MMv���C�l�fX�0a�������`$��uGJ��\�7_�������+��3;`�}VF�f[��)�����D���-�����AD3,F���TC�=]s,��`8G�Xt6W�>R0l���&H�o�x����zs����A�� L4�C����:�H��#����O������L�NYQGpp6csp��.��l���,�q���|<^��Z�N���o�9���$	ddd���!�JSRR-Z�v�$�����C����������S�L&��segg'''�ca����}{zz:��X�rerrrWx�|P��u\�8PT�y��4Nc��M����;�M����$a���i��j�Y�i���Nwz�~��'":�E�`8�0_����U����������qb�a;�w�[}m����LQ5�3tQ�e,�Qg�������A�2�����d9i$��K>�*�����A���#t=V�K2
AY�on�U�5j�h,S���'���.z��'�e�&�T9>�oTFLon<���'��/�O;^���x���OFMh��Q�����=U0��}�5������zD|_7��1��f��q>���n2����DR�������O@�����W��i���8�u���5xYmJ3:E7��c���WB+�^������&((���s>>>������i�&L������;��'SSS�s�x�b���K�.}��,���?��kl��lb����	T��p?$a�V�i��jo��f0������W���h/L�Tr��M���P��t��|�#�j(�_�4*{��U�y�������i�W��*`�g�$/�??h`C�7x�^g:�!�8�O�gQ���d��.���Y�����>s�\��m���d�����~�T�]��2\(Y�F������b�qk��}[:��H/5]�1i
��z"���_t��~?�������3�h^4���B�5���<�t��sX8+,,,88���&/'p���]L����s��IDH�4�	��������h<��y*�	�~�4��i4��s���S��s�3-g�kG����o�Yf������{������L������~{���R���������V���nC3��Y�f�������4-33s���?����E�>�����wO�4�	g>���>��:~���(������g������2G8���-�(��HMM�={����rymmmff�o�����?R����w9r���/��^x��s#"�T�z�P7}O�:�`��{��}��i�{��2�F<dP
����}�#��>��h������n����6��=��f(�`���4f5��~���8�I�]y�;��Khl�
I�!o7l���;%� l#�%'���L� I����\-y�pE
���
�EM�����/���Z�A����:"c ���W��x}���t�n+��$��d�F��h4;w��nw�,�U�v�~z�z�&�=�:��X,Vll��+W�3|�������E����8�#8|��h�B2�/�1�Y�z���l;�9���qV37�3�>�������g�]��F�Q������g��9s�������%����{wJJ�yf��HII�}�6t������b�P����z}EE�t�/���\>�o6>q���a�:�]���t�w�}���/�gd2����������3����3�]��5kd2���k��:�����*�R�f"�9��:��%t*(�a���c���;L�z���;���$��=��l����_����S��V��:�0MS����	732�����������$�=�����
�����e����@k��q�-
�,d5�X�,��%uFm������M�CD����.�C5G["##���[ZZz���P��
�h�����bMW;�x��������~�h��5����YUM4���e���Ze�X��RX��p}{����J���t���������Fw\�#VX*=�;�;M�ApK\�q��^��m��{�x����Y��!'�WY�=��O�I�&�$�j���G�2�#F���L&s������/6�[�������k��-���[�p��3���g�
��^�z�����/_�hQFF��:��8t�-[FEX�]����_gdd���N�2��g�����������o����}W0b����{������>�z��>0�)�f��	`4o�rXW���0�_�������e\�0,���6[�
������6md��lY��7�;�%��p�>�Z�iZ�nA��|���|J
-�f����1z$;<S}*��Q$��hW$������g+�Vob����0�$�V��
T��x�QC��?(d��c9Iq����E����W��>�\��X4�UP&�U�LS�U�1�-b
u5���va�w�N4�>^�V�I��4�Tc�����9H���cm=z�X,NKK�dd�Q�����)��O�1 �`��/��	

��tc��=z�t�{�����w/��Z�z���C���|����z����~��0:���;N�<��������)A�c��M�8���x������������w��/�����k���
0[�|9|�����H�3f���i��.��u>(��K/Q�F���YUU�:�<:�.�d2Y��l68�=�����1�f���ce]C��AW�h�J�
���7������8�ug�///�0�=��N
�L�;���\.�X,��:�f�L���LWzLP��4�C��F�%�Li4S4�O�����G������4_=bu-�v�h�jI�Y"1�Met��T����?j^�gV��
J7����_rq>�!���������?���G�c�8�E��>���P4h����P�p��[��&��2.�E��a�cV�!�j3S�$3%�s|z��2��#��j������1�����p��7@�x���#�a����H��������s�2$"""''���J�������,*--]�l����������<��1�0�7o��2I��~��/����/��,��w�'O����J�Z�j��O�q����g�}F��JKK���.�����/��n�JMMus<����t�':����Y,�=��!a�4���%)���]��%TP������X,�a�yi<���h4.��`0:6�4,�;�N��T�2�T����8����Q4Q.�d�0A(��:^���T����TH�6CA�A�h����[H�mMNO�)})��U���Z)��<`�3�y(j7���\��E�F�^��8�����Q�
�P Fx,<zL/�J3��4yG���{�0�j����&��ogyX���=z���;��)�J�����=�Z���4�����dm�T<����>c�W
���lR�i) `����|^����A����X��}}���������0�:7�����?2�����m{Qw����
�s+���Q�"_�u��5k���;z��I#��c���j���x���k����	<��y������YY��G���~���O���0�BW���:��l�2X�bEmm�=�`��Ak����������G��w�=��Ieg-\��!���F�)--�����R*�*���{��C��5�*����W�U�Y��gO�QRRRY��P~~~4�=Zb�8>>� ��{�����---��s�: ��	lhhp��c0			��+��y��li[���g.}��dG����vl�\��G�����&K}�"(���X]v�.�� |$5d�<����K
 ��a��A"��0��}���Z��nr	��`�������1h� ��O������+��Ra�8I�tAX
��,y��eo��u���-���/���Z��7���|ZJ.H5Dz��+�W�,Cc.{��25�<��C��;S\�?�WL���71�P�<P|����/{iMHH���}��J���������$YZj�C�H����@�^o)O�������w�=_���������=���bEEE]��d�7GQ(,����EEN�����q��:���y��M�!ZB��{�/����^��f��<I�mj����h�Z�t:=$$�4�j����nvv�����=�j����C}�8j�r�M���j������R��5k��yj�}���^{�K����P�:T�.�{���X������5t��@<��F��"K]����F��V�|�/u\�.�l���PS�cec�����|���U����@��5$i<}����*��Bh]�y���A�������L��C7H�}[N�w�?d��7���4���BQ�Dq�TA�&5%D��$I�=�+�K;�$m3q�e��@r
d����SK�
{�d��	F��JM���+00���6\�^�i��:n�~��������y*:I����1�T�g;��n;������vq���^]gN�sO��y�f�������������c.RVV���!"FDAAATTTxx8Sin�������@e�<
��A7g����QAG�]Uw�s��Ea&M���w�Q�b�/_^�h������%K��mN���@T	�*4��\��`�m�����x������:��{��������gggWVV����\p����a�n�P�#���;�Z����|mTw�`S��]�n|k���x���M��3\f���?�t$*�����?�G�UDF�/=�3�\�G#28�-�y2d����KB�l��w("���T"l��J���m4U�l���F�nk����+�1}�R���;��p���+�8m��/�}�����~\Q]������(��5�%T	������
��t(u��Iw���DGG2:�Y�p���;
Eee����������t&(��/���)S\��r� ���L��q��=����^�����������!C.\�0s�L�X\UU5v��
6|�����tl�c7�p��(7X'mf��3eh-��B����g	j��u������1��=R"�0��F<��Ya����
�/
cY�����_\����0�&2ec�w+"���&Nw������a���
�-�
�0����sn���Y��z�-un�([��x��/Fs7�#��f�`�w~q�G�XY��p������;`.`	

jm����w���<@nn.P�\���b��q���P��KJJ�9b�l���+V��������c��M�QS���/��?�y��������uk��M�i��(�-���Q��((�x�h]�2j�(�L�������u��NIIY�re���g��M��������O�Fcrr���G�����������i�`�Ii,��j���:(��+Ps�L'���Y������3���O���2�����1��i�I!B��?,|���q��.�])������,g����������^�
'L��|��k_�$
�U�����bh45,���:thmm���{
��`�
����i�U�5j�h,�=��gc�'v��nW~��.5���x�(�?��R�Q��o^����H�����G���i����1c�*X�R�������F����ODD����k�r?�����6l���CY,V�����(++37Zr����8N5�����lT����/��v��=e����rOl�@����>|������7n<{���%K�}�����u/��A6,�e��KD�:y�[��aCcc��}�bcc�4�4iRPPPZZ���K�o����%K���y����
�t9f�)��DT��ZI�-Ms�I'��Q�����x���cw�����}#���:�7��X���QQG��*"S��v�&�B��=�pq�O,���^�+)�����T�(>���g���\qf�9"��R�t��'�LC��# Iuy�y������7�VZ~��������s�<"�/�j��`0��������t<w��	c������cd��.����y��??��3gZ���s��m��w!����@��S�l�M�>] ���W^y��p(S��?����������x����C��z`�y�`����"����@ ����+z��r��	Z�;�o�n�f�}����W�7�q� ���
��t9�-�?{��M�u�G���J���
���R��v1f������FD�A���"�����P�|w[�&��/�+�E�����P8�n��3�9�8q��$=�eI�m��+�TW���U[����f�Zf���U�T�^�
��9>���Tg��]�e������?�W0�����������w��i�(��T������������zS��_|��k�q������7��%�a�;������R6�T�v9v��;v��s'22��/�hhh��e5����w�^�f0V�\i^�Q{2j�(�����6�&M�����<��
�_~�������Q8_��p'r^r��f�����xP;���e_����fP��&<q���daa!�+�H�J�=6]�<�.�&�OvC�J��Z���9A��T^������m�0��`��u��8����u�8����>i5_\{�l�lu[*�fX�P*��N�a�U�U]�Z}�u��Z�"��MW�Ze.��}-�~�����������V��IS��~�J��x�����R������'*++322�tz���)Y�����qsB\aa����7l�p����������}�z{{���������vi��.����������G�zyym��y��W�\	

��������������.�
�dggWT�Jb��}|���6�N�8�A��:���~�PHGi����J�i������C����z�f|}}���
�A
�9��k�����o(+���9v.w�����fOz�K�Q���E�^�F�.!X<��YV���\���9����0�|��b^M�_��?jY{}}iE���M��Ox��wQD��a����E��(��)c���EL���C���[�k�C)�����#0�����
;~�8��x�������H��
F��V�H��e��A�����aX||��q�������?~�x�m�r{Pp�<\�pa��!TAS@@�������0+..�6mZ�����.���<:J���h�+��@�LW�� �D>��"��O�~��X�?�@x.�Q������|}}333;�����������w�5��b���o���hh�� �5���!���8��~��.�u�F�2RpdD��:
��R"��s*����	4/�b����
P�O���@ 
�������A:��d2��Y8`����qR,R��1���v IDAT����/�x�
W@�_��&BK0
��z�0��?`4h��@�L���T���F��@�p�c��������ls���p��Rn������:�$�/�������sz����(�1�j������?Q���r����������
����#G�������������z�����L����9s��E����������/^����r����p�����������d�LVWW������F��w�����%�'MMM,V���F���dv~;�q�|)  �h4�����G!�H�\nUU�Uh
a?8��6�7�j���%���^!��q����Z^���H$��&00p��E�I�X���c�6�1��������#k�����:a��-H��Rg�o�����b�����S��?�%�%�?��:�AE���@ ���m{����N��?�W��������mf������'A��F^|�xH�W���C#t��,/�)~�%�4��I��N�w�o��� ,a��Fv��o��(j�<�������$a������������nV|nV��p����j��@ <
�$322222l��?>&&������~�2���T	Lqq�m��9����]��u��������{����:H�\�t�k��6k��
68��#���O#o~��V�O5�w�?���F�R)���B�U"�H$����mrss��'��7�|s�B�^�L&��f�8�3��,,"�[z��������	4S���O^�\���
��$�'�at�U%�U��}AS�����P(���kkk����~��p�F��l�t��7����e�Y��'S&**J(����a;.��������_�~p����QH��1A0�_r�$��:��<�b���<��4��c�����0��$���s��]��C5�F��i�H�V�333;�n��'v����~�L#�e ����u�UsP���L7����G)�@/���k��d��&**j���������y6o�<&���j�=�]�!P�\�W&�AW�}���Z	�l�?�}� P^^.���b��7�D"*	�3uuu999���r��Lnnn{��p&��RG�&nUd�T��xF���)(���i��aJ�M��'V�fXb}���������aXpppSS�=��L�����~�1����#�?�=�Ns��1���]��
�PXYY���s�H�P(����8T+�/; ���r�H���~t�l%	�����Jz>G����B
����m�W�]��������:s2�
/f�t�ePF�%�Fm��VcJu�5Q�����t��0
7�W'���%�>����jvurY��l����?
�G�]�x1Uz3g���_��YSWW��EZ�����������M���:�������������o��L&���V����obb"P-��!��hQR�X���j��@<�������EFF����'FHH���c���
=�y��D����F�l���i��<�?��)��~�P�8�&����{\�n�!H���))����A��.q������EC��&��Y���������Yu�l�(�$����3^�T�57�.o���Q_���	6�E���K�LTi���eI�p��7u���_�z���+�a/���j�����a���`����v�JLL<x� :�ta�g��?��:����^z�%�OLL�r�J'=tn�Nn��t��t'�]�GEE�7�<d�X����j�p�5`�g����Ew��<z�����9p����#G�M}�S$''�3g�P�X���
�ty�EPF�!.��h�03�h�zc�$a,��R��1�I�&h�7�wO5m7�v3��x��Q�'���s>+,%�����tF[7���� 59�'.�E���\+��F�*�<�o���^cI#�[���W~���Y[�tH�2ed�v��K���1��V�h*��D���U}>��"N|���B�����@ <��������>|xhh���WQQ���g����{�������������ly�i�k����{E�q,(s���4���3�j�o��f�)*�j��M���N:��#�$����I��
�z!��M�6}��g�=���+���������?�`�MW���k,�D���
��=c�L�v����mZ�����\�;�}j����~R�g�k��4:c��;c��9�c�z"�8	�G�?�=�@t�^:���qno�Oco�h��R_=_���y�<����t5�57w1K5]t�b�+������B��3j�h,�|5��g'�2p���X�7�5t=}?�����e���K�.]���g������;�m233;#%�4����yp�u&��cA�]�v��e���9sfuu��Y�\��o�h�E��>J���H��x����\�n��������l�2��t��������m����`�I�[d�����)���4S��8vt{A(=�L7��O
��_Uem���=�&}���QO��������a[O�N&IC���9����^��I��#8��	
:��������~W]��PxH288���Et-�VA�3e�$5�Y��dj�yY0����VSC'.H<�@�k�WF �#��I;���O����]�B�����u�V�����o��*�),,l�������������1c�K:��q�x���	IJ�����@<����;v������]�N�:���/fgg�;����!����H�3�g�Mz���"#����VG6de�4�
v�DF�����gzP1f��������+@�dr����2n��s���F�2Gd�L�
���������)���mFd�jU���s~�p}e��}�
��-��n���._�0S���+�8��\�Iv��&}s�^~��0�KVF ����j�/����hMmm-��j=�b��l���$""������455g�2d��]�D�TVUU�;v���}��y��7�����SsZo���ekr��#�/^l/���4e�����A��X�7n:t�J+������\ -\��W����R�~��D�sbm��Xt�"}��������������r��T5^8�3���4��&���_.�g�:��"�
�^���
��z_ q�j�_�W��������n�� �_@���h���(�E���2j�_�d�����(��o�j(`G���Woq���x���>����'q?~�x�>}>��cj&""B��J$����8��M�$������'�������G���?���OKK����iD�x���� I�?��j����$/^�x��-Q{l\��v&�:������cGw�E���b&�������2�5]p��.���Xz��A������q>�5����t�c�4������o�tZ���������m]�aU�6U�B�@km����k��fg��eP���0�����;s��������{�}X��
�="��T*O�<�]���&�����L�����C��3gN~~>������7n���I�&���-]����IOO_�d���������A�h��y�T��Y�j�D�f��*�Y��@5K��	`�	i�Z���P���`�����Q�&N������zTFC~�V&M�?��LR�J�Q���_7z�H!��L����U��`d�oJ
����m�W6���F<d��d�C�4e��I���8>�\�1����O�}M
�X�����Um����C���W7j{eggk�����h���	

Z�b��C��mGBCC1�}���g�;�o�nY��}����W�7�q��\�|I�D���L��-�)�@ �]n����6��+l?%�"(���:��A^O����?���B
9�	>�����Nw
��k9����O`���T�jvv�[�F�KX��wn�?�*o����KUW~V]�U__�.��10�W���F_f���
��z��.KF
9>=ko�w�K9�{���g�P����VoA�2D��X�6�"�Cn.��@x�������[�5g�sx�����y��g~���]�v-]�t���O���'N���,,,����r���M/�)X�����
Fh�����B �N������
5Qa� ��X_Zc�5�mj��)��]�=��w�sW&��j��*�01�68t��?�]z�a�b��������7T��Fd47J�}��:��7}+��A�G]n`7/I�D���H��7mIW��A������^��0�tW-�@ ���&Sf��Qc�����/��%���px��78����'.Y�d��
s����~��������IEEEXX����Ri�z���FFF���=�J��P(z�r��?�t���$}+�WhY	��!���D4����DDDP������8��'d�f��F������T������I�Lb��=��q�L��3��� ((H(vh�&�?[�%l�BgQ���&*����Pg����m7`2c���~5b��5FcO���w�{3y����a�����4��x��C��UMW����	�(�Z�d�xXH�����)����*c����;�Cx m���w\�D�.�*�1�:���E��q��,SNO��Vo&H*�D ��`ep���O����-[f9Oe��$9{��?���h4�5���?�9sfII�����aDP�TVkVWW��������?~|\\uTVVf��L&�.�;�8&W�<LR��=�=,m�r�K�����wn�Np���G�v.������������+
�k����b�
�Kr
q�P����4���2vh�R��>P}u�����!/��b���i�%�Kq��tM�'x��a��#"��5�Q_���=�0���)���������%�J�����ok(<�Z#(���L�����&�L�4
gp}����� ��e������a��9�\�8�@ V�����S����|����z����khh��c�������7fgg�������_}�Uyy9�D�:+��)+�Zo�o��}��Q���O���999:)���B�J����r�%���7���IT�����T�j �t�@ �BKn 44�F�i4���;
���q����3X,V`` Ayyyn�D"QSSS�v56#��RiCCCY�;����&��g.$  ��f������;��D"!�5^K�tymM�BoGP�BV��L�{��y��0��0����������#����������K�����_J��C����h�(�Iq�TA�o7���#��,���.����O!�V�>qf�4e0��V�h*��*�r����^(`GQ����Vm4�HR�@ ��`e-Z�~�����?��������N�:th�>}����T*e2.�4��1����hhh(--�p��^����
����W�^������0��iM5�\�f����x������.��C���9��[�*+;�<�<~~~4���{�v�Xh4�y�]Blllqqq]���4�"..N*�VUU���1������7�"���f���YV5:D7��y,,��`��������di����>���`���&���{���=���n�S?f����%D���G��~"�/�r�bE������^� pG=^�8C����������7Ng�O�h;�p�x4i]������E[�G�p&�r}z�0(C����O�C�QC3(\�Bv��/X�@ �<B�III�����+(�7Q<++bbb�J���V6�^Ii�����2�>��KIJ}Z�9;��i^�`QG�P�vd�d�[h|����T�������+t��~W&�BkP����k�9�`%
cu�W�Fg	c�������a��&��fD7��.B����-O�91Ed���I�<XYY�V��]����_���[�~}vvvee����g�������M 	uy�=-j�R�U�\g�N��
���G �#���={6�[��j�0:�N����CMR�T�%22����`P�(�����5�z�����g���H�at�/��Q�����K2��JCs5�CLP��u��9���gLa�C+��&��c9ct��}���an�\��p?xp���z�[1}�4q:���aG�
|.C�~L��������p���(+V���sgjj*�aW�\			�;wnvv�YY�r����3g�������c�n�����?�\���f�*_���h*mNjvyP�$��K�6��������-�0��A���s��]�vY=�P(�z}YY�����aIII@��8pF�mi���,��9��'�E=m)(��J�!�[=B ?l���i�^��I��Fg_����l�q���������w�CK4�C��k�Y�r��F�L�pb�����%O���8~M����W���{���i�V��5�:!'A|p��P�x�d��ai�K0`���	��>}�B�HNN���[�~�H$��e�u���l��I"�����>>>111T�����<x0��=6.���'-~�J5D����l-�b��E���ZMs�`���(Y�@ ���A�����������R�t������<�L�>}�\�Be6m�d0�{�9��0�)?���z���$�qx�����h�f��@ :�.�[\8(4v�.Q�����������9d
��Jz=��"�A�x���i�7�D������]�8�8��������H�go��VS/�	�!�8Hr��(���^H�����G��^z	>���M�6


s��������g�^�`��IAAAiiiK�.5�����d��7o��=6.����J5D��={���#a�l��$i�^��y�a�F�<�*�@ ���eF�iiim>�h�"� �/_��w�M�0����������� ^{�5��uee��u�������3q��!C������'O�����m�[_����
�o�NR��L�y���@t��A;U~),�~�� ���s]s�=p���.��������/�@�g|��Q<���Lq���Eqo��1?�w�,IX�f:U~�����D�����L#���\��c9cI���	"�P�{�����N��~t%&&���c`�������o�����q�N�C�j��H�F��p��������8��e
�U��C?q>��8��� ��������O������P�����x\�|��}�jbbbH�$I�o������53|���ft<�����#����m>z���)S��]���W^y��-��������={�l���oJ����'�k����'M�����������Z~�0I�?�j�D��f(-�a��)c�������K�{�����8�������_���Y�qw�7���_�g������6v�Wn�)�=-���d�LW[TscG��#��� �d�GK���d���p'�w�>}���3��u
�jjj 88N�8aiPXX���&�H�J�=6.w�7���2���b��n��ik�Y�Pj����X����8
	Df��!a���`�D�_�Y����@ >���G����v?��'���������8p�m��;w���)))111�����������i��)III�
b�X7n�8t��Ng�JB� ��b)(����R�E ]�u�����[���S'�	y���/��S��&
q�4����<��_�$Ia��	l@��}EI����VWB�H�1�%��a)�~o��������������������h�R����/���nc��U�'��O���S�N���TTTX�UTT������*�J{l\�9�1In�G�c����.��"(�2��)P���*���p�}����@X��#�%c��a0AL�:5--����[\^^^�����}sF����
���GO���F�������m��$y����/�����	��t�8�����/6]�N����.7��\��{5�4TW��t)5�c;��(��r�Wp���J����������QT�W5U�p����C���3��������BQ�Dq�TA�����QS[ss�*s[��?I��I=�mk)���3g�g�k�t����<y����q_�lYyy9�aT�E���H]$���fffvhs��u��X,6lXPPP��P7�������-E IDATv���Fi�9&(�t_���O��:��K]��;rp�#�tzxx�C�tC}T���.�4�K-P���B��t5T[R�\��h4`�XO>��;�4L&3""�=g��.�����Z�F`���r8���o����[A�PtQ��#�D"����;��E(�JSRR-Z�v����;wd2Yw{�n���C�&6�H���������F �`1��I�

Q�H+�,���^�b'�~)4��e����25�ex��^Y��e�V�z���^e�� �����s���9t{�e�����<)��*���vCk ���#��m������p�'= �G.��~��P_+��F�JK9�'�b���S����+?���q��H�j��P��"���I�&EG�>�������|>����j�	�������h�6���	������8<!F�[��Y��dS.�5�z��S�S������Ve�0���N��7�&�\Z�����lv�F�����M�*��A�@���V����iZ=2J7�����s���{� &PP������j�Q�O>\w\����-JR|�vg�@��"(����}�N��x��ojB'KzQ���eo&��$�����r(5��KS"�=�QW���9��x����^����h���$����V]�������3�3h�>+['�(����Ns��F{����.]�b�n������=z�z�h4*�J�L&
�aD"TTT�cc)73s������������������{���C�0��B�LC���~���#��������1��;*	^QP���r��d�i`��gD��_3d�:�~�����z[Ov�r9I�]!���P��O�N��"��			)//W��n�+,,,88�������[w��������_�~|>?33�����1�v��	�6E���~�r�U����#��{��{�}�����o�2eJ����~����K��������Z�*;;���p�5k��/�O��233��]���?/Z���O?��{��I��p��?������{�:�����X*�����2��r8W�%�Z�j��A����~����{��x��7���+j��f��1#%%%:::22���������S_~���_,���>����^��3fDFF�t�����~�i��
�y|!!!��~�~�-s��+Oe<Y�T��IT��#�_��?�_�
��2���h��q>(C���/��v�T)�a����Zo����0��9O��:!��Z$p�#��5Xc���\0�4P�0U�0�V�+�h(LWenS]��o(�z�W0*9�'.�E�=A�3�>�^�1IZ��Ct/�d������z���~��G��E����r�L&��.Tv}ii��6f�z�R�,+��}5U�������#a,3e4�^����2s�9����6���+���i
;61�\{s�2���+������W/���jm����T�p9t:�$��xu��.��p�v �J+++��A�`��j��:�%�J�v&��555N��f��((C��M���E�uU��I$[����i����g�]����������g��9s�������%����{wJJ�yf��HII�d�������X(��|�^Oiu��Psss-�N�81l���lgf���,�q|��	?������>�,���_~������=x�`BB������������_=55���6����?��<o������c���2eJ��r���C@U7�1�qd�����m|0�p�����,�@�����������.�f�m�F]z�<�Y��)
��_�����u�����4�O�bE>����/��i8�8����D���"y^{M���ce�'����+������qn����ZEdT�k����C��48�IOOOLL\�v�UD��T"##-'1������rc��L��ZFd���LHB]����"��~��V�o�1�&�V��u{!$�"�|���C����P�d���c:\��mU����g���$I�Z�j��1&L���k4�L�������)��[GEv����3�<��c���g������v�T�^�:  �������������������i�.]�I�~�i��p��g`��=��.�'�X�n]jjjBB��!C���544�����7cm����/RRRV�\��_?oo���Ggff����'L���W��W���,�8���|�W���x��pGB&�@_d>�VPap �=S��2%��PL���c�b'�=��"�
U��
iN/��h�s��F�q�zo)�����'r�IO�c�c%=��{>����T�T]����/e�7���C�{�Z\����F����O�����Q��W^8p��={�N��^K��9r���4O&''�3g�����i�ZX?��X��R{��1c�K�Q�]�������%d0�B�)6�S\�_�xV�3���{��8�:�@<�h"^��w��\��:�-�6�;����m������k����w������b�V�^=t��B������V�^���oS������c���'���
$In��u��%#G�
������@IM�_���a0S�L�o�����^3[������m������\�d����_~�es&���������9����w�������W���,|�t���A n�h�k���PB[gt@�@e�)�7W�8��KA��;^"���<�GsW&��^�{�N���\��+����o[�0P1p~�+iqo���A{C}��������o��������D����YEdj�Y�p�x1��x,�������M�6���{�,-�a������~�������Cvc��s����{s9>�n}����u�x�G�+�?�;H�q�k%��4!�~�k�G �d������������!C"""��9s��R�|���,+nJKK�-[�F]���[��`�?�r~��iP^^n�K�����������Z���uk����^��n�:����"*������;����2e<y�4��NB�R������8,�L�m�h�n2�;�������PP�����h�w���7�dS�?[�����/���]J������FD�I�M���s:��|�����+F��$N��@��������/o��/)����6��x�
Y/h�F���F��k%xf~����S���;���K/��}�����u����={��=��-����5k��������m�FY�c�Z�^~�;��}�_M}�m�?I����.�k*�r��LOhs@�D��p�����
)�C�!��I����E vB
Y�f���s�@��=srr ))	6n��Z[z���k����=pdfffee���M�<y����$�F���6m�d�o-++�
����L}����[��J��i�<��,��4��#k
<��L���t�@<2��rb�_�(4�C��(2��R�L)����5S|����q,I5��PucGS�����u�������aa�1��%%���/�,��{h4�P;Q?U��I8�-�����{T�����I�p�uN{�#�wI��{F��������P�����Gt���?{g�D�����d2��$M��^���"�-��U����W����WV��Z����+��a�U.�r�e����-�-�m�4ms5�����v��i�6'�y>��|>y���N������R�G������
����w����TVV.Z�������������J��5�o�BP@(9�����v�#�>�~����U��32~�P|�}.;��>24M{��[]]m�Z	�HKKp8������j���g����o�����^�;w�P(d>�'M����l����)J�2======''g��n�w�Z��Ay&@Q&����uv����/���0�6�@�0x�����K�(3�2��Ke.ee|L_b�l�u�Ve�������_���'�2�A�rK��L�o&�|��G��f���5�����o�3������d#��F<�����(��P}������������2��	)[d�[Ot�����gT@��!��������&�i��%���'N$�������nO�������\��;A�l��m����_�2V+�/�:.�(����GZ?F��������m l+���H �����ocI\b����������`G-�}�inn�Z=DwRUWW���9l�0@rr2�����9@�����e�������k|>��9;w���K���W�^u����_�|yvv��o


L�h���8��Wae������2����	<n4��b0|'D������)�8E���c�%��cm%_(�����DOz������r@�i�R�'��g�c���>����_:E�#��S������Y����h�4�<�~q��|iD� ��D?{O��(�u�7�j�������&!�@���.\���76~aY~����j������*0�����J�J��%���&�U3iv����M���GF�u�,$h�5j ]ZX�m���<��V�[�?�D� ����Lj��`f���vE ��.H�SUUU\\������������0�s��"����c��{/����������������b����������{�(F(3�QP�����LH=�@ w�R�b�]&JJ
����:
h���,��]}��a��H2f��xf7���k�[����PJ��$8����0C�&�n��Z����O���7��`%M��\*�(G��	4e�?�Q�]�������F�s��|���32�:(�		������\�7����90�F D$���)9D$G�%�"�#L�rD��D�/��4:k�������:m��]��'[����\'���0X�����Yf�\kW�s���T��GE 

E��&|>?..PUUhm�
�IJJ��Nrr�����o��&??���AL�<Y�T������������f��������w
�LHH������@Q&���g�>�:��F��<J� �]L��BM�o�7��]U�syY~eH����'���a��HY����'9{3�+����r��O0C�NI��C��vS���������\��b�r\��Yuy��/�.m�����)�����$��!�����:[��QW8�5!�!�&�p���,��!����nj���8���4B�F$.�40�X;JL��LM���.5�4'���$�e ��,-�+����Q4.F�m�����_�?�����ms��;w.s�T�������IKK�>}����77������x������7J$�3f�����������f�����~���w�q;��� �^yO5���A�l���_1��;:�9�@���|�me�����P;�R��GY?��e�U��(u&��W����$���������$�3Jx~�9���|_��Y]����J�M/� �����)2""mV������)2u��-���$��V��,�03����K��jo���Oa�q��uA @<�HZ*�F����f�y+>qq�(�},��S*=�������?��$n���"x����8��������6���k`����F�r[��g���?!������S�G}t����W��i/�
�����+���L���]��u��2$h�)2,-�A����R��S�N�K�s�"����~��h{Q���yo��QNO?��c�9�
\�PN���7�6m�����7O.�`�����!�;@2"W������e��[N�X�S�#6�9�&L�����|�����T�
��^X����z�J>0������T�������vj=��BDrbfJF�;�����2��KL[���!��k�Jfz|
�8�@Dnn���{��t
������s���>2���}���L}���BV�A�����~�;fH�����|�
`��er�������CnW�\L�>�5�����������3��d��7�����4\.W�Tz�&
b�xhqk�#~���Gi0Fc��_�g)�9N�b���VJ����h�;"�E��<;&�
A����8�GFF��}���#� ���P
�+��e2��>�F<J����Q\[���>����o./��[L����u���%_2C$-����9�Se�����'n,��Y��efDD����?\�j#=7#�F$����c�c���|�KL�A�����u���D��l��u��m��|���>����6�4�����eM�[����Qsr@w����nj�5���#�G ���G ���C�9Q�EQ�E�DiK���~l��@��F�1s��imm-))�p8�G�f.��?�^����W�Z�e�����K�.�������;6::���3�a����5n�o����(
��m[�����O<q���o�����i��a�'ONMM��kWAAA�����q����������{`�L���w�N��:Dv�g����@��
�a��efg�	&�A��;;x�.n�^��\?}�"�	?�8l��cUs��ZvF�5=�2C\'�~(n�+���������������+I����\�z����$5�[��p�gE��\=%�'1�C��8Z�j����8Td ���0fr�K1��n�{{���|�9P*�����cimu4��������GgW?�P����������	P�8a���q�H�y,���e�4�G��@ C��M�:����8��w�}����"�e��Y�f��fW����j���7o�Dd��������.,,�?>�D�V��~����|�xW/�-[��6�z��/����&�T�f�����/+V���d��-{���w��>|�K/�L���+���2`��Z[[.T���6���41�GA�k���
W�9E(�D�!�54�0�����H�qqq���1�l4M���H$�F��a�����d
���q\�T�����tttyG������Ax���u5a��d[?����l�g#����)O��j���m���r�b��
6!-g��������D�"�������t�e���\L	p�/����\��j��{�~�&y�r2B���;��|?J0�m^m:|�u�4���J�n)�� A��>a�11�e�����-���;5���#=�{&pe���^�e� �EFu������h�<O ����>���u}=��������������7��@ C���a��c���0a�D"Q�TG�ihh�h|������Q�F�?����O_�pt�`�(����/����f<��/��S4�����#G�L�<933� ����#G��F��~�����3��F������E��������77783X��
(���Q3z���4��2d������N�P��T�&�����~N�9(gTTK�g��'%��{G~�j+y�w�+��E������S�������v�������"�JyD��M���^�a���8i�������7
|n*�U��N����������A`_X�L�(k�� ��#1i�����d����3Q�}�����>����#���/�����
�$��D��6��6�d�qB�h��>.��T$6� �J��7�c���I���(����:������v=em�[����t ���i���������������������o���JeZZ h�'CHgg���<�6o��z7�
���7@Q&,��Z��4����x&��@ ���^_UU5��@ `��UWW�W��wb�Y��K��q�.Q&�LP�T~�[�j�r�x�f�I�������- ))�d2
���� H^^��7(��+��������|A\�0>������4EZ5�;�c�l
�����
C�}����%�_"���U�������l������;P[[���
4�������%{�������l6_���	�g\&L�9`�e������`n�ht�t���Z�2��u�,�k��
�I!-��	d�b_�>�� f������O�\�
�����I�:6-i��6i��v���N��ci�:�����(ndffn��Q�����n�m��]��r�V���GC��6�2a�0��� IDAT(u2[C)[���"e H`�V��s����b��r���@����������]�r�^E�]Y�|l�9���	FH�1�z�0�c7��u'�u�L��&�E��	���0u����������J���,[:.��G��2��m<Y�:�V<$�`7����J�`��i��t���df������M7h���[t������x�l�`�_<7�gP�)g��9xU~��?�F�c��!W�0�'v@���T&���'�z�n -L���H[���w�����o��C �;v�x��W�R���G_x���'O������5k�����|����.����V�m6���j_�/@Q&@@|";�o�WYk���!t��%�������9��~B[Z���7�mY�Z��X*������MG_I���r�����W���p��I��1�*L6�����,���Z@h��K��n�Wg���8�qI�H�-q�WO����:�"	���]�e,j��}p��L���(�l�/]��.�vS��Q�T)�����LK������z���#C�����h�kC��[kC�u���a� m:�4{��X6T��0�2��f wuuuK�.��{��1c�v���������g�+������;���o���1c.]�������P�	=r�T���r�@ ������6��1���efg1K�'r���������$�],L������O0@����\� v4���Ta������T��X�b�4\���G�qQ�Y�����~w�#�����?��=.I�|E���������s2dX������T��f|�l	3�W�{��O����7(������z�"'���}D����%�US��)�p1�K0B�	D�&��
��������n���z7��n�}�������.�8t�PZZ�3�<��������[�n�={v���{��ek�������o��555���}!�E�����r����6�fXP�B�#�=�J���s���r�
���ln�eP��������������w�_���_ot#�Sd
����������:����*Lg�YG����2��'�Q���B����,Us�����|_��4/�����n���g��>���9=
	(t~�����������
�a���0jEy��M?LL�&8�@�������6�yU�M�(�F`x��1?x���p�W����P.BDr��!^A�x�����H2qx��f[M9�sAK�h�BwO�L^���8G'E�4�rT8bG1v�/\��w�����������=K�R���������4_~"T�B|�2�,(�@B.r�K�49h��2&�\kmH#���������k�Eo�N�33DQ��GA���������	�"����Ta�9:�k�Y���M�=�1�?-}���:L�
$����?��n��,WT������aMPH��1L���7�|:�9�
2R���Z~G��.��D��]�j�e*����02�%�[�F|T��c%�O�\a�V[��z�-�@8c��M��"����KPf�����\��x��'�$.���T��0�"�P6����J1�$e����@�h��C.�V��RQ$e�����������b%�>����BQ��F6r�a8�(b��
�m����l
�������h�Xl�Q���.��,NQO���~Q�x3"w1?z$3��f�Y3�`nt#(���Ta����7^�����Q�����qL'�����tzz��������rc@pL���1#r�����y�T�J����!���AU��G�	h����-��R;)�~�������/��0v^)_0����sU��.NZi��amu�M���>�q	\��R��a�m�.�t.<0L@�������0�y	��3������I@1qD��c��8L����nKE;hMG'��"��+����nY�B1�4
�nK+�%��n�����ds� �@E�P���@��^�@ �����2�6
�v=}	Pf�xH��2.R@������Zs�+���nGn*� >��W��7�Ekn)35G�m�?}e�T�y���X<#��R�U������������z6G�&�O���@��k-�.7�D���N�@��~�d��)*�t��}����V������6�f�����Oc�s������)������ (`��pi�^�����#\���GP�K-�%�FT���n���.�i��gE�(��l��u$����%l89ssa��WD�s��K�,n:
P
���j7��~V�~?z��n���n�x��N&.��������-���bSc�����. ��gm�Cy<e:Q�`N�O^63#&���8����6R��������?��Z����+�M}\	4*2,:?������;�?W�F������#8
v>)bq�h�������
�4l��@=�P.�K����O�}�4�3��r���h��(#��8���^y�d9u�O��K�"v���(*P_H ��E����W�z	��'\��|~Bh�1R�%���R���Z�\���#/G_H(����(����Fq��$���L������l�:�9��Cs�j���SBn3#���:l����z7\�p���/$�L�I�v���{��e����4�b%s���E�3��d��X�`��i�����A�.yC�u@}�v���������c'y������m=_���2��=�F[[�~�R]|���]0�K�A	�"����Fe%��@�
�A���Ys5 ��I�%��Z%P���d�J�\!�n�[�V�@�I���4��V�=�|���@�(���*�
���\B����m |���@M�{��A��f�$iC������*�PvS��U��=�65�i/W -:SS	#�����7�����l��W��,�r��3G��MJ���f	M:#Cy�b_��~Az���,��o�l3]���H���\��N5�C���;����qU[�bqR�$b�^��Z[���;���~�bo9^�PF����M��q��X%�x�vE��T�s#����b��	i�Ik������F���8��5*7w��7��/�h�[3.��G�����f�F�)�6]+c�
F��������8��+$���Lh`�dE���!�-�@�*B��q$�D����/X(k��.�Hc����=�����DoE�H������x�t������V��7�����U��<�^w%F,�����5�ZG!7!�)�����u�Go�����3	>\a�&;�N�8�@0�W&_"ehC]G���Q�1C����jm�������lV���U.�ggED����-��Uq(���v�������|� ����K~(.��A.�nx�"8"��{��D�U����1oyhh�@e�6X�@�����k"�M��2s�S��g
�3�A�:M�Kl,�Es���U��<���E��Q���F�j�������"���g��{
Ep�y���t����"�{��0�u�76I�8�t���Y��*�:��|�/������]�|Y���,�T�?2�O#c���!'7����S������z��]%��9��"����u}�Fr.~&���S�q�H`���B@�a2n6x<��1�5�j���C��~�K�d��y������������I
���/m��^OE�A�?r��W�Ki���/��K<1�?����c������U��������v�#P��B�nSK������|��di��Q�;T�YI�R}Z1���J�+��O4X{D�(���
�����G:2(<�/P��@DX�2�7o�=�}�vW����/�����������p��H����������i $@��������O���/��*6���RJS~)��_]�_�:a}
�Oa����?e�Vy��b� �u��Vw�r���5aR
�\�(��(��M2�)���L_4{�Ul�����kM������]'1�?6����x\���1{��'�A w,a-�����z��'&����<y��?��r�J�L���VPP�e����{�uol�F����K��S��1qc�6�3�d��GR�crA<���Rs�/p�<�?�$�c��������r�@��UR�]F��y0�������'������G6��]$����^�V�
��R	v�/��,���2g�'E������
�t�a����f{�O�8��y9�#~*� 2(�]��Z�r�<�'+V�`�|��m��r��/����=a����n��I�&yo|���@ �������5�%��8�'�l�����~���\�b����Pi	R#V����Y����i���Op��/_����9��t����,�F��z����{]O4��OT/8]��N��0P��=��(s������a����#Xf���l�h�,,����u��QN�sr��\,"T�A �K���/��KHH(//'�>�-Z���t����_��i��3g6l��i���k��<y�K�p��oE���A H� ����'?*�i���Fu�Q��.����C����%�f�����5���^�R�������������h���w��j�
��T����Nrx�n�R-��@W�x��Xld28�s������������������26qiO�(
�����{C�c��X4L�*�8_�d����
���D��	��~�a���(8��������<%�J"�(8��0E��Jr�\�R�d��C >>>T" ����eRSS�~�z?6�;v�.}Lw���i��y���(JQ�76{��a2$L���h����O�x�&7�/��H��&�P�,4M��]Fp"��S�>�qUd�5���f{������y������E��v�u�����3�${�LI����v���d����}��NQ������R����������/�{�f�y�RxI��������#����?*���������W?�x<M������f��l� ���*v[FG�+	��/�#��-@ w�+�0e���y��Y�f)�����c��;���g��'N��X___SS���&��5�76�6�^�@ � �|����)o�jf�K���oY>�����������x�dQ�d�<_�r������4�������k��ju���amw��0����XO�O�*�M�aat�&r�U�:[l�4���4i�q������v�1�o�;�?��M��������y@�����hd��Cr1��k1���w������e����b�P�t���[�'b�Bf$�y�����z��0�S[[[{�#��k'�D?{O��l�)���rr���_v���u;8EQ�����B�hoo7�Q�<**
`6���������+�Di��!����\��C /	_Qf��a���~���33.��a��-[�z�)��o\\@�v��V����bcc5�76�~.n0WA�~SG�%13SU�1��Z~�� {�@ \�Km4@mwF���^���Y���z4��u�v�}���P�8A�$q�d���
��<��/��|d��S�E:���h�j�V�U��h��-�U38�F��%>s�p7oCF (������c.��\���h���`A	�1��(s�K����+L��a�3���c��_<�l4�#Id��i���X)�MY{�<��������!e���E�le���gQ�^3�^��(w����mE������f����b���!��?&���-`f�8����\Q�KD�&X�1S���o��4�(k~��plb�V	/��r��>wE�Jy�F@)�@���e�H��W�Zu��A�$g����{��\������_D�\:::��en;������hs���~���J���~l�r9 !!A$y�)e,[,'S��F'�M��D�#
��� �d��928!�|>A���� ��<5�&N����$:::8����T*���P�J���h����������� ��a�3*�c����F:?3ec�q��m�O'-����.2"(����&������
B##�F������9=���}�.N*��"b����V���b������qX�k�����l=����v��6�k]���8�*#1���G9%���(�E�)��cQ.��0��`|�#DQ�Q���/����dlc�q/�E�`�~�Z	�����w��*M��N��p���lh��� ��0Qc�����S2����p9r�k{1���O�_U~YLMu��I�b����n.z���2�����kcF��9'�Hw[���+V2�t�&���z�@ ��e��;g4w��y��yf��/����<s��s�=��G���0�~�e&�1""E�mzo=m�����x���������+$	s�?4"�:��3t��c�D�D������nOP
�����8A0����z�B�P(�y"�Aa�/wtKm���N�]������A���~��)��j���jw��x�����j��������I���&q]}p��#-���nk#�����{a������RL�(�EpQ���*�p������"S|�	�	�w ��wY�+�P�@Ln��*�5<����k	p��?������M����H��3�2(�3�������.���_h6���w����x(��|��l�B� ������[{O�={���h��)yyy����h4���R��-���U��$Ih�{����?~�9~���i��|���'$$(
�Z�R�4(�s��az���
`��\.W&���=}zP����8^]]�����$	� :�.{�����L�$KKK�� **J��'�(:::&&F�����a;�bbb�t#1==](�������B��(�G�Y��%y�3L��@���D���=�����q�G�?td����p)�K1�0��1o
1�*|�?L@]r@�(M��;��+�t2rLM%����f9�w�?m�����S�P��W6�����x��I�NL����i�@ �p |E��(++�2eJvv��}�ZZZ"##e2��%�I��#�����lV�T�����B�B��h�1>�9�B�����7����,��RSS���/dff�8^[[����Qqqq�544a/�L���IQT�^L���z}�B$&&F�����8��x�^���x�P���X[[;�����A���I�VZ�pV�R�;E}��-M��j�E�=V{M�E,�-X�����
��R~�s��W]�,96���1',��Be��z�)nb7PLe�J�6��5O�
$i��,�\/�e�_��4��(�`=��� ��d+�B��_#��YX��0�e������<��hmme������������)c���'J�1�;���.�4}Y�9�
�������h�a#����[-3��b2v>Y�T)��T������@ �0ea��0%�]a��1U�U*UnnnFFFMM
k��8S���*��M���a����K�/��@ }�s���h��)���i�8�0�c���e����n�|�Y�e6/�Q�/V��J�g�!:�b������<}Lq|F���n$����A��
�#IZ(�F�
SAV�K�[�&�a�(���HM�(��b��:�e�H�0����F����|���������J�V��<C����(��2�1 ��I�c{���B���9\�����m����v��[��� (���fz��cF,'$��k}}}������a�8�!���
�(cj,�W�d�a����l.z���!�:�Q[�U6���E��vR�M��y�J�Yq��8�BB ��T����jnnnkk���s�x� H~~>��4�����3|��C��6����H$�O�f"��	>�2�����s\4�Wl�@
M8+�HmT����/W��83�����x`�����F�W�Y�����w^m������<&[,��k��)���[4�h��}��4��A��)9�'"9<%������QWh����O��C�F3b�[p��@R����H+c�Na�Y��J���J� yy�H IDAT�+ULw����L�:5..���x�W��&�4�Gh��������qh����#+>��o��J��+}S�OY�������
X�NQ����\i:�
+��� z������v���V�C�����c������\%�t���v��P��@ w+a*�����������[�n�����#�<���w��%F���m�;����c�����L�� ���|��g�)�����^Y���/���@ �A0�p^�K�tUw��<O�sAh
t\2�
P'��N��o�0_:{���J�s��P����c�>���tyk���.���]
������.�r�U�94�"@��x�~��U����W�c��@�]J�S��9�l��&�e�:������b�Q�������c��B�A�����m2�hvV��y0�\i��WU���B� �=!����������z��O?]�`��?������E=���LZSkk����g���N�<��������kkk���;fol��Tq��%�>CG^��	\LF9{��+�ve�1T[z��3e��c�C���r5o}��K&����������QW���{�l�����Zx�	
[�0�^c~\����vB$�d��vZ�-��-�#�%�����=F�����M&�h�e��/k~��(?�G��yv�ObbX}�@ ���0��9rd��%�|�����W�^�L��qc���g��e���_�P(/^�{�nf���r��E�M���	&�������M�@ � �$P.~]k��]������4�U�7�����^._�����8�n6��/�=_:����]�wk�����WJN����U�!�Pq+���y����l{a�t����+(��Y�PsL�6�F����&Gg0Z��\l|A�?<!��YAY)_0�����4�C���U��(��k��f�����m�X.^�XRRb����k2��,Y���?q�D� ���>�Z��K�`"������
]q�<�@ �(�u(�QjG+�`�T��2%��Yf�x���
MoNOZ!�a�C��f#��VG�X��U
!�>��[]��J��K�8��V��D]Es�X������K�A���	��~�S�
(��c{�G�%������1�}���Jf�������@DX�2��RXXXXX��
M�.\�p���6A���&E��IX���B�����F3�{�|�f����r�
�xI�G�?������~)[�\�t��C/�ah������
���O����q����+���d�;e�yB��3���N}�}����,���\��f��qI�g��$��Q�Ig�~���B� �n |k�������:G	,(�@B!�g�H�T��
������N:���OZ?�PQ�Uv���Mu��O����#����@ �5L�;�U�*jN��Uc�c�A��)P{�=F���	k��o���n_��F�~�I=-}�}��rPa��@ ��(�7�!vfd�H(�@ w�7o�=�}�vW����/�����������p������_�b�c���H��������J������z5�����O���4�e�f���9E7F\x?���)LU`��P�h��Gd_�}�������t�k<ZB�fh�� ��99Qsr\�B�[���Ps�X[��&�����l���������qP��HF���9W���!��@�t�=}��C�0�r���m*{K���@ A"==���i��������;y����w��r�F���VPPPPP����~���9���c��R�54�q1&Nwf
���������p�G��_G>��e��.j����������w{�ju����	���a���^V������e��(��H��Gx��{ax��&7{5��G�c��DOX�t���l�*�f��������<vVD���<Q������(�B� ���2�F�8�=&H�Q}�cr����n�Z�r9Izn,����m�&��_~��7�|�$����=zt��u��o?y�d��r�'*[PF6�gA�pe��0=���'����C{�oXkC�$L�����aY��,"=�7,�7,�H����g�
�,3L�[����A�e7�k�Lf�Q���z���Q���r�@�}#c�42�O���A8�1������]��T��C����L���a���������������P^^��"X�hQRR���'_�u&����36l��i���k'�`�Q�juh@����:�5<
�����A8g�x�4��M	��[�����;t�XLj��!w"���M��ed��3y�2�a���h< �	�e�@c�����3�8�c<i���U�_�K~��W�^i����UL���
��y�/]l��
��)k�@�x�(l���]��Q[/A w����\�~������;\��v���i��y���(JQ�1{(��-�V���o{Ig@���+2�lM	�8����rb�^�Y��h?f8�Owx�v?uj wRD� �a�����^���-6�v��J#���$��'N	QF_u�XwR�<�FOzF}��wX������kyy	sm��������I�������B� ���2Ar);�����U~!����Luu�#�<2k�,�RYZZz���c���6����'N��X___SS�����	�o���Hm����QI����-�����n���1v�X�J��2�����Kg?$�3At/<TPVp�Ke��X(�I��}��;��n�����
�����\^v?+�HN�&�#�D ~�s������+�,5��km����RE���B!��}�B���+0�/By�S�'��K�N���i����/>���I����t�nu�vw��@ �;(��|��p^D�����
�@nw�
x����|>3�p��
6l������bj�����j���j�:---666@��9����q��F����bX�2���\Qf�x���(N���KefI noKJ��L�)��~����{�����2��a�~��Z�7�H��ge�Xwi��a�m7�7���k��5��r����2i�h�&����O�2E�������=����������`�����q�0z�3�g�NZ����&������'�����q�S���i��s���0��@|�2AE�\�:44���L�H��W�Zu��A�$g����{��\������_D�e:::��moo���^��#�����Dv�����c�y����>��NI"�J���M|(�
��!LK�b�R��
bcc�y)�|����vf��F�GD8$-����c��9����s�KW�v���Nff�?��������`n��=����q�mW�[�������kl�5�G�T����oqUjn�-\u�hV��VN;�8��D�����T*�_�)))UUUC>�@(�U*w�����K,�c�����s
���o��� �L,���+�%}�AE�|�by�x���+���~N�@ H?@Q&���&��1&���|��@ A���sF�q�����w��������g��y���>�����&��j���k��n�\.7-�yY��Cj�Kc�K���N�q�����-�������DTZ"*E�H�5!�sD^��TK�Gc�C4�0n�a�����WKD�Z�>�>����x[L�M��L���[c�9B{HC��N�����x�-��W�����+b���!�h���_���v��Y�p/3���\�����`���/���&�|%��N��)���_WTr�
�v d�@Q&����V�:�EX��;��uk���g�M�2%//o��}�&22R*���0rL������#G����s����w@O�|���3����i�����p>*�����);�z+W�T������HJJJGG�N��e��9r�Z�>w��/�$�	�D�N�$�G���c�c����k�����-��H�������JKKo����$�B��^�;F����L6���q�S���Df67#O���P�/[�i{�������V���klu�5Wk�O"���7n��`����7��=����2����PyN�C��(����5_���%������a�9E������1T�
�����r���'�U�;�hv����S7�����|z[�O�)���@Q&���V�I�;��`?l�����l��)������kii�����dn��\.�T������F��
��-��F#M�\��5�@j�t�>�t�t��l�{��<`�ZM&�7��gD����������w��������s���I{[�M�M��_�������C{u�~4���>�hq8�������D� ��T�a�J�����O���)�70� �5��r��2KW!�R�5k�m���d��������#�JE��b2������a�:(�DI�:�/��b���� ~,3�����s�P�`�y��v�5��l861e�����G�G>�}��~#�+��e���e���,bg����
km���@ AA����*�hnn�T����������������(34���a������JY27��*�������:�|��C�������1/�7��q*��6j���U����h����A-������:�_ry�<��x��iD]n�^f�`��^5_��0����9��	%��kU�o��]�1G�������u)h�u�\xm�������������x�n,Ed��0X�@��2�#2q�R�����x@ wQQQ���mmmqqqL�A�*����������9��<t�k3~�x�Dr��i�> W�\Q���c1��u6�i/�s�.�I�'��N����Z���t�R�����(�P�G�E0}�I�<�Y�Wwh�v�uKu��-\����eQ���G�����j�������|��RQkm���!a�R��Gu}�ZZB�k�}oj,�w�������s�P��������5�
'�|����y�4�oyY�g��e ��(<�	��c��kU'B�	---%%%yyy������Yq��G����t�#�l����w�y����~�m&vA�u��>�����B�s(`�������(��k����7+q���~;R�5G<M�y���!�D����qo��Tc���;�]����?��
�k#�\~v/+�H�(Zy���W[o�X�j�����2s�uK������W

�����������_~y��	2���������n�J��`m|�A8�;q��9�hB��E��?�5����EG��Z}���:dT��{�r�%�#E��/�P���@ �P�������6p9&i\&�eddx4�'��^����"u_���a����0(�$�����-`A��x��M}F P
��ID|||ttt�R(�X�g� � A{%�wHLL�{(��
���~��O���C����[������8�O�>��'��(��'�d��Z[[?���U�V�����7�hoo��'/^\[[��w��1\�|J��oG���������?4��Bp���	��(��!���e���X��iD2���q����;tP�@���'���Kc��ryY9��,^����d�-�^�2���`nZ�aHip6l�������{?4y����w��r�F���VPPPPP����~��A���p�.M�p)�z}��|���
?f3������O)�9�^�=y�q�������}D��`�(���n��t�f@K��l6�e���#��s�����^�/��r��8����:���i���d(�z����D"�4�� �Ng6��Z���<;�D"Q�^IF�0C�A�����#K�,���OV�^�z�jf�����/?{�,k�~�z�B�x����w33����-���8�����F�"���������2�c�,G�?������\~�R�����y�Ql+W"9���G�+1S�S�s�t��w�m��f��pN7>�HI�:��I���0Ux��/L!���!��{���1������1c�����7�|��m��r��/����o�$9~���G��[�n���'O����G���"�����(�V=��o�.���J}���:n�}�l865�+9o�G��i�6���v�����[!�(�I���%���a�X�0Fl��������&���P(����D�E/_
�������h��v111F�1@%B�`����g�D���dD����!���r6��v�:p���3���-���KJJ,����dZ�dI~~���	�(//?|��k��	�����99��m����b��4��e��W��I�&��L{(b�l�\��;���fJ���L}?��r���:���*1]�&6��o �J�:�T�e��������N��>-�i{����?������5��[�g"9��[�lY�l���e�h������'O����L.��3g6l��i���k�2��76>��FZp�(CZ���^r��l���*?z$3������gw[�C���g��9I�M�-M�-��*��Hm<�b�Qg.����N�(�	�,��s~�A[k}Qd ����b),,,,,�����.\�p!8.�|)@���qs��_j
�w$u����/7k�������#f/����=�(9��?�������5���=|X����F�l����V�Z��b*,U��]�r��%��P*�,�mPPP��c�ku�;vl��i��y(�R����~��%6�5�����t��7S�53�����_���8�N���W�xl�����_�{wE�������{���F"DY��,"���\DF��z�+^����x��;��y�+�2�����2�(� ��n�aQ� H���;�w�����I���z�����TW��s��9�~���x����oZz�j�oi������o#@bAPF"�EW?l>�e�Z�k���
���|c�~���z���M:7��= ������\}N����Q�2nY�q�Cpn��rC��w:76y[����d���g�-Q����*�q��_�?7�q��<X�>&ND���7I���XO=���QQQ6(SXXHD�}�Y������������Id")3�vj�������ak��f��5Y�����a�|��_�B��1��1�#"���b��l������g�_���`BPF"�����YN��mkp�Zv��B�u��6^v��"&S���\m��j�ef���j7���g����)7���l|��I�|���G���\"jn�n���\RR���c��")�)��I�,�^OD����43wBpx��k "3���tZa��j��\ZZ:�#���'�m�1�|��=^���L&#�Q�FY,�!�9����h4���B����\���������������W����c���J\�@L#kf����p�*�����|[��JED��������I�� � (#s�����N�������r�^,#�u��������/��tE��I`]mrP���L}z��lj��CKJ��Q\����y�}��p�N��E�W5���C=r�8����y�����(''���j�2���������'�����H�������i���{������8�T1-jAQ~~��_�5s���r�G��{�
G96�p�s�M������ T!��k,9��_;���d��d����	�j`��L�����,4+_^^^�C���j�Z���k�����ED��Y�Ve�A����}��������S���@D&�Z}mk���i_�����g.4-��x�(e�/����;?*{k��{�������j��j�����]�[|�Dd2�233����|pHv<��c+��A��L�H�������w�u���ml<���h�h4v��n��[{��=B�����k����Mo��dj�z�K���o4����O�~����7l���,��Z[[��>�&|��X�\"R(���� �<��C���
�@���OU�&�l�O�<���u�%"?���Uyd{��>�!--��r��R����t:���pH�\��iii����ED���
����#d���[
"���
S�YY�6�_LD�im����N#��W���E+Q������tm���{���k����� IDAT�_��6�����Q�s��:�f���K@�����l�����2�d2Qsss$e�wvvv���������/�������c{��Yxm��U��u�:�����y���VF���5j��}�9�q�����1����%U��%����}�u�)����Jq<Q����3����%�+##c������O?=��T%9�yV��,��4e�%eB�V��z�����W��-��O�~������'N�8n����������"�J�*//��{�u���fsUU��'�v���"e�A)X��!:�!����l
iT�~5o���2�F\W{e����W/[h\p�~��?�I�N�U�>R�:5����p��H�_��v!�455edd�������	���!�2������0z�����<�	��W����Wt�+�C�� }�-������aw�r?��<i�����y���F�@�4�
��3/��I.oS���f���������6$e�����V�m#���J�U����Z_"n���������|���g[^��j���~����]\�Z��[���B�0|


���+++���	�T(EEEt:�I�a����i^�����!C��{u��U�e���K��u��a�������kj���F����e�����0k's���R+���W������� � (s7Oe�_kFw�w�w��5��������e�I(Gd�h�������10r�������[�`��M��'M�>�`0l��UL�I�a�������[;���?Z��%���Th����;^�o������(d�������2u3�������W��������������f�WXi��h�H�_L�0"�|���,����e"���|���^�_QY.�7�f���J;#���'�,nt�u""�P���x7F���W�|�o�1���q��/'�^x!�2��W�.�$��77_����m���r�<���4:������w��b���o��|xp���_t�������y�U7c\��/-���I]W�WV��C��z�\����?�5uDd�Lv��1���aC0X���J�����C�*n;����������_����c���j��iiiy�����������X�������n[�x��c���Yy�a��d�m9o�)CD��m���
��T@Jem9���]���U��'�4��4��P�����+��s�2u3���J���Wq����j�N�yc�.��f���W����:)�����*��U,�����`P�2pV�i��m��uN%�t�!��r������/^�x��u�����E��I�!����wd�L�ID�������[��_������K~����LH�@R�c���������Vr���kM��m����D%���U'3��5��-�XFDvwM�����������6F:eb(�0��S;��O������*����Yzc��s�^���n��m>������s����bcQB?�A���Q��:����dB���������cx��%K�N�:c��J�o��?�����m�!S��{T�mc�6J��2D����/V\���P�^j�xC����m���������W\�)��v�~�NY4�u����$��D��6�#h��[$XiF8e�@,3�,$u�\W����N��X%�D��Ga�
��O�]������\M^w����u�|�f����j�	�A�����` m��������;;���s`y��u�;�m�2�1VYYYYY9�2C���y�>	i�D�jN���v�5{�/��"�a�������&���_i����dEN���B��D��5��lW��w�A�X`��q
�m�����|Z�2� |�zo��e�����V����n���|n�������lO�,6=���0UO)/��g �����K�[��������C�+~�5��+��/��Y���
�J��J/3�_���?���.d��t�4�nF�a� +m�3+m���j���9V��hI����E�����)S��t�C�}������oZZz��x��������/\�v��%KKJJz���.��l6o����7�x�����X��e���(Se�N�
qEe��?5�a>�s
}K������o�^�c~����x�7�z���v��i��d�z�����0�����?�O)�o@wp`�F�6zX���������'h9�E�]�zb��%A7e�|){����SA����n������1��6�un������2}F���������i��e�Xi���U��s�?
������A��+W>��D����{��q��M�0���n�9s�����5���QWWWH���p�g���n�:��b��Z[[����+��r��)��{o�Z�v,�Q��vg���W���F�U����2��L�*]������I����j4G�X�����:�cM
���~���������.�p���` ������G��	�AB��1�}��|!8Pe�b��&U���,=�S�2�+�C�������[H.�+��ty�����'��z��>����J#0�_�������}	�2��5�m�G8�k'"g�o� KZq �1r�=�A�]'��4}���k�$>T[����o��F|[}y��
]7t}LDr>���l������������^%��m�� "�|���N�	���k�����7(s��>��� �z������ :��O��m������WTTx�^"*--u�����?�S���^��b�<��C�<�����>}�'�|�|����zk��-�h�����I����}�m?���q�k��� a�8����+9U��Q�3�*�\�!We*�ru�\��(UM*�H.�N���������4D����*��5��a��L���@��Nv��sH}���� T��f`�%g=�.@1��_p�|�K���s�Z*_���
C��0w�C�Uk0X&�V�������f�y�W������{U�+m��������7(s����SO=�z��d�v���;��5k����;����J�Z����o���"2D�h�����-[�<����h�m��=���O>��=������*nd\�w����SV?���i��1�n;f�q�����b�Yis6x�
^"g�geZ^��P����
U�\���
���ye��� �U�AI�����&"G}�|��� --3�1z�.]�ko�]1����U�����P�y�y�������*�P���'��A��2�{��L������?��k$l>$��
��;���������g��-�G��<yreeeqq1�q�8W^y%�]�6x~���k�|�������yA���9����U7|(n�DUBtT�	���������UUU�i��!����G�?���U����(���]�y���
H��}3���<�>���<A��d�@D��)	D����k��J��%�b����e�z@a��\����o��I0�J���[�9��8����&��1\���`�7(��;�|��W[�n
����IDt:������.]:�|��ZUU�y����7��g�}|������������fbw�YSOo�9�_���9�zj=i�a�%N�O���� ~��r2N��ggg�d�����~�����u4<������+����$�p:cZ����������H�d���F��h��dr8O�W_NN�������!�:#���h4���������H.vZ���+�+9�z�L�K-jm!z;q���ac�$���N��[�a=�`�������+�j2���]�&����5vwMM��4���[�_�z����\��y������9s���_�t:���"=z4��'?�hN�����k|�����ow�}���777����C�Z777�������4(���&����5yO�������A������]~������v���0���25k�z��������.)���7n��sjkk�n�#Au
�b��	;w��?X�"����!�b�.���.0�L{��9y��)�!,��(�!S�z�;���IPJr
�R�e�����d���w��%����mDQ�J�jEV����Zi��|����uK�W-�-Xi`J��L_�/��������+�����H��w���������?��S��z���'��_q'e���C����FD999{��e�d2�=�j��<�J%6���7��X���5�\CD�1��O0:5P�����TH>�����4�+AD�q�B�(.����o)--����;��-���C ��8��4iR���K��������������)�s�9'����J%����z���qJ�2//O���H�����r��R�8[f����d�}��4�3�1����
L_���S�����D�D�~E�����S�W�js&9J�w�
����4�����.�0/�0���W���~#a� n�#(S\\�r�������V�Z��#�����������oo��]�����VWWo�������������A4nwh�Y�<b2�I�u��W�7N�.((hll��t6U�T�_�������.n�uu��q�k���~�Q��R������
��C`z"(D��Hg��(��Q.�G�>�B1x��Q�T*����DD!�5����iii=��i��3��[�LD>������4�!��{?�*8%�H"j������-O;�bG�R�����$��������G}���R[�ed2�}������T�����?���O����k}_���_���g��2e����k��222�Fc�`1�wZ����������t�����;v��1c���������������������~����r<��hT���iv?�=;�Oj�:;;���cg��!�1c�R���sggg������<���"A]:�n��i>�/$�t��l6qz]����455���O���ryqq��C�$����L�b4���'�#"�4�H��V�58����f��^��o#"g��@bq){'�r�."r�$_PF��4my"����C�����L�A|[������<��^i[M�c3��f��H�r�J�))��2�e��
]tQkk�}�����/z�
X��w����������655edd�������b!�������z[[[.FD�F�"����@����<�ncc��E&Uno�[�\SC]G$'"--M��E���okk�&P���L&����f31�$��f��f�I�S&==��\.�4g�P(233%��b����9�GlD����%"�G��v��@��I����W�����;)�5�L�����f^W�����ShG��J��� ��mM��m��������0�#>�J�-=_u8�J�|���
�h41"�m����'N���9���dD����`"���H�����0n������"R(EEEAPf8
s��v��l�������@g���=)���iz3^�����N�@���g�
�~M�+	���OO�W�����|������`;�����;�{��'"�����|�j���Xi �$�Z���-������_?g���"����z����!yU8��:u*UUU����OD,.3}�t���u����V�d�
lt�����/4ir{�m~�&x�o@���A�G�2��	E���B^c]2&�	h��'_O����+�QN������uU%k�����������}�Y���+F�����%�5^R�a\��3u3y��s���_F�`�7(s�]w�< f�����i��������/��t��)S����[��^�����x�����(p'���^��)����
��n��7����G��d ^TC`��e�i��� ��T���M�I��R0�co���x����{�D�������{����/��������@�w�+mO�{��1_.��vi�Gs�c�'���������.�<�s��$��%�N7f�"����K��~��k������i��G}�������S(s������A�����iM---/���w��~��+V����v�m�/>v���5kbzC��.���Q�:L������L��A=�>C90R�A5*8+��|��#�G�Q��?e���<h)a��J�V�Lk��L�,���U�+m�g�c�8����������S�� n4(#&|!"���������d�����/��-[�l����#G~��~�������{ozz������['����^�hQOOO�NA&���z������w�L�q�����
��w���+8�=��y2�����U����z���]!��r�J�Z�vJ$+m�xM�J�����<���������7Oe�w J �
�TUUq\D}������7^z��c��u�\�v���s���
.�p8�,Y2u��3f�T�}��}�������K��^�#������,��@|�T����9�\�>��~	�Z��<��#t�u%o���M]�v��F��/
p�Opm�m�v�E;ul�=Ddw��T%�B%hP���\���{�����c������R�V�/���!��M�&����
-v:3:�V����=D$��H�p��j��j5�6��BD�&'����i�V�h4Dd�X�9;�R�V����D�����J��t:�F�V�da����B���LKK�P*��zGL���C�K�D�4`Z���lh��u���:�wH�$H
!+m�5�e�fe�/��f��6���`���R!(��r��y�������+�K�Hm~���vGX�	z�,������\
gq��	���zcq���Tb� HS���vK���|>�4g�q�J���J�����F�F#���z�D�Nu���x�.����D�>}i2��z����v6|g�������s��+�c�6��6�����Yi�A�X�X
�0$�t:-��j��q�,(&�T-D�z����������������9l]D�v�#���q\^^^SS�4_����]]]����dR*������b��%�H�R�\���&	���dD����s1�Ng�Z�L��7G���cyZ�x�L��_kr�u��<������v�����AT��5�b�D�Q�f�fXu33u3,�)D���`� (+>��@���g�d����Y���?@��){S���n��;r��\e���<a���d���l���n;�FA�szO����m_CDjE������?x�}������5������$�J�Vp��N(�0������?����wWfL[�+Gh�!���#2 ���	MZA��(�@�|oPF)�c9�1��K)l�����A���8�����J��M�������r�q�5�/3�\J}�!��M-�{.�c�{�h����v����
�e$��LL��^�8j���������H��.hbr�N}��aI����qJ�R�|4����G��m�Svx��H^;
�BLn���'��`�C��Z�0��&�`�X�0��J�6fL[�1m��v����m�^�;I&��c���B�����%�N�K�PHS�����d�T'.����T�����sM&�7�|S__�?�(��@���������GD���L�m�G�0�;�=#'S��V�-..W���h$A����h/hZ������X4��8�����cq�����EEE����j{�>�(X�q���r��y^�16����.�_�������7��=��tzu�X�h4D$�����EEE������AD&�I����.�ZMD����ahG��������A!(�81(��i_i��k�Dq?�1��2}`��e��$������9x��w�}7hI�Zm������D>]C���'ww��az�~��Q�������=z�L&������N��d�y������L
}�Wp���������g���������"���{�n	�#�q�����J�p���322Z[[�9;�JU^^.�����V��G�=q�������!Mt � �oLp���=2�nq����85��\�6z�N};��@�Qpy���ZW�����v����z��?W4o���&��|�I
A��pt�m�p*������AP���{���D�_H0*�	~��~��2�S_9�w�xw��G�j������nT�6oj���&��d���t�3�o$�L_�>����{/�LY'n��DP�_���@���������u,9F�	�������jM{��q�����B� IDAT������\RF�2���]-�}G�9��A$��%8[)}�:��9�������������(�^Eo�9��qAH,2��N��_�����g�t�h�b��'F�����5�f���Z������~[��
���s<~�H,�����Q�G_:GFDm�X��K����"��%H4��w	�G�������|�u�����^m{��|��/�[���
#e�/7���v�Kh,����wa�$���,���t�}=@baA)���~w3�.
"4���o�S��z���2��I/l����
/��t��E�f��2+�m&	�/W��>��]ziN�^�I>��%�F���� ���Ah������>hI��BDV��o��4yz����F�G����</������A��P(����8++K���r9�F	��h4D���dS�T	�233��d2Isv�q'���j�D������-VzzzT[��\f�C_Z#��@�)��m��0R�,��=_Uz�j�Ma��O�a���Z�����m�����x4`�BPf.�������f��z��b�ttt����!����:�w�n�n�4Mnnn$
����2�\�����f(l�Y�V�����|��2�����1�.fqqqsssOO�u�����,��.�������R��d^^�V�mnn����"�����~�6�:#(	������`NWz�!��O���s�{�6���L��<~	����Q[��.4w���}�����}�b�`R@Pf� �\.�c��0>���|��U�;1���QKew$G8+�1��~��0��(�K1|^�W&�IS�J�"")/� n�[�+ID>�O���UR^I"�x<C�����
����Xj�'1}	�K���J�;0Rf�N�>�����s2%�H9e�,S?W�]����!������B�Y�:�24c�$�e�'*N���L� 0@BAP&����
�lc7��o$��I�����a�p�a�$��������n$��6�H��eCi`;�����t�p
�0������Fk�t��gH4r2��{G�x���N�������Q��n���_�>�����"���2A�;/ ��&�]���{G��=���!p���������	U�y:O4~�r���u~���o���j��������e?��<�z�����+p���L�u���m��IDm���"�U�m������%H8zEq��N:���8L�:����n�����uw:N��[��e���Jn|s���.T�^����� .00e��E�l��'��uT!�$�\�V	d���U�?l���WKF,�������������X>�>��|�:��	����&u+z���3�:���!�M�Q��6���a@R)3�
�����������~�/"�\�~�3���t���F��M~�1zs��]���R���e�#e ������#4b��x�0����uD��"��2����N�5x��xg;�@�q�2K�G��@����v�O�"q�C�\�d���]�^����}�x�y!{��`����
g�3�U�sx�Z��$���&�:+��c��1�n$��"��A�,�j�/@b�����#e�]�tU S���Z��/m���_R�������l�;�}����|(n����6�������2�����&��������c{B��EB�*�n�IO�)H8��w$�J��Z0R&A���m�>��������I7�*c$/��j^����DRX�:B�5�S�E�&?L�
��;��HX�DSkZ��&��m�.@b���X���;������L��n�2��Q_y���z�]�88���
��:+J����������@�!(5<�nN�
�����@b�0�
����������L�3����=������9����3&L�n�";�n9�L�DM����������mH(	��V�rz[.�����l
@?z���m�3��	��nD$�����a�Lc�i������g<�k,�\��LS*���?xQ"�w�0�P�>f��A�����?�R�����BD[
���A����_�����Q�n��
Cm ���r[���:�p��e��H����tg�Z��\�"r6������4f��<pG��������q�8��G*��t��A��,�D��d���r����I��LII�C=t�E������������cRsU�������L���@��
�Fk�|�&n�=��$��@�Qq�M�����qlDh��edd��?��r��_���S�:�]'.6n����Z��IG�1����Dp�nU�y�8�*��xf�����Y�15������5k��u��f����^y��W^y��)S���^�[�t�%�muzv��%��1e��,nT�m�e��Q�(?�@����rM9��|��p�����!��(�182�Y���d�X7���M
�s6cp�������`	%wPF���^��b�<��C�<�����>}�'�|�|����zk��-���M��P���'3��������K��m���y2���@*I�_����O�~)Yu����]>9�����y��;1#8}E����X���A�E�l��������m��>���O�s�=�e��,�;����-���U���rp���^#[���+���=@|Gp���`���9�}{��2�Q����Q���1��f���rV���Rre���J"Z�vm���k�>���W]u��� ��
WT���a����G��r��1��WV�Fga%HOEDlj����������:��h$��E�HK����F�f�����H�����D��g��<~�xMMMII�8�6>-�W��1��������z*��)f�YT*������������D)���2�I��Lnn.577��onn.))���� (��90�S~��/8���F��T��
F�����q�b7���SAq��8����Fe8��2���!O���QNN��={�p���L�N'n�?��������>���_�t�=Ch@�&L�����7o���II�P�x���U7iR�L��TXX(~����1c$����O�>}�����h4r����+�1e�F��������x����J��]�u�J���p��j���b�M�x

�4g���$�+�j������d�x<���7��D$���s15M�Zt$���d��1����l� ��HI��y^���v�C��x<Dd2��vd����s*��`�����|���C�F����M&���K���.����%e��
���!o�M��6�,%���������|��"������2)���."�����NJiii�y[feeE�1���_iiiJ�R�������)--�[��c�z(6�eI�
Zl8��y���<�K� s���&���<I�i���X�J�����$���d2Yyy�4WR&�QQQ��Q�$�N�q���1:���L]��v.��������
�Je�~��f���0�!�pL�v"�w���{���������-�=f�$^�W�Q��Q6���j�������U���W��_}���9,����x�ohh��.��8{�l���q�F	�#������F��.A]eeec�������s�����1c�������3�f��]�����v���Li>���JL���{��5���\rIo��FdD�W�qa��-6
����K�e@�P�T*���r�$���T*U��#�F&���n�W���x���d��ED���!�[E.�3���%�u��jA��������E����'b����---���u��������Q(�X>9.8��]>[�8�L&e�������"*��L��4@L%qP�����222�fsHP�b�QT����~��9����c��b���������X
�RD�`0�d2i��~0�$��n���pHS������Iv1�^�dWR�B�r��\cZZZT[�����~�kkkk7l���X����|����l6[�_�cTWEEEKKKH
��8n��)�v��&�p�����VUUI�7�L�������	��|��4Haa���jjj��������gwww����C>������E���m���5��c�����K�SS_/�0���o.;}�"Z���h���������:��s�*�m��uuuIP]ff&
����b2�.��������JP���466'����������:i~R*�EEE�����O7�w�r�XPP �D���A����q������U(EEE����C-WT��w�0	b�"�T0dQ��|>_gg���n7V�I�Yy�^�� �p`:�[WWW�45j�Z��4u�JIv1srr:::���:�N"r������"M�+)��e���\���
�Vr��tZ�`A�N1��u�Vi~|m��o�Kgzb����+��{L�2��#�1���?�]kzb���IL;��
����6V�o�F����C��U���;(�z�j��w��7V4�8n���D��/��iI��2@�S�ZreZZZ^~��������_{���f�z��/^|�������1eH|��b-�s���������x��u���{���-Z�����@�)�q����_�bE[[�m����2$�T���A���d���S���1C�R�����?W�Hd�)@�COSI�!"�Xeeeeee�pS����
 �R!(k��M��t�3fLnn�^��Z��>�Z�����k��w�R��x<���T�����|KK�u�t���������	�#������p8$�������833S��JP�\./..�J���)S�����C;��l�n��Vc�V�u��y�S�T���'�y���k��Z^^^gg�4������s�9���r��8�+--�X,�\��'����T���	���t&�I���H|[��vq��X����x<!�<�HFF����{zz�����;t�P[uV����\�'������l�N����z��j�Vknn�u����r��������:�����l�e4����x�95"****))���())),,LOO�f�g�BQPP���!A]D4y�d�+��?�K�� �p�n@����KV�ZII�Lf2�:::�~�[ED�q'�u�B��������|����8�3�N���vKP�<���J�<o6�%{[�L&��.�\n4�����V��l!�$�5k�Z��8�^���%�z�7|�2�L�|�GN��2Z�V�PtuuI�V��m�q��b�����|�9��~�����G�U��`���~8�����W�TZ����C�7!IV��df����L�D�cU]]��E���*��s�=���	����v�������t�R��I/�����g#���;��s���XI��D
��9������R���T
_�����n�)����[o��h4�����oKJ��HX��$6@�BP d�n@JIKK;z�h�[<�+��'N��!1�V����$�)#�~[R��]��T���i2�J/��)|vr����I��]z)|�b*����2����>�
�	�V[__?�$J	+�����g������W^���niiy���n��1�Z�[�h��M�ZZZ�N�����3��,������p�z���b	x���D;;����D���?�bIw��{�����:�S��M�s����W U;+�T�x��Y�Z��~��T��*	�z*Af������kii9p���A�����w��r�J��6�m��m�����������y3c�����L���j�Lb^�h�<�����#���{����b�u�F���z�~z��mJ������)�Y��J���*����S��"tV�v��S���hjkkc����e2M�>��p0�f����
��/d�����o���y"��t/��2c����S(b�����\.���J�+��'�����������]TT$�I�{�V�����}��1��~z��mJ��������Y��J���J�{���S:���w��`����c_~�e�h�����1���o��a�z��c�?�x�N�Ry��a�XEE��jA���8Nb^�h�<1�.�����1�l�2�a������o~������C�nS"�l|%�H��
=U�8tV�H��O����Y%��CO#�k������{�w0�zzz��J��_~����kC����+��;�������ck���8�y����<��


���7m����,�����{��_|��w�y'���h��D8��J�+���z�$�q��������=��J�{��
 I�����VXXHD�}�Y�����������X,����
��w������n��?33��:::������>�t�����[�������7o��9P>1�@�Z��g���g�}V�R�y���1qg�����zJ����X�pa���M�p����W �;+�TIt��YI#yO?�{*Bg�<�=�D����������mc�M�0!.���3g��~�����ED��{/cL� ��W^�j��K�
D���yv!.��2�������Iw�***������P')vR��BO��7�UL����FOE�������H.]6t���Q{{{�SmmmD����f
����?��#��W�X���D�`��q��F�������[���n���������Qiy��]0��������p�X�"x���`��MIq�1�bW e:+�TIz��Bg)v�)�S:�d�w��S$,L_:��5
�����<�L�84���\�����'�U�V=��#��o���n�������o����������m�����~�������QiyR�����~��)�>����/ y�]�HnA����F�\����S%����UT����XOE�����CO�����1f6�C������9s���QgA&����.��1v���K/�4�W}�����������
�m���v���g�F"a�]�l�u��d�"�������S%��CgS�~�#��"tV	|��S$L_1���K�X,D����6E�b�|���V����w�}��	>���H^�w�^";v,%�8��'��M�:u����7o�����%Iw��u���dc*���H���S%��CgI}�#��"tVIx��S$&e�E�t����w*���"J�.I��l�����.��m��������x������r�<�7qgcc#%��b�����Kl����!��������'S�{R��BO��7�?���"yO?U{*Bg����/�T�	A�ay����h���;�O�n0�n�����v
n��e]t�������s����233�^occ�R���q���S������
D��	xv
���o��|���y*y�]_��MIq�1��W U;+�TIz����**���S��"tV�|��BO)�j���tvv������k�2�n����6m`��3f�2;v�`����w������]�v�?$��V���D�f�b�}��7a�M�{����h���:��H�+���z�d�q��b*yO?�{*Bg���=�,�?�<cl����^{��Y�^z�%����G������~�t:�c���]w��7��������{n����]w�3�<#������GK�+��'���~���1��x����&�����C��L�[)�d���Y��J���*����S���n���D)�Y����E������������]?~<�
7� ����������><}����%��V����h��������W �����u��d�%�@�wV���������d<�����U��;�T���wR�8�t��*�j��}~�����w��F�V_z��c��u�\�v���s���
)��W Z-O���D�����MIq�1��W )�����b�K.����>#���;o���D��c����;����E�UT���'������@O#Tvv�����9s�=c���TTTH��E���7�����$����Kq���[[[[[[}>�d�.Z������;y�0r:t(###�����HHN�-\���w�mllt��'N�����>k�v�&IDAT���2}s���S����������v:����_���~�3��R,�o~~�\._�|��;���l6���[o��v��wT��/�������������sggggkk���~��c�Y��(^(��Q*����z�xcl���wj����2?����nw��544L�6-�d (SVV����}���k
X�jU]]���`��\�����������������|}������N ��������
7�0y��n�a�����[n�E,aP��k�w������n�������V�Z��xcv����0P8���q#c����������������#>u������W^��s��I�������o�y��I��O���-��v���K0DS�Lc��_x�7Y�V���oc���J�IPF�T���3��y��B\��i�����k;A�����\>??_�j����a�2=��8(&d��/�K�������g�e�uuu���n��v1����)���
7� �-
�*��~�;�Y�Z-�	ev��m���1�z����a�2�����������������sss#�$��0,S�L!����]]]!O���[W\q�W\���h���'�m���l���~��GD�R��;����6l� B���	����Dt�y����?CH����?����?����'#<DA���8���������>�����|��v�=��?��f���
��O>��]����#C?
�g�}������x������^{�?��?JKK�sL�2Cg�XL&���E��b���yU8�,3��YDbHe�����O�.��IKK��������:th��������� ��:��%n�T�������^z�%n@k���Ju�8p�e���'?��a��9��sW�X�k���cs`�����1�J�2��������k��x��a"����b#�Jmm��O?�p������s��_�������C��I�
A�a�(�g������O�8q���	&Dx�C���Y��NP"��o�y��-���^����������g���\�)���~�h����7��3�X#�2�$�a���K�M����7�LD�c�����?$"�^�|�����Z�o��3f����]hi8A����j��{��'�)�Xww7
;g
�����<��sb"�w�y����wrw������?%���^�7��}����������?��Od2��?##��7�,))����~�CfH}���D������o�8N��������_u�UD�e���W
M�\s���e�1�����n����*���c��X,;;[�9g�qOQQ�����"p���������O�8�n���?����K�#zt:����E}�n�:������w����g�	���o<��3���JKK����C���n��q��
555��]�v�t��^3�h�;wnuu5;�o����(aP��F���;�����?���XDC�TTT�\��a-�3g���;C*�x<�?�|vvv4.���D@&�]x���'ONKK;t���={���CV\\<g����l��v�����J����^u�U������7������?���d��Qv������v�jll�J����?s����d/IEND�B`�
xlock.patchtext/x-patch; name=xlock.patchDownload
diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c
index dc3d8d9..c17770d 100644
--- a/src/backend/storage/lmgr/lock.c
+++ b/src/backend/storage/lmgr/lock.c
@@ -919,6 +919,7 @@ LockAcquireExtended(const LOCKTAG *locktag,
 		else
 			return LOCKACQUIRE_NOT_AVAIL;
 	}
+
 	locallock->proclock = proclock;
 	lock = proclock->tag.myLock;
 	locallock->lock = lock;
@@ -949,7 +950,7 @@ LockAcquireExtended(const LOCKTAG *locktag,
 		 * blocking, remove useless table entries and return NOT_AVAIL without
 		 * waiting.
 		 */
-		if (dontWait)
+		if (dontWait || (locktag->locktag_type == LOCKTAG_TRANSACTION && lock->waitProcs.size > 0 && lockmode == ShareLock))
 		{
 			AbortStrongLockAcquire();
 			if (proclock->holdMask == 0)
@@ -973,12 +974,27 @@ LockAcquireExtended(const LOCKTAG *locktag,
 			LOCK_PRINT("LockAcquire: conditional lock failed", lock, lockmode);
 			Assert((lock->nRequested > 0) && (lock->requested[lockmode] >= 0));
 			Assert(lock->nGranted <= lock->nRequested);
+			if (!dontWait)
+			{
+				PROC_QUEUE *waitQueue = &(lock->waitProcs);
+				PGPROC	   *proc = (PGPROC*) waitQueue->links.prev;
+				PGXACT	   *pgxact = &ProcGlobal->allPgXact[proc->pgprocno];
+				TransactionId xid = pgxact->xid;
+				Assert(proc != MyProc && TransactionIdIsValid(xid));
+				SET_LOCKTAG_TRANSACTION(*(LOCKTAG *)locktag, xid);
+				LWLockRelease(partitionLock);
+				if (locallock->nLocks == 0)
+					RemoveLocalLock(locallock);
+				return LockAcquire(locktag,
+								   lockmode,
+								   sessionLock,
+								   dontWait);
+			}
 			LWLockRelease(partitionLock);
 			if (locallock->nLocks == 0)
 				RemoveLocalLock(locallock);
 			return LOCKACQUIRE_NOT_AVAIL;
 		}
-
 		/*
 		 * Set bitmask of locks this process already holds on this object.
 		 */
xlock.pdfapplication/pdf; name=xlock.pdfDownload
#2Michail Nikolaev
michail.nikolaev@gmail.com
In reply to: Konstantin Knizhnik (#1)
Re: Contention preventing locking

Hello.

Just want to notice - this work also correlates with
/messages/by-id/CAEepm=18buPTwNWKZMrAXLqja1Tvezw6sgFJKPQ+sFFTuwM0bQ@mail.gmail.com
paper.
It provides more general way to address the issue comparing to single
optimisations (but they could do the work too, of course).

Thanks,
Michail.

чт, 15 февр. 2018 г. в 19:00, Konstantin Knizhnik <k.knizhnik@postgrespro.ru

Show quoted text

:

Hi,

PostgreSQL performance degrades signficantly in case of high contention.
You can look at the attached YCSB results (ycsb-zipf-pool.png) to
estimate the level of this degradation.

Postgres is acquiring two kind of heavy weight locks during update: it
locks TID of the updated tuple and XID of transaction created this version.
In debugger I see the following picture: if several transactions are
trying to update the same record, then first of all they compete for
SnapshotDirty.xmax transaction lock in EvalPlanQualFetch.
Then in heap_tuple_update they are trying to lock TID of the updated
tuple: heap_acquire_tuplock in heapam.c
After that transactions wait completion of the transaction updated the
tuple: XactLockTableWait in heapam.c

So in heap_acquire_tuplock all competing transactions are waiting for
TID of the updated version. When transaction which changed this tuple is
committed, one of the competitors will grant this lock and proceed,
creating new version of the tuple. Then all other competitors will be
awaken and ... find out that locked tuple is not the last version any more.
Then they will locate new version and try to lock it... The more
competitors we have, then more attempts they all have to perform
(quadratic complexity).

My idea was that we can avoid such performance degradation if we somehow
queue competing transactions so that they will get control one-by-one,
without doing useless work.
First of all I tried to replace TID lock with PK (primary key) lock.
Unlike TID, PK of record is not changed during hot update. The second
idea is that instead immediate releasing lock after update we can hold
it until the end of transaction. And this optimization really provides
improve of performance - it corresponds to pg_f1_opt configuration at
the attached diagram.
For some workloads it provides up to two times improvement comparing
with vanilla Postgres. But there are many problems with correct
(non-prototype) implementation of this approach:
handling different types of PK, including compound keys, PK updates,...

Another approach, which I have recently implemented, is much simpler
and address another lock kind: transaction lock.
The idea o this approach is mostly the same: all competing transaction
are waiting for transaction which is changing the tuple.
Then one of them is given a chance to proceed and now all other
transactions are waiting for this transaction and so on:

T1<-T2,T3,T4,T5,T6,T7,T8,T9
T2<-T3,T4,T5,T6,T7,T8,T9
T3<-T4,T5,T6,T7,T8,T9
...

<- here corresponds to "wait for" dependency between transactions.

If we change this picture to

T1<-T2, T2<-T3, T3<-T4, T4<-T5, T5<-T6, T6<-T7, T7<-T8, T8<-T9

then number of lock requests can be significantly reduced.
And it can be implemented using very simple patch (attached xlock.patch).
I hope that I have not done something incorrect here.
Effect of this simple patch is even larger: more than 3 times for
50..70 clients.
Please look at the attached xlock.pdf spreadsheet.

Unfortunately combination of this two approaches gives worser result
than just single xlock.patch.
Certainly this patch also requires further improvement, for example it
will not correctly work in case of aborting transactions due to deadlock
or some other reasons.
I just want to know option of community if the proposed approaches to
reduce contention are really promising and it makes sense to continue
work in this direction.

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

#3Konstantin Knizhnik
k.knizhnik@postgrespro.ru
In reply to: Michail Nikolaev (#2)
2 attachment(s)
Re: Contention preventing locking

On 16.02.2018 11:59, Michail Nikolaev wrote:

Hello.

Just want to notice - this work also correlates with
/messages/by-id/CAEepm=18buPTwNWKZMrAXLqja1Tvezw6sgFJKPQ+sFFTuwM0bQ@mail.gmail.com%C2%A0paper.
It provides more general way to address the issue comparing to single
optimisations (but they could do the work too, of course).

Certainly, contention-aware lock scheduler is much more general way of
addressing this problem.
But amount of efforts needed to implement such scheduler and integrate
it in Postgres core is almost non-comparable.

I did some more tests with much simple benchmark than YCSB: it just
execute specified percent of single record updates and selects for
relatively small table.
I used 50% of updates, 100 records table size and vary number of
connections from 10 to 1000 with step 10.
This benchmark (pgrw.c) and updated version of xlock patch are attached
to this mail.

Results are present at the following spreadsheet:

https://docs.google.com/spreadsheets/d/1QOYfUehy8U3sdasMjGnPGQJY8JiRfZmlS64YRBM0YTo/edit?usp=sharing

I repeated tests several times. Dips on the chart corresponds to the
auto-vacuum periods. For some reasons them are larger for xlock
optimization.
But, you can notice that xlock optimization significantly reduce
degradation speed although doesn't completely eliminate this negative
trend.

Thanks,
Michail.

чт, 15 февр. 2018 г. в 19:00, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru <mailto:k.knizhnik@postgrespro.ru>>:

Hi,

PostgreSQL performance degrades signficantly in case of high
contention.
You can look at the attached YCSB results (ycsb-zipf-pool.png) to
estimate the level of this degradation.

Postgres is acquiring two kind of heavy weight locks during update: it
locks TID of the updated tuple and XID of transaction created this
version.
In debugger I see the following picture: if several transactions are
trying to update the same record, then first of all they compete for
SnapshotDirty.xmax transaction lock in EvalPlanQualFetch.
Then in heap_tuple_update they are trying to lock TID of the updated
tuple: heap_acquire_tuplock in heapam.c
After that transactions wait completion of the transaction updated the
tuple: XactLockTableWait in heapam.c

So in heap_acquire_tuplock all competing transactions are waiting for
TID of the updated version. When transaction which changed this
tuple is
committed, one of the competitors will grant this lock and proceed,
creating new version of the tuple. Then all other competitors will be
awaken and ... find out that locked tuple is not the last version
any more.
Then they will locate new version and try to lock it... The more
competitors we have, then more attempts they all have to perform
(quadratic complexity).

My idea was that we can avoid such performance degradation if we
somehow
queue competing transactions so that they will get control one-by-one,
without doing useless work.
First of all I tried to replace TID  lock with PK (primary key) lock.
Unlike TID, PK of record  is not changed during hot update. The second
idea is that instead immediate releasing lock after update we can hold
it until the end of transaction. And this optimization really provides
improve of performance - it corresponds to pg_f1_opt configuration at
the attached diagram.
For some workloads it provides up to two times improvement comparing
with vanilla Postgres. But there are many problems with correct
(non-prototype) implementation of this approach:
handling different types of PK, including compound keys, PK
updates,...

Another approach,  which I have recently implemented, is much simpler
and address another lock kind: transaction lock.
The idea o this approach is mostly the same: all competing transaction
are waiting for transaction which is changing the tuple.
Then one of them is given a chance to proceed and now all other
transactions are waiting for this transaction and so on:

T1<-T2,T3,T4,T5,T6,T7,T8,T9
T2<-T3,T4,T5,T6,T7,T8,T9
T3<-T4,T5,T6,T7,T8,T9
...

<- here corresponds to "wait for" dependency between transactions.

If we change this picture to

T1<-T2, T2<-T3, T3<-T4, T4<-T5, T5<-T6, T6<-T7, T7<-T8, T8<-T9

then number of lock requests can be significantly reduced.
And it can be implemented using very simple patch (attached
xlock.patch).
I hope that I have not done something incorrect here.
Effect of this simple patch is even larger:  more than 3 times for
50..70 clients.
Please look at the attached xlock.pdf spreadsheet.

Unfortunately combination of this two approaches gives worser result
than just single xlock.patch.
Certainly this patch also requires further improvement, for example it
will not correctly work in case of aborting transactions due to
deadlock
or some other reasons.
I just want to know option of community if the proposed approaches to
reduce contention are really promising and it makes sense to continue
work in this direction.

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

Attachments:

xlock.patchtext/x-patch; name=xlock.patchDownload
diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c
index dc3d8d9817..e9aaf27460 100644
--- a/src/backend/storage/lmgr/lock.c
+++ b/src/backend/storage/lmgr/lock.c
@@ -53,6 +53,8 @@
 /* This configuration variable is used to set the lock table size */
 int			max_locks_per_xact; /* set by guc.c */
 
+bool        xact_lock_chaining;
+
 #define NLOCKENTS() \
 	mul_size(max_locks_per_xact, add_size(MaxBackends, max_prepared_xacts))
 
@@ -919,6 +921,7 @@ LockAcquireExtended(const LOCKTAG *locktag,
 		else
 			return LOCKACQUIRE_NOT_AVAIL;
 	}
+
 	locallock->proclock = proclock;
 	lock = proclock->tag.myLock;
 	locallock->lock = lock;
@@ -949,7 +952,10 @@ LockAcquireExtended(const LOCKTAG *locktag,
 		 * blocking, remove useless table entries and return NOT_AVAIL without
 		 * waiting.
 		 */
-		if (dontWait)
+		if (dontWait || (xact_lock_chaining
+				         && locktag->locktag_type == LOCKTAG_TRANSACTION
+						 && lockmode == ShareLock
+						 && TransactionIdIsValid(lock->lastWaitingXid)))
 		{
 			AbortStrongLockAcquire();
 			if (proclock->holdMask == 0)
@@ -973,12 +979,23 @@ LockAcquireExtended(const LOCKTAG *locktag,
 			LOCK_PRINT("LockAcquire: conditional lock failed", lock, lockmode);
 			Assert((lock->nRequested > 0) && (lock->requested[lockmode] >= 0));
 			Assert(lock->nGranted <= lock->nRequested);
+			if (!dontWait)
+			{
+				SET_LOCKTAG_TRANSACTION(*(LOCKTAG *)locktag, lock->lastWaitingXid);
+				lock->lastWaitingXid = GetCurrentTransactionIdIfAny();
+				LWLockRelease(partitionLock);
+				if (locallock->nLocks == 0)
+					RemoveLocalLock(locallock);
+				return LockAcquire(locktag,
+								   lockmode,
+								   sessionLock,
+								   dontWait);
+			}
 			LWLockRelease(partitionLock);
 			if (locallock->nLocks == 0)
 				RemoveLocalLock(locallock);
 			return LOCKACQUIRE_NOT_AVAIL;
 		}
-
 		/*
 		 * Set bitmask of locks this process already holds on this object.
 		 */
@@ -995,6 +1012,12 @@ LockAcquireExtended(const LOCKTAG *locktag,
 										 locktag->locktag_type,
 										 lockmode);
 
+		if (xact_lock_chaining
+			&& locktag->locktag_type == LOCKTAG_TRANSACTION
+			&& lockmode == ShareLock)
+		{
+			lock->lastWaitingXid = GetCurrentTransactionIdIfAny();
+		}
 		WaitOnLock(locallock, owner);
 
 		TRACE_POSTGRESQL_LOCK_WAIT_DONE(locktag->locktag_field1,
@@ -1098,6 +1121,7 @@ SetupLockInTable(LockMethod lockMethodTable, PGPROC *proc,
 		MemSet(lock->requested, 0, sizeof(int) * MAX_LOCKMODES);
 		MemSet(lock->granted, 0, sizeof(int) * MAX_LOCKMODES);
 		LOCK_PRINT("LockAcquire: new", lock, lockmode);
+		lock->lastWaitingXid = InvalidTransactionId;
 	}
 	else
 	{
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 87ba67661a..f62909fda3 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -804,7 +804,7 @@ static const unit_conversion time_unit_conversion_table[] =
 /******** option records follow ********/
 
 static struct config_bool ConfigureNamesBool[] =
-{
+{	
 	{
 		{"enable_seqscan", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of sequential-scan plans."),
@@ -1705,6 +1705,17 @@ static struct config_bool ConfigureNamesBool[] =
 		NULL, NULL, NULL
 	},
 
+	{
+		{"xact_lock_chaining", PGC_SIGHUP, LOCK_MANAGEMENT,
+			gettext_noop("Minimize lock contention by chaining xact locks"),
+			NULL
+		},
+		&xact_lock_chaining,
+		true,
+		NULL, NULL, NULL
+	},
+
+	
 	/* End-of-list marker */
 	{
 		{NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL, NULL
diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h
index 777da71679..51ad120180 100644
--- a/src/include/storage/lock.h
+++ b/src/include/storage/lock.h
@@ -35,6 +35,7 @@ typedef struct PROC_QUEUE
 
 /* GUC variables */
 extern int	max_locks_per_xact;
+extern bool xact_lock_chaining;
 
 #ifdef LOCK_DEBUG
 extern int	Trace_lock_oidmin;
@@ -295,6 +296,7 @@ typedef struct LOCK
 	int			nRequested;		/* total of requested[] array */
 	int			granted[MAX_LOCKMODES]; /* counts of granted locks */
 	int			nGranted;		/* total of granted[] array */
+	TransactionId lastWaitingXid;
 } LOCK;
 
 #define LOCK_LOCKMETHOD(lock) ((LOCKMETHODID) (lock).tag.locktag_lockmethodid)
pgrw.ctext/x-csrc; name=pgrw.cDownload
#4Simon Riggs
simon@2ndquadrant.com
In reply to: Konstantin Knizhnik (#1)
Re: Contention preventing locking

On 15 February 2018 at 16:00, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

So in heap_acquire_tuplock all competing transactions are waiting for TID of
the updated version. When transaction which changed this tuple is committed,
one of the competitors will grant this lock and proceed, creating new
version of the tuple. Then all other competitors will be awaken and ... find
out that locked tuple is not the last version any more.
Then they will locate new version and try to lock it... The more competitors
we have, then more attempts they all have to perform (quadratic complexity).

What about the tuple lock? You are saying that is ineffective?

src/backend/access/heap/README.tuplock

My idea was that we can avoid such performance degradation if we somehow
queue competing transactions so that they will get control one-by-one,
without doing useless work.
First of all I tried to replace TID lock with PK (primary key) lock. Unlike
TID, PK of record is not changed during hot update. The second idea is that
instead immediate releasing lock after update we can hold it until the end
of transaction. And this optimization really provides improve of performance
- it corresponds to pg_f1_opt configuration at the attached diagram.
For some workloads it provides up to two times improvement comparing with
vanilla Postgres. But there are many problems with correct (non-prototype)
implementation of this approach:
handling different types of PK, including compound keys, PK updates,...

Try locking the root tid rather than the TID, that is at least unique
per page for a chain of tuples, just harder to locate.

--
Simon Riggs http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#5Konstantin Knizhnik
k.knizhnik@postgrespro.ru
In reply to: Simon Riggs (#4)
Re: Contention preventing locking

On 20.02.2018 14:26, Simon Riggs wrote:

On 15 February 2018 at 16:00, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

So in heap_acquire_tuplock all competing transactions are waiting for TID of
the updated version. When transaction which changed this tuple is committed,
one of the competitors will grant this lock and proceed, creating new
version of the tuple. Then all other competitors will be awaken and ... find
out that locked tuple is not the last version any more.
Then they will locate new version and try to lock it... The more competitors
we have, then more attempts they all have to perform (quadratic complexity).

What about the tuple lock? You are saying that is ineffective?

src/backend/access/heap/README.tuplock

In my last mail ni this thread I have mentioned that update of tuple
cause setting of three heavy weight locks:

1. Locking of SnapshotDirty.xmax transaction (XactLockTableWait) in
EvalPlanQualFetch
2. Tuple lock (heap_acquire_tuplock) in heap_tuple_update
3. Transaction lock (XactLockTableWait) in heap_tuple_update

So what I see in debugger and monitoring pg_locks, is that under high
contention there are a lot transactions waiting for SnapshotDirty.xmax.
This lock is obtained before tuple lock, so tuple lock can not help in
this case.

My idea was that we can avoid such performance degradation if we somehow
queue competing transactions so that they will get control one-by-one,
without doing useless work.
First of all I tried to replace TID lock with PK (primary key) lock. Unlike
TID, PK of record is not changed during hot update. The second idea is that
instead immediate releasing lock after update we can hold it until the end
of transaction. And this optimization really provides improve of performance
- it corresponds to pg_f1_opt configuration at the attached diagram.
For some workloads it provides up to two times improvement comparing with
vanilla Postgres. But there are many problems with correct (non-prototype)
implementation of this approach:
handling different types of PK, including compound keys, PK updates,...

Try locking the root tid rather than the TID, that is at least unique
per page for a chain of tuples, just harder to locate.

But locking primary key is more efficient, isn't it?
The problem with primary key is that it doesn't always exists or can be
compound, but if it exists and has integer type, then get be obtained
easily than root tid.
For pgrw benchmark primary key lock provides even better results than
transaction lock chaining:

https://docs.google.com/spreadsheets/d/1QOYfUehy8U3sdasMjGnPGQJY8JiRfZmlS64YRBM0YTo/edit?usp=sharing

But for YCSB benchmark xlock optimization is more efficient:

https://docs.google.com/spreadsheets/d/136BfsABXEbzrleZHYoli7XAyDFUAxAXZDHl5EvJR_0Q/edit?usp=sharing

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

#6Simon Riggs
simon@2ndquadrant.com
In reply to: Konstantin Knizhnik (#5)
Re: Contention preventing locking

On 20 February 2018 at 13:19, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 20.02.2018 14:26, Simon Riggs wrote:

On 15 February 2018 at 16:00, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

So in heap_acquire_tuplock all competing transactions are waiting for TID
of
the updated version. When transaction which changed this tuple is
committed,
one of the competitors will grant this lock and proceed, creating new
version of the tuple. Then all other competitors will be awaken and ...
find
out that locked tuple is not the last version any more.
Then they will locate new version and try to lock it... The more
competitors
we have, then more attempts they all have to perform (quadratic
complexity).

What about the tuple lock? You are saying that is ineffective?

src/backend/access/heap/README.tuplock

In my last mail ni this thread I have mentioned that update of tuple cause
setting of three heavy weight locks:

1. Locking of SnapshotDirty.xmax transaction (XactLockTableWait) in
EvalPlanQualFetch
2. Tuple lock (heap_acquire_tuplock) in heap_tuple_update
3. Transaction lock (XactLockTableWait) in heap_tuple_update

So what I see in debugger and monitoring pg_locks, is that under high
contention there are a lot transactions waiting for SnapshotDirty.xmax.
This lock is obtained before tuple lock, so tuple lock can not help in this
case.

Hmm, that situation occurs erroneously, as I previously observed
/messages/by-id/CANP8+jKoMAyXvMO2hUqFzHX8fYSFc82q9MEse2zAEOC8vxwDfA@mail.gmail.com

So if you apply the patch on the thread above, does performance improve?

--
Simon Riggs http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#7Konstantin Knizhnik
k.knizhnik@postgrespro.ru
In reply to: Simon Riggs (#6)
Re: Contention preventing locking

On 20.02.2018 16:42, Simon Riggs wrote:

On 20 February 2018 at 13:19, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 20.02.2018 14:26, Simon Riggs wrote:

On 15 February 2018 at 16:00, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

So in heap_acquire_tuplock all competing transactions are waiting for TID
of
the updated version. When transaction which changed this tuple is
committed,
one of the competitors will grant this lock and proceed, creating new
version of the tuple. Then all other competitors will be awaken and ...
find
out that locked tuple is not the last version any more.
Then they will locate new version and try to lock it... The more
competitors
we have, then more attempts they all have to perform (quadratic
complexity).

What about the tuple lock? You are saying that is ineffective?

src/backend/access/heap/README.tuplock

In my last mail ni this thread I have mentioned that update of tuple cause
setting of three heavy weight locks:

1. Locking of SnapshotDirty.xmax transaction (XactLockTableWait) in
EvalPlanQualFetch
2. Tuple lock (heap_acquire_tuplock) in heap_tuple_update
3. Transaction lock (XactLockTableWait) in heap_tuple_update

So what I see in debugger and monitoring pg_locks, is that under high
contention there are a lot transactions waiting for SnapshotDirty.xmax.
This lock is obtained before tuple lock, so tuple lock can not help in this
case.

Hmm, that situation occurs erroneously, as I previously observed
/messages/by-id/CANP8+jKoMAyXvMO2hUqFzHX8fYSFc82q9MEse2zAEOC8vxwDfA@mail.gmail.com

So if you apply the patch on the thread above, does performance improve?

First of all this patch is not correct: it cause pin/unpin buffer
disbalance and I get a lot of errors:

Update failed: ERROR:  buffer 343 is not owned by resource owner Portal

When I slightly modify it by moving ReleaseBuffer(buffer) inside switch
I get almost the same performance as Vanilla.
And when I combined it with pklock patch, then I get similar performance
with vanilla+pklock, but with much larger dips:

https://docs.google.com/spreadsheets/d/1QOYfUehy8U3sdasMjGnPGQJY8JiRfZmlS64YRBM0YTo/edit?usp=sharing

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

#8Konstantin Knizhnik
k.knizhnik@postgrespro.ru
In reply to: Simon Riggs (#4)
Re: Contention preventing locking

On 20.02.2018 14:26, Simon Riggs wrote:

Try locking the root tid rather than the TID, that is at least unique
per page for a chain of tuples, just harder to locate.

As far as I understand, it is necessary to traverse the whole page to
locate root tuple, isn't it?
If so, then I expect it to be too expensive operation. Scanning the
whole page on tuple update seems to be not an acceptable solution.

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

#9Simon Riggs
simon@2ndquadrant.com
In reply to: Konstantin Knizhnik (#8)
Re: Contention preventing locking

On 20 February 2018 at 16:07, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 20.02.2018 14:26, Simon Riggs wrote:

Try locking the root tid rather than the TID, that is at least unique
per page for a chain of tuples, just harder to locate.

As far as I understand, it is necessary to traverse the whole page to locate
root tuple, isn't it?
If so, then I expect it to be too expensive operation. Scanning the whole
page on tuple update seems to be not an acceptable solution.

Probably.

It occurs to me that you can lock the root tid in index_fetch_heap().
I hear other DBMS lock via the index.

However, anything you do with tuple locking could interact badly with
heap_update and the various lock modes, so be careful.

You also have contention for heap_page_prune_opt() and with SELECTs to
consider, so I think you need to look at both page and tuple locking.

--
Simon Riggs http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#10Konstantin Knizhnik
k.knizhnik@postgrespro.ru
In reply to: Simon Riggs (#9)
Re: Contention preventing locking

On 20.02.2018 19:39, Simon Riggs wrote:

On 20 February 2018 at 16:07, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 20.02.2018 14:26, Simon Riggs wrote:

Try locking the root tid rather than the TID, that is at least unique
per page for a chain of tuples, just harder to locate.

As far as I understand, it is necessary to traverse the whole page to locate
root tuple, isn't it?
If so, then I expect it to be too expensive operation. Scanning the whole
page on tuple update seems to be not an acceptable solution.

Probably.

It occurs to me that you can lock the root tid in index_fetch_heap().
I hear other DBMS lock via the index.

However, anything you do with tuple locking could interact badly with
heap_update and the various lock modes, so be careful.

You also have contention for heap_page_prune_opt() and with SELECTs to
consider, so I think you need to look at both page and tuple locking.

So, if I correctly understand the primary goal of setting tuple lock in
heapam.c is to avoid contention caused
by concurrent release of all waiters.
But my transaction lock chaining patch eliminates this problem in other way.
So what about combining your patch (do not lock Snapshot.xmax) + with my
xlock patch and ... completely eliminate tuple lock in heapam?
In this case update of tuple will require obtaining just one heavy
weight lock.

I made such experiment and didn't find any synchronization problems with
my pgrw test.
Performance is almost the same as with vanilla+xlock patch:

https://docs.google.com/spreadsheets/d/1QOYfUehy8U3sdasMjGnPGQJY8JiRfZmlS64YRBM0YTo/edit?usp=sharing

I wonder why instead of chaining transaction locks (which can be done
quite easily) approach with extra tuple lock was chosen?
May be I missed something?

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

#11Amit Kapila
amit.kapila16@gmail.com
In reply to: Konstantin Knizhnik (#1)
Re: Contention preventing locking

On Thu, Feb 15, 2018 at 9:30 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

Hi,

PostgreSQL performance degrades signficantly in case of high contention.
You can look at the attached YCSB results (ycsb-zipf-pool.png) to estimate
the level of this degradation.

Postgres is acquiring two kind of heavy weight locks during update: it locks
TID of the updated tuple and XID of transaction created this version.
In debugger I see the following picture: if several transactions are trying
to update the same record, then first of all they compete for
SnapshotDirty.xmax transaction lock in EvalPlanQualFetch.
Then in heap_tuple_update they are trying to lock TID of the updated tuple:
heap_acquire_tuplock in heapam.c

There is no function named heap_tuple_update. Do you mean to say heap_update?

After that transactions wait completion of the transaction updated the
tuple: XactLockTableWait in heapam.c

So in heap_acquire_tuplock all competing transactions are waiting for TID of
the updated version. When transaction which changed this tuple is committed,
one of the competitors will grant this lock and proceed, creating new
version of the tuple. Then all other competitors will be awaken and ... find
out that locked tuple is not the last version any more.
Then they will locate new version and try to lock it... The more competitors
we have, then more attempts they all have to perform (quadratic complexity).

The attempts are controlled by marking the tuple as locked by me after
waiting on SnapshotDirty.xmax. So, the backend which marks the tuple
as locked must get the tuple to update and I think it is ensured in
code that only one backend will be allowed to do so. I can see some
serialization in this logic, but I think we should first try to get
the theory behind the contention problem you are seeing before trying
to find the solution for it.

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

#12Amit Kapila
amit.kapila16@gmail.com
In reply to: Konstantin Knizhnik (#10)
Re: Contention preventing locking

On Tue, Feb 20, 2018 at 10:34 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 20.02.2018 19:39, Simon Riggs wrote:

On 20 February 2018 at 16:07, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 20.02.2018 14:26, Simon Riggs wrote:

Try locking the root tid rather than the TID, that is at least unique
per page for a chain of tuples, just harder to locate.

As far as I understand, it is necessary to traverse the whole page to
locate
root tuple, isn't it?
If so, then I expect it to be too expensive operation. Scanning the whole
page on tuple update seems to be not an acceptable solution.

Probably.

It occurs to me that you can lock the root tid in index_fetch_heap().
I hear other DBMS lock via the index.

However, anything you do with tuple locking could interact badly with
heap_update and the various lock modes, so be careful.

You also have contention for heap_page_prune_opt() and with SELECTs to
consider, so I think you need to look at both page and tuple locking.

So, if I correctly understand the primary goal of setting tuple lock in
heapam.c is to avoid contention caused
by concurrent release of all waiters.
But my transaction lock chaining patch eliminates this problem in other way.
So what about combining your patch (do not lock Snapshot.xmax) + with my
xlock patch and ... completely eliminate tuple lock in heapam?
In this case update of tuple will require obtaining just one heavy weight
lock.

I made such experiment and didn't find any synchronization problems with my
pgrw test.
Performance is almost the same as with vanilla+xlock patch:

https://docs.google.com/spreadsheets/d/1QOYfUehy8U3sdasMjGnPGQJY8JiRfZmlS64YRBM0YTo/edit?usp=sharing

I wonder why instead of chaining transaction locks (which can be done quite
easily) approach with extra tuple lock was chosen?

Can you please explain, how it can be done easily without extra tuple
locks? I have tried to read your patch but due to lack of comments,
it is not clear what you are trying to achieve. As far as I can see
you are changing the locktag passed to LockAcquireExtended by the
first waiter for the transaction. How will it achieve the serial
waiting protocol (queue the waiters for tuple) for a particular tuple
being updated?

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

#13Konstantin Knizhnik
k.knizhnik@postgrespro.ru
In reply to: Amit Kapila (#11)
Re: Contention preventing locking

On 26.02.2018 17:00, Amit Kapila wrote:

On Thu, Feb 15, 2018 at 9:30 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

Hi,

PostgreSQL performance degrades signficantly in case of high contention.
You can look at the attached YCSB results (ycsb-zipf-pool.png) to estimate
the level of this degradation.

Postgres is acquiring two kind of heavy weight locks during update: it locks
TID of the updated tuple and XID of transaction created this version.
In debugger I see the following picture: if several transactions are trying
to update the same record, then first of all they compete for
SnapshotDirty.xmax transaction lock in EvalPlanQualFetch.
Then in heap_tuple_update they are trying to lock TID of the updated tuple:
heap_acquire_tuplock in heapam.c

There is no function named heap_tuple_update. Do you mean to say heap_update?

Yes, sorry. I mean heap_update.

After that transactions wait completion of the transaction updated the
tuple: XactLockTableWait in heapam.c

So in heap_acquire_tuplock all competing transactions are waiting for TID of
the updated version. When transaction which changed this tuple is committed,
one of the competitors will grant this lock and proceed, creating new
version of the tuple. Then all other competitors will be awaken and ... find
out that locked tuple is not the last version any more.
Then they will locate new version and try to lock it... The more competitors
we have, then more attempts they all have to perform (quadratic complexity).

The attempts are controlled by marking the tuple as locked by me after
waiting on SnapshotDirty.xmax. So, the backend which marks the tuple
as locked must get the tuple to update and I think it is ensured in
code that only one backend will be allowed to do so. I can see some
serialization in this logic, but I think we should first try to get
the theory behind the contention problem you are seeing before trying
to find the solution for it.

Sorry, I could not say, that I completely understand logic of locking
updated tuples in Postgres, although  I have spent some time inspecting
this code.
It seems to be strange and quite inefficient to me that updating one
tuple requires obtaining three heavy-weight locks.
Did you read this thread:

/messages/by-id/CANP8+jKoMAyXvMO2hUqFzHX8fYSFc82q9MEse2zAEOC8vxwDfA@mail.gmail.com

In any, the summary of all my last experiments with locking is the
following:

1. My proposal with transaction lock chaining can reduce performance
degradation with increasing number of competing transactions.
But degradation still takes place. Moreover, my recent experiments shows
that lock chaining can cause deadlocks. It seems to me that I know the
reason of such deadlocks,
but right now have no idea how to fix them.
2.  Replacing tuple TID locks with tuple PK lock has positive effect
only if lock is hold until end of transaction. Certainly we can not lock
all updated tuples (it will cause lock hash overflow).
But we can keep until end of transaction just some small number of tuple
locks. Unfortunately it is not the only problem with this solution: it
is relatively simple to implement in case of integer primary key, but
handling all kind of PKs, including compound keys requires more efforts.
Also there can be no PK at all...
3. Alternative to PK lock is root tuple lock (head of  hot update
chain). Unfortunately there is no efficient way (at least I do not know
one) of locating root tuple.
Scanning the whole page seems to be too inefficient. If we perform index
scan, than we actually start with root tuple, so it is possible to
somehow propagate it.
But it doesn't work in case of heap scan. And I suspect that as in case
of PK lock, it can increase performance only of lock is hold until end
of transaction.

So the problem with lock contention really exist. It can be quite easily
reproduced at the computer with large number of core with either pgbench
with zipf distribution,
either with YCSB benchmark, either with my pgrw benchmark... But how to
fix it is unclear.

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

#14Konstantin Knizhnik
k.knizhnik@postgrespro.ru
In reply to: Amit Kapila (#12)
Re: Contention preventing locking

On 26.02.2018 17:20, Amit Kapila wrote:

On Tue, Feb 20, 2018 at 10:34 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 20.02.2018 19:39, Simon Riggs wrote:

On 20 February 2018 at 16:07, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 20.02.2018 14:26, Simon Riggs wrote:

Try locking the root tid rather than the TID, that is at least unique
per page for a chain of tuples, just harder to locate.

As far as I understand, it is necessary to traverse the whole page to
locate
root tuple, isn't it?
If so, then I expect it to be too expensive operation. Scanning the whole
page on tuple update seems to be not an acceptable solution.

Probably.

It occurs to me that you can lock the root tid in index_fetch_heap().
I hear other DBMS lock via the index.

However, anything you do with tuple locking could interact badly with
heap_update and the various lock modes, so be careful.

You also have contention for heap_page_prune_opt() and with SELECTs to
consider, so I think you need to look at both page and tuple locking.

So, if I correctly understand the primary goal of setting tuple lock in
heapam.c is to avoid contention caused
by concurrent release of all waiters.
But my transaction lock chaining patch eliminates this problem in other way.
So what about combining your patch (do not lock Snapshot.xmax) + with my
xlock patch and ... completely eliminate tuple lock in heapam?
In this case update of tuple will require obtaining just one heavy weight
lock.

I made such experiment and didn't find any synchronization problems with my
pgrw test.
Performance is almost the same as with vanilla+xlock patch:

https://docs.google.com/spreadsheets/d/1QOYfUehy8U3sdasMjGnPGQJY8JiRfZmlS64YRBM0YTo/edit?usp=sharing

I wonder why instead of chaining transaction locks (which can be done quite
easily) approach with extra tuple lock was chosen?

Can you please explain, how it can be done easily without extra tuple
locks? I have tried to read your patch but due to lack of comments,
it is not clear what you are trying to achieve. As far as I can see
you are changing the locktag passed to LockAcquireExtended by the
first waiter for the transaction. How will it achieve the serial
waiting protocol (queue the waiters for tuple) for a particular tuple
being updated?

The idea of transaction lock chaining was very simple. I have explained
it in the first main in this thread.
Assumed that transaction T1 has updated tuple R1.
Transaction T2 also tries to update this tuple and so waits for T1 XID.
If then yet another transaction T3 also tries to update R1, then it
should wait for T2, not for T1.
In this case commit of transaction T1 will awake just one transaction
and not all other transaction pretending to update this tuple.
So there will be no races between multiple transactions which consume a
lot of system resources.

Unfortunately the way i have implemented this idea: release lock of the
original XID and tries to obtain lock of the XID of last waiting
transaction can lead to deadlock.

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

#15Amit Kapila
amit.kapila16@gmail.com
In reply to: Konstantin Knizhnik (#14)
Re: Contention preventing locking

On Mon, Feb 26, 2018 at 8:26 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 26.02.2018 17:20, Amit Kapila wrote:

Can you please explain, how it can be done easily without extra tuple
locks? I have tried to read your patch but due to lack of comments,
it is not clear what you are trying to achieve. As far as I can see
you are changing the locktag passed to LockAcquireExtended by the
first waiter for the transaction. How will it achieve the serial
waiting protocol (queue the waiters for tuple) for a particular tuple
being updated?

The idea of transaction lock chaining was very simple. I have explained it
in the first main in this thread.
Assumed that transaction T1 has updated tuple R1.
Transaction T2 also tries to update this tuple and so waits for T1 XID.
If then yet another transaction T3 also tries to update R1, then it should
wait for T2, not for T1.

Isn't this exactly we try to do via tuple locks
(heap_acquire_tuplock)? Currently, T2 before waiting for T1 will
acquire tuple lock on R1 and T3 will wait on T2 (not on T-1) to
release the tuple lock on R-1 and similarly, the other waiters should
form a queue and will be waked one-by-one. After this as soon T2 is
waked up, it will release the lock on tuple and will try to fetch the
updated tuple. Now, releasing the lock on tuple by T-2 will allow T-3
to also proceed and as T-3 was supposed to wait on T-1 (according to
tuple satisfies API), it will immediately be released and it will also
try to do the same work as is done by T-2. One of those will succeed
and other have to re-fetch the updated-tuple again.

I think in this whole process backends may need to wait multiple times
either on tuple lock or xact lock. It seems the reason for these
waits is that we immediately release the tuple lock (acquired by
heap_acquire_tuplock) once the transaction on which we were waiting is
finished. AFAICU, the reason for releasing the tuple lock immediately
instead of at end of the transaction is that we don't want to
accumulate too many locks as that can lead to the unbounded use of
shared memory. How about if we release the tuple lock at end of the
transaction unless the transaction acquires more than a certain
threshold (say 10 or 50) of such locks in which case we will fall back
to current strategy?

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

#16Konstantin Knizhnik
k.knizhnik@postgrespro.ru
In reply to: Amit Kapila (#15)
Re: Contention preventing locking

On 28.02.2018 16:32, Amit Kapila wrote:

On Mon, Feb 26, 2018 at 8:26 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 26.02.2018 17:20, Amit Kapila wrote:

Can you please explain, how it can be done easily without extra tuple
locks? I have tried to read your patch but due to lack of comments,
it is not clear what you are trying to achieve. As far as I can see
you are changing the locktag passed to LockAcquireExtended by the
first waiter for the transaction. How will it achieve the serial
waiting protocol (queue the waiters for tuple) for a particular tuple
being updated?

The idea of transaction lock chaining was very simple. I have explained it
in the first main in this thread.
Assumed that transaction T1 has updated tuple R1.
Transaction T2 also tries to update this tuple and so waits for T1 XID.
If then yet another transaction T3 also tries to update R1, then it should
wait for T2, not for T1.

Isn't this exactly we try to do via tuple locks
(heap_acquire_tuplock)? Currently, T2 before waiting for T1 will
acquire tuple lock on R1 and T3 will wait on T2 (not on T-1) to
release the tuple lock on R-1 and similarly, the other waiters should
form a queue and will be waked one-by-one. After this as soon T2 is
waked up, it will release the lock on tuple and will try to fetch the
updated tuple. Now, releasing the lock on tuple by T-2 will allow T-3
to also proceed and as T-3 was supposed to wait on T-1 (according to
tuple satisfies API), it will immediately be released and it will also
try to do the same work as is done by T-2. One of those will succeed
and other have to re-fetch the updated-tuple again.

Yes, but two notices:
1. Tuple lock is used inside heap_* functions. But not in
EvalPlanQualFetch where transaction lock is also used.
2. Tuple lock is hold until the end of update, not until commit of the
transaction. So other transaction can receive conrol before this
transaction is completed. And contention still takes place.
Contention is reduced and performance is increased only if locks (either
tuple lock, either xid lock) are hold until the end of transaction. 
Unfortunately it may lead to deadlock.

My last attempt to reduce contention was to replace shared lock with
exclusive in XactLockTableWait and removing unlock from this function.
So only one transaction can get xact lock and will will hold it until
the end of transaction. Also tuple lock seems to be not needed in this
case. It shows better performance on pgrw test but on YCSB benchmark
with workload A (50% of updates) performance was even worser than with
vanilla postgres. But was is wost of all - there are deadlocks in
pgbench tests.

I think in this whole process backends may need to wait multiple times
either on tuple lock or xact lock. It seems the reason for these
waits is that we immediately release the tuple lock (acquired by
heap_acquire_tuplock) once the transaction on which we were waiting is
finished. AFAICU, the reason for releasing the tuple lock immediately
instead of at end of the transaction is that we don't want to
accumulate too many locks as that can lead to the unbounded use of
shared memory. How about if we release the tuple lock at end of the
transaction unless the transaction acquires more than a certain
threshold (say 10 or 50) of such locks in which case we will fall back
to current strategy?

Certainly, I have tested such version. Unfortunately it doesn't help.
Tuple lock is using tuple TID. But once transaction has made the update,
new version of tuple will be produced with different TID and all new
transactions will see this version, so them will not notice this lock at
all. This is why my first attempt to address content was to replace TID
lock with PK (primary key) lock. And it really helps to reduce
contention and degradation of performance with increasing number of
connections. But it is not so easy to correctly extract Pk in all cases.

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

#17Amit Kapila
amit.kapila16@gmail.com
In reply to: Konstantin Knizhnik (#16)
Re: Contention preventing locking

On Thu, Mar 1, 2018 at 1:22 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 28.02.2018 16:32, Amit Kapila wrote:

On Mon, Feb 26, 2018 at 8:26 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

Yes, but two notices:
1. Tuple lock is used inside heap_* functions. But not in EvalPlanQualFetch
where transaction lock is also used.
2. Tuple lock is hold until the end of update, not until commit of the
transaction. So other transaction can receive conrol before this transaction
is completed. And contention still takes place.
Contention is reduced and performance is increased only if locks (either
tuple lock, either xid lock) are hold until the end of transaction.
Unfortunately it may lead to deadlock.

My last attempt to reduce contention was to replace shared lock with
exclusive in XactLockTableWait and removing unlock from this function. So
only one transaction can get xact lock and will will hold it until the end
of transaction. Also tuple lock seems to be not needed in this case. It
shows better performance on pgrw test but on YCSB benchmark with workload A
(50% of updates) performance was even worser than with vanilla postgres. But
was is wost of all - there are deadlocks in pgbench tests.

I think in this whole process backends may need to wait multiple times
either on tuple lock or xact lock. It seems the reason for these
waits is that we immediately release the tuple lock (acquired by
heap_acquire_tuplock) once the transaction on which we were waiting is
finished. AFAICU, the reason for releasing the tuple lock immediately
instead of at end of the transaction is that we don't want to
accumulate too many locks as that can lead to the unbounded use of
shared memory. How about if we release the tuple lock at end of the
transaction unless the transaction acquires more than a certain
threshold (say 10 or 50) of such locks in which case we will fall back
to current strategy?

Certainly, I have tested such version. Unfortunately it doesn't help. Tuple
lock is using tuple TID. But once transaction has made the update, new
version of tuple will be produced with different TID and all new
transactions will see this version, so them will not notice this lock at
all.

Sure, but out of all new transaction again the only one transaction
will allow to update it and among new waiters, only one should get
access to it. The situation should be better than when all the
waiters attempt to lock and update the tuple with same CTID.

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

#18Konstantin Knizhnik
k.knizhnik@postgrespro.ru
In reply to: Amit Kapila (#17)
Re: Contention preventing locking

On 03.03.2018 16:44, Amit Kapila wrote:

On Thu, Mar 1, 2018 at 1:22 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 28.02.2018 16:32, Amit Kapila wrote:

On Mon, Feb 26, 2018 at 8:26 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

Yes, but two notices:
1. Tuple lock is used inside heap_* functions. But not in EvalPlanQualFetch
where transaction lock is also used.
2. Tuple lock is hold until the end of update, not until commit of the
transaction. So other transaction can receive conrol before this transaction
is completed. And contention still takes place.
Contention is reduced and performance is increased only if locks (either
tuple lock, either xid lock) are hold until the end of transaction.
Unfortunately it may lead to deadlock.

My last attempt to reduce contention was to replace shared lock with
exclusive in XactLockTableWait and removing unlock from this function. So
only one transaction can get xact lock and will will hold it until the end
of transaction. Also tuple lock seems to be not needed in this case. It
shows better performance on pgrw test but on YCSB benchmark with workload A
(50% of updates) performance was even worser than with vanilla postgres. But
was is wost of all - there are deadlocks in pgbench tests.

I think in this whole process backends may need to wait multiple times
either on tuple lock or xact lock. It seems the reason for these
waits is that we immediately release the tuple lock (acquired by
heap_acquire_tuplock) once the transaction on which we were waiting is
finished. AFAICU, the reason for releasing the tuple lock immediately
instead of at end of the transaction is that we don't want to
accumulate too many locks as that can lead to the unbounded use of
shared memory. How about if we release the tuple lock at end of the
transaction unless the transaction acquires more than a certain
threshold (say 10 or 50) of such locks in which case we will fall back
to current strategy?

Certainly, I have tested such version. Unfortunately it doesn't help. Tuple
lock is using tuple TID. But once transaction has made the update, new
version of tuple will be produced with different TID and all new
transactions will see this version, so them will not notice this lock at
all.

Sure, but out of all new transaction again the only one transaction
will allow to update it and among new waiters, only one should get
access to it. The situation should be better than when all the
waiters attempt to lock and update the tuple with same CTID.

I do not argue against necessity of tuple lock.
It certainly helps to reduce contention... But still is not able to
completely eliminate the problem (prevent significant performance
degradation with increasing number of competing transactions). Better
results can be achieved with:
a) Replacing TID lock with PK lock and holding this lock till the end of
transaction
b) Chaining xact locks.

I failed to make second approach work, it still suffers from deadlocks.
I wonder if approach with PK locks can be considered as perspective?
Should I spent some more time to make it more reliable (support
different PK types, handle cases of non-hot updates and tables without
PK,,...)?
Or it is dead-end solution in any case?
Another idea suggested by Simon is to lock root tuple (head of hot
update chain). But there is no efficient way to locate this root in
Postgres.

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

#19Amit Kapila
amit.kapila16@gmail.com
In reply to: Konstantin Knizhnik (#18)
Re: Contention preventing locking

On Mon, Mar 5, 2018 at 1:26 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 03.03.2018 16:44, Amit Kapila wrote:

On Thu, Mar 1, 2018 at 1:22 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

On 28.02.2018 16:32, Amit Kapila wrote:

On Mon, Feb 26, 2018 at 8:26 PM, Konstantin Knizhnik
<k.knizhnik@postgrespro.ru> wrote:

Yes, but two notices:
1. Tuple lock is used inside heap_* functions. But not in
EvalPlanQualFetch
where transaction lock is also used.
2. Tuple lock is hold until the end of update, not until commit of the
transaction. So other transaction can receive conrol before this
transaction
is completed. And contention still takes place.
Contention is reduced and performance is increased only if locks (either
tuple lock, either xid lock) are hold until the end of transaction.
Unfortunately it may lead to deadlock.

My last attempt to reduce contention was to replace shared lock with
exclusive in XactLockTableWait and removing unlock from this function. So
only one transaction can get xact lock and will will hold it until the
end
of transaction. Also tuple lock seems to be not needed in this case. It
shows better performance on pgrw test but on YCSB benchmark with workload
A
(50% of updates) performance was even worser than with vanilla postgres.
But
was is wost of all - there are deadlocks in pgbench tests.

I think in this whole process backends may need to wait multiple times
either on tuple lock or xact lock. It seems the reason for these
waits is that we immediately release the tuple lock (acquired by
heap_acquire_tuplock) once the transaction on which we were waiting is
finished. AFAICU, the reason for releasing the tuple lock immediately
instead of at end of the transaction is that we don't want to
accumulate too many locks as that can lead to the unbounded use of
shared memory. How about if we release the tuple lock at end of the
transaction unless the transaction acquires more than a certain
threshold (say 10 or 50) of such locks in which case we will fall back
to current strategy?

Certainly, I have tested such version. Unfortunately it doesn't help.
Tuple
lock is using tuple TID. But once transaction has made the update, new
version of tuple will be produced with different TID and all new
transactions will see this version, so them will not notice this lock at
all.

Sure, but out of all new transaction again the only one transaction
will allow to update it and among new waiters, only one should get
access to it. The situation should be better than when all the
waiters attempt to lock and update the tuple with same CTID.

I do not argue against necessity of tuple lock.
It certainly helps to reduce contention... But still is not able to
completely eliminate the problem (prevent significant performance
degradation with increasing number of competing transactions).

Yeah, that is what I thought should happen. I think if we have that
kind of solution, it will perform much better with zheap [1]/messages/by-id/CAA4eK1+YtM5vxzSM2NZm+pC37MCwyvtkmJrO_yRBQeZDp9Wa2w@mail.gmail.com where
TIDs won't change in many of the cases.

Better
results can be achieved with:
a) Replacing TID lock with PK lock and holding this lock till the end of
transaction
b) Chaining xact locks.

I failed to make second approach work, it still suffers from deadlocks.
I wonder if approach with PK locks can be considered as perspective?
Should I spent some more time to make it more reliable (support different PK
types, handle cases of non-hot updates and tables without PK,,...)?
Or it is dead-end solution in any case?

I don't know, maybe you can try to completely sketch out the solution
and see how much impact it has. If it can be done with the reasonable
effort, then maybe it is worth pursuing.

[1]: /messages/by-id/CAA4eK1+YtM5vxzSM2NZm+pC37MCwyvtkmJrO_yRBQeZDp9Wa2w@mail.gmail.com

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com