��"�3^��0�#��d�E=Ր�$��&V��A�м��R�VI��-f�N��`7j�O�QeQ˫jU:�gV�$�Ֆ_�QeQ˫ʩ哮��wƬ�P�%�;[��BU��RRj�E�*��KU��T
+���$�О�%�у̧����~_�?���7;U$��~�
+~=�罫}��x����,�+�Ӟ�
+�L�#�2j9�{ұP5$���<���3�r�e
+B��/WR
+�'h�J��C�T�P_nL�UP�}���B�z�3>�&j��n��N�U�kP�CX*�|�JЙ�#hGV���F�2�bVb��SŎ:�$���t,v�ѱ�����W�`X�R`y؇ڙ��������U�����R�C��eɪ�|d�>N[B�PuR�ò����-�G�S�X$݄}�P˨N vN���e�3���E���#�ݱ�;�:�=d�7*�S=�v��َ�)���w�� {�.�J���ѷ`_�睟�w�д�y��W��=�؝�p&K9Wp/�G����p����.\�p�.����2���k�Fpm�����9�I� rɅ�Z�0�¥g��~B�K�]x�����E.��jF�?��>�I�}W}���Y�K�He�|���=i���
+�bwXE"�~�d��v�Z�D��6=< �[8�Ӊ+�h>`�ʑ�N|��V�E�pֳ��K
+�:�#F����2�]jh ��A�q����^�3-q�!��7g�����Ot�>��7�`v|���[ �җ�/�
+�/|�_ld~��БHe�2����"zM���Q.r��Y�RI�>�s���6x�EN9rxL(�L}�P�#��_Lawy�<�l��ȅ�0�i���K�0�2����r�9�/���:���ʰ~�q�'/p�r�\'[����J թD��l�p�{��Z�T&O�'�A�"���+�d
+�x�9��I�=v*�UV&�,;�<���k���W�+˔+d��7s+�d�e���2�|Y �q5�Rz/ʂeeX/d���U�K�P1��Hݑ�_�PzCvB�9*�� �,��RB:/]����Mʦ�zU&5K� '��2=2��~��Li��ty
+2�S�Xi��RM�JdN�e����Z�M�5��*��H>����8���)���UN%}�L^A�s�?��'��+�p1zL���4 �.qX��Lֿi}�<7�9�b����a��b��94^�;.viN|�%��&g ��\5wѩL�Gz�ۥy\YWJ��M��\2w©�VR�m&X�f W�bΗ�%����^c��
+WJ��$'��C��>��R��*���of�<�,r�b��;���}b�������>�r~f�!l��Ͱ������pN���yud��S����yq!�/��:Ҙq��4��#��f�_̘�kx�1�SD�"Ny~��i�3�P�Է%�V���)\#�b,�����Bf���v����e��3����n����I�g-]h9Z/+GeX;T�Mc�ǿq���o@�e��c#�����#��u�u�;�՟Y��Y��g�
+�)�)�������I�pN<��zv7i]%�␠����2������"��k��e�=�H*~/�|�2�DH��v�n�T^�������D�~�dv����Ԟ��T$��y!�I�.��O���ﮦT��O��I#B���c?q�O�+��e���LDdvOvW��z�5�=�p#{���l���ن��ZSeWF1-��d۲�ٍ���MЫ�~�ͷa_�0�sҖ�V�z���}f��z�d�}����؈��.�}�c��<��W�Af�4�DpO�{�����k���
+.<�>a�}���^��s~���M�J�>�;l,��X=���ޒ>yHu�>����|�Ǟz��$����~'��=�{�I�2���ٯ�v���p'Jwrg^�T�/��߿�s��'K�}nKh��Wo{����ư���'}���:�WԷ�I_��ǞC�:x�W�f}[X���Q\Y��wV� h�ǜ`~�}����]���e;?���x��ߗ���'�[���w�o�.32s[�-�:ĺ����[���b\��Z��t5��Mz>=ɬ�����G�Q�.��čʑ�B�t��u0+{ �b�ŧY�l\دR�h���g���y�k�No��>��d�7�V�w�7}���w�����L&��1�D��H�{z��wn���kk��*�����2�����L���|o
+���$�~�8�
+گ�y�Uf�5dr�d��L�2y�2���)p����ݥ�Y
+�O��!�*��&U� Ro2�{n�'!��?�*\���R?r��jM�"7��5��r��XS��M����r�����J��~�T�گ�*[C��R�5���I�`�[~�kz�j�w���rkz�j�?]�7ت�R���9��~��ȯ��\s�W˽���8$9Q�j͑]-�5�v�\�Z�f
+�L�.)�A��%wh
+�֒S���Zr�W��O���}�!�g�
+������������쐱8I�g��N�לx��M��c��r��M%I��B�n
+�VԷ�BJBJ�X�8�![��I��n>wsOEҖ�-4wS�����~�
+��ݴ����i���o� ��c:�:���N�ٝ�{��1"}�9vj��1�gϼP������{��;{����+=����#�QZ�`
+A�=�iB�զ�M�M�����o�z��TB�v�����m~ns�8�W�Hh� g��x�O��i�g�N����D>�{� ��ٔ�����~m���@bMo?�������_{U��
+�WK���OL{.R��<�'hz�/y�z�������w_~u�#A��!�������ue�Zx��tRbZ��W��܀�'�&�n*@��3�8h�]M�t��k�c�p��zک]O;}5z�u�z�D�P�}��VʿZ�n'w�P��/ v <�d���[�Wh�^��?v{ꂕTnGY��W+6m�]��+����:��E�BO�~S֫jľ(qq� �ωM'�r�v�_Z闠צ_� @��~K �Q|�0ȗQ�"4)%�S"R�]���a|� "�T6���\�_��Ր�bG-�UB���E��R��]��6hm����S�o�N�L��|��K�_�W_�f�t���O�'��/xؗ����]C��H�毈��5�khq��{�����
+����G��DK��$���8N8�oy���>H�}$W<�ೖ�4u~��!u$�M~b�O����}���\6�O쿈����;���glO]y�_�~�SG��{穙g�h�!&��~��?�����z9ξ�)>�\?��/c�����7��6�o4o4���
+y*<��_������!�{�wa�̶�W�B�f�
+d7�e!!v��m�p�^��ֳRZ��_�_-�kxŲ�2��6^�x�/W�e#�������I.�UL0�Mx��l�o�R���=@y4x�fp�4�p{{�v��1������۶�mOܾk{*R4�B�ɢ�]b�p��q��6Z�ǩ_*��J���U� tѫzC����!�+T�Le^��p���E&�����%�n*M�s}^���6,�5��j���ް�R>塆ee��B�}·Mn,jQ.~�O�>�
+#�_�`>�g�Z?�~�a��|��y>smk+����[��W���"ے�e�R�+VeU���m=��}�'��B��+�;Ϋ�;.r�E�uu�Ӕz�x�(H�Wغi���?J){%DNS �uu�$�M�S}�o������&�5]���>{�}or�=�B����M��SEI5UC����BQ"5W�4"��z����^Yƨ�N��0�T�N:�����'�<:�r�E�r���yt&b�^?��q�܍�.:]p
+���'�SF�x���ݹ-�?/
+���)z�G)�?}P7�Q�+�������a�#�נ3z�Z��
+��o@:�r��y
+�t�f�r5�ӄ�`H[��'.�\'Z{�r�Z"��b�b�E�+�Eg��ȅp�\�����W�?+:i�!ݺ���Z�s-I�B*���x�Ϡ�� ��@e+%�����
+[StxN���3�yp7�� ��r(8k�(�X�Z�n��螄y���W.!Ѽ{�C
+{�M'���~�ޚ�;����"�$`Y��i#ن�L���I����wS\�S��-7=%qQ�1-�W9
+5M��N�B*���$U�R
+�*M���(|S���4����&Z� U*�U&؎P�BV�R{8C~k<��|E��*y>���6��R.{ɖ��{QH~ҫ2AI�G��p8��az���lV�4��+��`�7�m$�8�Ɠ@'!�L``4�r=c�:�'Ċ��*�3 E5�y�C(B�U�at���G������#� V��< _H'�����G�?�0CP��l�T�y�1S�<��i��x(�����t�ദ�v��,�S�4z�[�'�V���_�fx{�(�q�Wa��
+�K��J���m$�Utq�S�R^]q�vJ�����ȏ}���lOO\���H�i�)i��Cq۠$��I�Z�K"�K�'J���/�!M��-��V�Q���
+��T�2��w�'~�w��)�cE��?�Ua���0��T�)�����5��H�6N�.��rzJ$���u�;����n�@+z��?�G�z�+�]��օV��VۅVێVƩVWcЙ�
+�^��E�D�UX�8ʦ�n�0��k"n[�O$k�SD:�[�>��v�Z-�}�z���hۡX��,��~���a�]�y���8�N>�� �-H�l�P��q�J�
+��3�zE�^���C�t��r��t�L��Ec�ޚP��R�;*�D)�*��|4r}��i�"�hG.�Ae'yx>7��#��}<�d�1K��}R�ܮ��G������>�f?H�)c�٣��3�owۃ����'V�'PgS��?����`���(i��E�N8O�F(��xFV���غ%��?2��}����kgzf�,R�Bx}�>s��σ��#�/�a�y��|� ���A��Z��VX3��A|:�#�0�
+�RH�-���8�A_pR�Ye*�z�~
+,�@!E(f�qs�z(�L~'�9C!ᝲ�4�s(���O�S�L�s�ą'Xu,�'�~*ߦ�O��-��N3��*$�����4�բ�y-�(Z�̟����(E_&�1�{�8���za��~U��y�A��s�.<���3�vi��|�+�kG!��u�I_7� �>A%q��̷�$d3�e5�����0�R{�4Ν�|�+�#ȟ<T�ƵdxZJ�t��G�qB>��U��B͘4}����~�_��� ؋���g ��6���,����
+H��M�zpp�0 )�]�N!Ԏ��aP�fH��?�t�+��Up�ӑ{,��8�.���6�"R'T�Nĕ���)O~��
+zp8�m� �\�?a^
+�ʁn�2T�"�V��pB�'��o��vp���E�@j�t����a��Ƚ��Z�^��`�GOBc��kۡ��fh�K�^z<賐����d�E˺|��!u��NCH�HZ��h�t�A�V_��*z�z m�X�Q�W
+K��o �dp#�p�:��Q���J=N�e���4+�/�;��nz{�{����W�a�t�"乄�H7��M誆0K���8��F�w��^��LB�kA�E�i�S�#�4A�ǵ�8�ρ?�J�{���t��O�Uy�x�x��v�1��?�.!�z���p<8�����|��#�0ۓ�g��g�?��!r��T[{��P|��_�
+z��"��t�@���њ<��F�A��\�@7Eɫ�st+�|
+X�!O��D��o��vp���E�@j����3�>�?0��@xX#�>r׳������ @[�c�
+l�ZF�y�Q/�z���B
+[�.������ ����*����+�UF���"0FD`������!#QƠx�xB��
+=�7�$�P*XE���0)4��B�Q��@��җc�A�u=�x m�X�Q�W
+��h����,F�5��6�7��1ڇ)N=��z�=�B���0p:{aV�K(��t�ۄ�j��>�?�C�+ mz7���E�y�a�:�$��t]�:��#�4A�ǵ�8�ρ?�J�{���t��l����p<8�������A#��wHs*�#�F�PГ�[��Dx�Y�~��|̵䋠�=W9�M�{p.�n����w � � p2�Е���l'�\d�v�@�H����[ <����Y�{AF\p����1���C-
+#�<Ш�D��x�g!E+K�Ɉ�6u��B�F��!���h� ���9И��Á�J�/ƀ�v=q=��g,�(�+��lYB�%8��Y��k�A��u�mN�a�x�ؑ}��б�h�d��K�y+ڇ5�T�,~Bj��]n����X��^G6B�����)���Z憬������rG�P9i
+·��a+��O(���!W3
+i��;��+(�ў<�$�hJ�hm�����@z�a�t�.���@��i��ws.��k#����2�'��M�h��;��Ҿ��]֟@��zJ+�"���4�uX�8�Z�)�nK������G4� t�MC�
+�8��
+N�H�8K&�~��Um'ʶ����m������-J �:�%S�>Z����{�p(��v��)�0�\s��X?�s��-uXVZ�JE�D^3��Bv���]�������-e�@�K�s��
+h ���>�M����C��B� �.��#�vw�Ơ�w��)����s�������,��ӏ�ɤa�~D����XTZ |��? ���.�8��
+jJ�U��A'#�y[c�c�R�02�hY�GR�E륈�G��q�!V�H�$�|t~Z-=��u����$��tiб(s�}?��lD��=-8�(�HêW_�S^"w���$`��{?�AJ�8g�="��˹
+:!�F����"�RЕ�x���T~�n*�;�����<.؆\��Wݰ%W2����Cy jw)GBc^J�;�n�t�t��!����C�N ��h���ý\?���=7�6���z]���Օ�v�(���Yb��F���9#���4h��n��
+w-A?*��{�멏�G��Q��R>�(�����ޗ�-Գ�Q��kh�SL=Q��"���.�g1��K�N���8��+V�s���O�y�ֈ�2lGƁ^A�r"�C�{�v_W�?�W�'e��X�$�������z
+�zH�m����%�+�P�0{A�C�J#��(�8�&��S����i�Py/4O��;�!�h#ʖ��]6�ap/>w�Z�/U}��>�!t_!��rh'S��� =��Q��H�8J�
+��(�H��^hދ���G�_�hi��B�R��Z���Vކ�픩����aC�W,��D{�ٱ�n��I]a�tE�k�^�dpΑN���AK��l��m(�#bគ���6��NG���H�Oa��/��%�B '����)$j'�:�N�v\��z���KS��
+��oBf٥E�����,��H�?e��>hK�N��G�/�N_�*E(��� t�M�E�8�+J;�8���]Nؼ%����@��t �PXr48�p�F�ʰ�s� �%��H�~�Z5g�
+!K�pJ
+�N.�Q_/yQJ�]�PV��_ ��B���gK�[#���*��>�4�@o�am;q�� �j�e����N��^��X���r0�������具�'t������ �\�*�1���[�N}J9��ס^��=��ޗ�Z�$�*�m��0_-�^6#�xx��ۉ<���7e�cU��_)�l�~�h1�E��\@~OO�_������Q��s�Vsk���^B�Nȋ�}�n��ue���9E���4I�I�0Z碽�T���3z,Y�z1����O]��D��8�O��:�)�y�6Bmp?�������A�X�$ �>Bv�9[B���h6�h~�-��_;C����=�cv��n��Ω��I�'^��I�.�l�Beܿ��KD��-�/�#��N�1O�;�<g`��^y�T/`
+�G�u�tʖ������Q�3�R�z0��l��_��%u4Fe��n��C ]a�
+��9-B�$���G�;�S>շ!� JS�F�s�P�;�'��ȫ��D���{��_�rg��>��FI��ߏri�>!�m�qJ�N�qd1�(�#Z� �^�R�G�l
+���
+�C���s:�$&��B^9Nb���$`w���k��A�
+8y�"!�x��
+�:G3T���r,�@j���wbݰCR,�n��=�Uؘ�r�^!tǕh}4�A��P/B�T�}�U���?�l�\C��Ѹ�
+�o#Y����GF�wc}����ǀ��r]������D�6����`�[�g�}������9��$<���9���ڨ��as�Θ} �G���c�|��>g���û�p�Gl�ٛ�8
+b@�����b�z/γ�S����!8{p�f8����< �
+����J$ҩ9~�8��?�9��u�A���sA�� Խ�z
+���kq���94�M���|�&���&�/r�� �GI&��D�؇��T*~gx��'�P�(�i���;:����s���c�*�Л8�4=(�h){S���
+�$R[|�U�h�D
+��B ��q��q�i:�+�i�D�Ei���7@��N>�O�QU�/�B\J�#����jƦf�Zohc?�>e"�P�}-�!8p6��q��xБh�Ƚ9莰�w }x�y����^��\i8p1�s���z�P�#�����i�Ig)ڴ187��Xo;��DRz7Z�
+좐�y�������N�L��w]Q���^I�)t�}���a4�}Ղ�ҭֈ�
+�4}@FT�'8��j$���w��i��#:y�zD�;x���+���� }���h�N�X��=t�@�/ AL�Sѿ�x�FE��$u�[�t�[�H���Y��Ktƀ1�;:E�ju����pvJ�i^Au� �Q���<Ғ�Q����HEy��$o+���W�V��*�0!@Ԁ��A��eD7�o���T���qG99�ą�� e�*�hT��ow)��?&��6��rNa���+���hV%A8�>G:
+�Z��;���I3n:=���8l�a*3��u'��ȑԾ9T#��(L�g��h}�L�mg�1�[�y-�o'��b5��9o��N4a.�a�3�wH���d�N���B�G�-:�����VO����ˀUPNb-�Q��jSi�P�=�/\y@:����&9�ߢ��K�R�1�2L����t���o�����F�JeSH)L�xN9n˳��p������f[�K<�@���<���9˧��2q�5˞��i#(a*0&�Nu�r;p�}���>�&�H�ᙂ<����Y�;8ѝ��\��c�� Ų=-f�8��c7�#[�#5|����������b���Kg�U���h$̟G��D+a8�ZS�~N}A^g38��IX�NEj��S��5,M�7��f��93l�!��9�M�h����|��80ۤ��ʄ�~G?ĉN���(�-�����12B?�x�$ce.4��Q>:�ó�xv#s�<�3'��p�>��=�C���0�]o��v���8Y����L{6�(���}�|p�5����U��хj=
+�7�����m�Ǩ�fM��
+{�
+��.jDރ����m30.܆'��Z�^��n�ݺ��Ò�ض�=�'��I��g���և]c��Ӥ](�h���P�>6:��~���T���Y�J��${PYj
+ew���,�\�{X��Ȋ;�
++�|������`��=���rΥY9V��أ�2+�HtVD�U��g�YmV�=�/.3H����
+[�ro�T�Pz�����N�0X�Y�~�nI��v�8``�o��j�Á���9�,�a�)��>����������%�����+�}�}�����́��}
+H❁]���$`�J�
+�
+�\�4�G��
+��
+�߯gB~xxxx���W�ׁ��Y� ������P-̌�
+Q�RZ�|YeI��2�+��l����*ʂ�)�S�WSْ1)/�'���BO�ЛqK�WMY4���bΉ��A�碪���аgF��>��Z����<��],�Z��l�f+Ը���b��vJ+����kմp-R��Zj��Zw������kk���v���^�W�5y]ސ��Xޑwቼ?O�+���_���-"ʊʢ��+�+:�."Q�)b�/��l�!�Ub��P���{e�O춯��4-T+���g�qm��:ZZ33��ifcB�y+~0+���I����,�l��\��Z���VC���`
+��[��f�u���x�3zf�{[z��T����f��y�u�s�j_������k�˪�Z6�.M�h��H�9 -Z1�@�rk��-?���
+�+��x��Q�T��G�=2�Jz��vY��W���𪫪�S�z;V��W+V�r��j��U�ډjW�U�Y=�zB��էW_V}W�Sկ�a�a��چ%����.lOؙ�5
+רV#�F���Qv�5�;�x�:ѹnE>�/�����\O��F9�q�}�*�\m�F�C�Q��2�6D폺�۴XӚM[6��tpӴ���nkz��h]:�nt���ѩ�s�m�i�R�Ԛ-��bͶ7;��J�+�tLDL˘�1Cc��,��0�H��'��=���.O�ر�w�c7���f���-�[$���"�ņ{[�iq�%�P�ݱ�ky[/���6nՐ�pWׁvZ�r�kk�[7v�I��}m�ٹް����6;��+v�O1[OO�v��k;�S5�kk;�S���}m;��w��ƛ�Z�6j�>h=~=�[r5��y��^�0�~۽�����K�q�p�`�ݧ�gX���1,4xk�nV��g|�j�Uo�0��4��������꫞��=����1Sk�Wy��Zy!b�8��#Yk�ڱά;�˒�p|d*��f�K���}�v��;�γ�,�� �G
+"�z����
+��z���2tu�#�!q��p�z�p�z�����G�
+����
+������QH��aV�n����Q�FQ\o�p�eW�o!��-��%q�a<��M�����T�[�Ho6P��G�S)��_7�8�)�h�aG3��fʩ|���Tp�R��K%G/��<�h������F�9���9��h����Z�F|�FjC#�F�8�p4��F����fl1[���h�1G#��Fw4�����HCG#��i�h����(G3Ma1ю~�9�q��FZ8i�h����֎F�@#��F�r4����ӎF�9i�/h���F.���-�k�����3�F::��h$��ȳ�HgG#�9�w4.�F^�F�:��h��c1=�$8�� �It����OoG?}���}����%��K?G/�m�������@G#/9Iv42���`G#C��G#/;�hd����F^�FF8y���HG#���v42Iu42���8G#�93���X�DG3�;���hf����Tn�a������UD骲�-G�h���ţ��k�߰�@y��TN��?�+�}���gY�~]�&;��;��.�h&a�;���i�G��*�vI��!G
+�vL�ѝ����F;��⮢}SmN@ܹ��)�+�յq���Ҥ� ���Nat@�1��E����O���Ri�T�y@�.�f�W����F�
+��~����i�K�
+���1z�{^@���XҜ�?ڣNH�Vi���o�7H�����#Ҍ�=7]�Ͽ�M"�o�^�j{3�9�����%�I�wG�o!���Qe�?�I�Q���0��<�����D�Uk�'���΅n6w8M��?��϶��1�|�~L?���k���,v@��jE^Z�ɫ�0�*W��T1N��'�Ij5>U�T+�jM��V���
+�2_#֩��V�>ߩV�{�qX'�iqN\��eqE\�D�������~T?����m�/5)��ni�B��,!��
+�Y]֒ud=�|\>!�&��l&��-d+�F>%���e'�|A�d�O�$��a�U9J�����r��&gɷ�|�@.�K�J�Vn�[��#��D~&����A��R�_ɯ�I�<+���d�����כ̎f���\d.5W�k͍��s�����`e���=,>��P�����Yy��UG�Q�ӿ_�J��
+�,Ί����UQV�#�*~?�j�g�3�.~��0���P|������Y-�~�����aV[?�a��I�$����"�=�=���o���-����깬����Ǥ X�䒳ǥ.u�@���=!
+i���+���,"���2D��&��,Ţ�[�,/˳hYYVf�d5Y��Ț�&{R��p�\֕uYY_�g-e��d�dـ��
+eC�F6��Y���Q�)-�Y[#c�Ӳ�l��ɖ�%k/[�֬������V�ee;َu�/س8�Yvf��.��,����9�(Y��-{��e�Lb]�@9�� ���*��nr��ˑr$�!G��,A�q���('�D�&�X/9UNe��L9��s��WΓ�؋2Sf�$�-�Y?�D.a��
+��
+�k�6Pn��Kr��̒�6��
+���`�S�dC�.����=r{Y�{�P�_�g��y�
+���!�<,��<�^���16R���(yB�`��iy���g��*��sl��)o�q��^s����w�]n6!x]�:6�lo�g��ϘϰI��l��if�43��fS�%��n�0W�7�5�6��`n`����f6��fnc3���v6��e�b����n6��c�ao�{ͽl�y�<��2���\�y��m�0O�y�i�4�o�3ϱ�y��c^2/�L�y�-0���X�yݼ����[,��3��"�p����ػ� O[�1<[j
+���e֫֫l�5��VX�Y����k[eM�&���k
+[c�a���Z3�l���&[o�m��6X��l����d-����B��z�z�m��[��Vk����o}l}̶Y�Z���}�>�u�:�>����dۭ�����w�w�Ӻi�d[w�;l�W�j��Q$��
+��O���b{�x`�y�{������}އ����2�2�s5�Tdo��p�E5�"G���b��'2E�X"6��b��.v�=b�8$����8#�jL��b���E�Ja���|@��2���$����|T>#����n���/�r�|Y���*&�� r�|Cΐoʷ�;r�|W.���z�|_?(w���SyJZ���u1�.�0;��w���js�������y�������� xĆ���#6�G��Gl
+�
+��1�Ix���-�[�#��Gl
+��1�)xĶ�O÷��Wk��^�x���j�����Þ���|X<|���a]��^��
+�
+>�;�>�>����Z_[X��|��������8�������W���px�W�eF�˼
+/3^f��hx�1�2��2c�e��˼/3^f��Dx���e&��L��Ictj�M�n{�H?&.��V��jP}���t�B��$,���
+a7��9@�)�����:�oR�U$����
+����NH�x�(����W��v):���U����;�o�����k%��2/+����;�γ+��5���jմ�b+�BT��"Yc�Z��U�T��q�����͌�7��v_Txǭ��[�W+�
+��"��H�R��s����R�)��7 �MHQ��}�B���O]�S��~�W?u�O�v��d�w�R�H?�8(��jƔ�_θ���z�R#�{,Hyo��=�[��t�.��fQ�Yݯ{��.l�;`6��Țz�{c-�ͼ�XJ�V$k��)�- ѩE�˪ڕu��Ԧ���4�o�g���oa��`���5t;e�˚�X|�>ީ��i�Ҏ�ڵ�����/�W�9��R������������5��9�U���U���vGw!wg�ȕ�P��F�j��W��@��78����l[\X`��h�[wE�m�
+-����0�����Z�{34����HK�~�(����O_������4<]Z��=m\ة!=��Y�Q�)GVS]��G!;\:�^��� ��͘cƨy�o�wX���˧�:W�]��r�L�{����/�s�U�; �&��J��tA^��Ͳx�����4<�Yp�/u�o��f�o|���w��[Qs�9e����?�V�f,�&��m<��hO)���Z|��7�^�����"�P<�Ļ|�����|=�����K4N_L��3�wy�7�{O����U�[<�@���~FwE���^rB�S�-U��������eN��+���o/��jWR���Lޡ@���Τ
+��'�1�4^��pX����V�K�onS)4��ڍ��xfG��<�`����'5:����8=͗������v
+O��vA�{O���8� ���~�p�8�p�N%��O[�eiJ�Z1�J�ǟ����4v.�&��,C���`�z��7��k���. I�Zk��v�C�n�K��a�p��F�xz20�@����V�Ծ�TZj�X�)�,����vd�-�V���;ST����m����uX!�;�wXa|��3��"�5>ooV���i�o�ؿ�<�����A�/��-��c������,�� xC���5AjQH�)Rk��;�41!iF����+�B�\�r�����H�@�'@�$�A�Y�d/${!� ���!�<@r����� $$� 9ɡ��|��Ð��p��KH�����H�@r$@r���
+���$�$_A�$_H�Cr����!���$' 9ɉ�IHNBr2@r
+�S��
+�|�7�| 9
+�iHNH���[H�
+����$g$g!9���9H�Ar.@�$�A�]��<$�!9 ���!�>@r��\�����PPB�Z#����Kh�k���~I0�[0�[p����b�-���3̠��P��
+f�if(F�3�43#`���w���0C�<�����`��f`�b�P0sO30C1f(�ͧ��3����P��
+f�if(F�+�43#`���A���0C�!�PI�H0w10w1�.XY�*ɼ�|H�C2?@�I$X�1,+�4s$#`���K��9�0G&����#a��f`�d̑��I30G2�HX
+��#s$���̑��9VMi�HF� +�4s$#`���U��9�0G+����#�#�#s$�9���Y���$��C y��!y>@��.�t ����� �
+IWH�H�A�
+�n��t��{���D�1��c�����D�1�̀�CkU#����'y�' y"@����4�4��$�$�!iI�IH�@�$@I$Q�p��ە2�
+a?���a��k��X;w�~�3j��u�~���_U��(_]�k�?�s�U��Tv����VVn�J��<|�Z�X|�Z���*�F����*ȍf���h�<����8{��蝆|�Zih�,����:�T���e������ٴ>eA�
+��.i_������y,��U�a
+����\/Qyǫ����u-O��?=@rJ#�����*�b�9�
+��61]��r���
+����1���?�܇j����-I�:-7��udB���.��j
+�����**����=�K�*��-+�U��J���L�'�gg����~����]�4]�#wQZ� =�����U�ZH��L&� �S���p�>��5�X���w�����(�n5|�T/��[s9\��������:��}3�#��}9�����b�q_�v.+:��<�=���@����
+��{j>!���
+�Kk�|p���a���i�{�XuO�
+{��(5m?}�^����y<ҋ�v���x���]Q9�f�x�K���P�
+p�h< �zg�qJ�;fy�Qԧ�E�q�N��jԟ�{�ڡ�b�6B�����{���j����V�m?�S�n����;\��Dmp�f������S��)��>�BQg����y������x��'��S���5��Ho�T�[S#}�U�8գ��Cз���6��il�;-|�j_���n�dZ;�t��:g�*�E�?\ʗ�|6�L���f5�T#l?��N�U����F-����Q#�2ey���U��cm��J��>+�)5F�MAj,�w����=Ν羲���f�a�u�Ɠ��}s�ST�b|&�z�#�@L1%b�ӄ�<��e���^x���a�c����O����~?
+|a� ��D���{
+�+_����=�]s�Z��j)�oS���e�lmNw���4&p��5m$����S�SZo->��_]wkq�z.��X��_������q'�7L]ǩ��JW�쬿�J:��Ԍ�Z6K�۪5X�P���@jDV}P͛Ȫ�`�?�l�T������🨠;�x#����#p�Tü�N��)gG�����R�J��Of��\Q�I�e}�>L����_��Q�����a%X=�D�����c�^���~Vk�5�/��'�U��"���v�yJ���Y݁=� ��D`/`o``_��$`?`��_��o�z��"[�4��h��G���V$N3!�gD��V\�3�9]G�k�ㅨPn'T����qR�f�5Yk3+�R���9�(j����Y�W�9'T�-���>���ӄ������r��"�Bv�����9�L��Yok+�wk?�4Y ;�_������l
+�/e����,^�R�/t���-�!�龚�����,DlP��Z j�X���B�_9N|��E�_Ԏ���qL�䚴NY�X�-��h��U��d%[����<G����4:o��?�
+�;�dt���zp����zО��;_ww��N#Q��u8�|��c�t���;�L�`p��Ƅ� �G��R���O���T3ms8��"4�Q%��GI����Q��(�p�t8J:%�����#zC��(����`��j�����j�x����k����hm���MW��5{X���6i۴���vD;��e��k�
+-����i=��UxM�#yc�[�v<�Vݼ/�S���KWe�3u�U˯��|�����)~�_�Wx�%�p �("J���"�\�+�(�\Ċ���*E�HC�H1NLS�l1Od�%��7��b��-���8���%qU\�:׃t�^L/����0=\��ڦZ�n�t���i@��Q�Eg�*m���ki�6-�Ѣ-���h]��.p p)pp9pp%pp5p
+p-pp=pp#p�=�f��V���m��;�;�w?�~
+����9�� ���a��#��c��ǁ_OOO��~<<<�x�=��B���-� ~�@�D�h}�oL+�c��Z�@���d��a��@18����
+#�^�7`lÀm�
+�a�6�ܖ0�<��`W`7`��d�=��m|����E���;�Z��k�>e�4���ȗZ�}Wp�����ain��Zj�b-�V���du��$�us�]����㚞���/��tV�ѥ��AO��l�&�=�`�!���HL/�cڲ'�.z��#�ʧ�|�F��O�L-��K�?�噂k����GT����æ��>�_ZM�r��b�gtWQ�L��E}Џ��F�n�z���k�����tu���o@���e}��c-ަO���$m: y��n���|�\-yOޡO��5���o`hۦM|eKX��������?�Y������Y�)��3In��<ն]�G|��e�7�3�w������B������߬i�:�&5�Վ��]�W�Q��֨}��>=z�R��5�I&R�BL�
+��i��R���#�"�E�^ۦǥN�|�ݑ����ٿo��v��g��-���e�?�S�߷�[?GL������O2*-�e�+��:�W���ZN{�g9�&��������J�Zt��'��^�~w�����FO�3�[�o<]��MF�:Z���M�lq��17r',��v��a~�џ��O�����z�o,ժ�J�>�3eu�^�N���[�c�z��,�c�E��.bݕK3>l�z����S�j,�|�f���/Td1;v��;��
+���q|��N_��<�gh�>��T8�����u��y�vd���1c�o82'�����1]\�jݨ2b�|e��+?���ҾQ��Ư�O�s�S�EO�����K-�w�F۟
+����ES&� ��l�ҟ�~Uu��^{���n��hR�����o�?dFH�V{�|Ro�o?�\�{���A=˔�w5lky�����_.�ڸOmyh���M��̍���3�ܹe�iu��S+�����GO��4�v�#�ԓ��(��ݱ�'&��R�j��|�[v���7x�n;]zF|���6n:y���W�h�6W�z�R�=S�6wV�W[�O?i���#����9�ɵO�|铻����H��:�(}iq�:mN�q��W�� 7�Û\�=M�t�/�c|�ne!�S�V��=Z="�[��{��5�%ԩW#�[�:5��U?������hx���n p����}V�f���-���:��)�r����o�/9@e�ʒ���_�N���>���\`�O9�.��?��"����w���_�H�:c�������#�m�2�t��s�
+;��mK�1u�<��QYi���:��֙�o�<_��CS&�qr��%m},�٫�P�gY�O^���'>���2K�*�f���?���vP�/}K�h�=��ۋ�j�y�u�7�6��/���Jd�ݻwp����_[{�[������y�s
+��{'��y�ǟ=�L����6�]H�.�Ҙ~~>��~���U�o��O/$�����q�T���Kġe�F�j�m�Q��M�"߭����մMnS�.��wF�:�Ka�V��n�x#xz��g\K�J��`�ۥv
+_u�/T���
+���j�>�}zt�3�ɐ�$�<�LM�����X�p���������#�.���} ���544ꭔ�I
+:6`��_/���fH�3�F[�Z���O�p4��|�����U�-r��^ѦՔEk���O�Oܩ���!.=�1'��Z���⛝Z��3Uz�Y��EɃ:�Zb��;��L�<��Bٗ��}�~ȡA�Ie2S��S�ăf���Uϥ���M1߳7O�~g�g/��n�呢��&W-\���b��b���^���Z����WO���p��6{�A�ẑ�/�K�����e-���נ~Ɔ���Ș��7:6ر"���]�Ei���y�����K�P��뾞��U�B��,p���+�Y��t�������ʝ/j�~YyҬ�s�>����
+���{���=e
+֞
+Q˙��I�/�H�ڸ�#o~_�hn��F�YϞ��}Yߓ�f�M3��o���2�8Y�6� x��Xs�r��X�e"G������/��gk8�r��4^���O�Z��������_5]i���F��h;gt��W�b�<8F� _Rp����/*�K�k�62W�B`�76�їuW�N>HC��(-�+����=oHŎ�����V�����>Ra%ƳzY�BM䗂�v����S�����ؐg�K�}C6NS:�|�}���_%����z�?V~ƢY☥ױ]�Z��lC8eD�H��DE�p�엌/-!՞Y[�~T�8"���[���Ŵ�\���WxE�|����5��/U/�#���"o���/�D�<�>���;��TX��tckDv��r/q e�F�u÷�(HB���}�ҏ�7�e��
+�95D1�����q���w#���U�vT����V�xW���mu[�����C�ʽ�x� �Gߌ˸���x��l}�(!���%��
+y.oa�GIw5r���$��ѡnߓ���_r�f�'VĿx���֧� /�Z�kV%<|HfBT�z:*���T�J���)�����n�5�M/�X[z�ijy�]�x��.�Ǖ�Yn����&�(ۮ�@P�7��[4w�9�l!�F���}���E��H������z`��~_��-U���H鿣�w��7d-��*6��MGŦ|��W=���A(�p�uaI�NKP}����W��p�!��n������O��Q�l�u�a!.Dhe_[dSH�(�x��(�^j�͎��ql�q�QS&T5�.���r�Ҥ�Y)V�=�}�2cb2��!��}d/:�6R�����9[��Ԣ��K
+�
+�d2�_����w5�g]P5�H(�{���h�N�4k���KA�ߒ�H�=bn|��p���^���%Z9d��z��^�.�R��l�z��S���$?>�0�G�Vm?0��^�q\k�(W�tZ�x7vQ�Ɠ���ܿ��%�Mt��ղ0��.�.��Pr��Ş
+-
+
+�6>���JAP�a(�)���"+_
+1�gZg�yɪWwhĐz@C�
+y�y�0w�Yv^�����a 9n8�=�֡��[�?6���Ā^k����L2�������ݚ�|N�S�Ws$�9�x�T�s��� >�[߶�^[B�l(�tJ�q�9�)5òuA�.�?���� �_o9؝���b��(��c�
+�)�܇���\\Gl63FV��������41a����(a��|��m�oM���������+)��Yۡ��7K
+F��}N�NC���ȩw/�h�X�O�v,���M--(�5Sd��C�6u+��8ir{��@Z>B����@ahP��2X�(�`�P�/E�O��
+Ȭ������q���rɩ*����ra�M�M���a��f���-G�L���f~/vq��\�;t�Bzx�^�������\G�U������j�IJ�
+�w0�d�IC������2b ���H���:��l��i����p!��#1���b5�|G/<,��P�E�s�=uFdm��;@C&�����NӷJ��W����
+�`C4v�g�Kdj��7 ИTy���T�@C7��&�s@cjr�����M��VM��@h�L�����|�Eb�&�P
+k%)��e(\��#�h�/M7�)�c�A;��"��z����>l�X�����p�Ɵx�Y+ξD��t������Ë=ǶRI���-X���Z��*w��n(��x*��0���,��)���В���F������Ͳ���r��뙼P�[�[$�����^�G�#�Y\I�~p2�:�;q9�ܓ�yK�24w^�wLmA4j��Ҿ�<�Y��|�_Ve��Q���mɘbQ��}VoV��|��Y��?6".�j
+���/V����ӳŜ�y���tg��'�?�N����EӺMӀ�p��E��M�!�o���(�a�SI-�7_^4���k�M��@���"����O�4��k�'s[�u�}y�/]�>UW_�p����*.�5od-���*��o,_�O������o$n���U+�Wb����5i��0�����c�;e���b~�xLp�Ԩ;��q��5�i�+���F�L\�b��B�i��%�.�Y��<�=�����뒖�Y�y�T��0,����'�u�ħÇ�>X�}��ס����w�{�[u
+�����rBd��ua``````````````````````````�_�v
+ǹh�R8��u�f��W����A5��up��c��z@�=�r5��ہr
+hz�{�G��!ȇ�rpD�Nȝ`h�
+Ð;��a���+��0��kp�|�!w���G�;�Q���h�@�:�0�<�����'x#�Ƚa�0�8x��
+f"��gP>f�܅ga6�D�<�|!�
+sz��@F�<�E/ ��ȃ�߁��"����CJ��0^F>~�<�� �X�s^�|!����*�p���QK��?D��"�-��eȗ��ȣ �a9��s^�ȗA,��a%�hx�r����P����j�+)��Ğ��A��WQ�o"_
+)=�DX�|
+�"O�������'#�oB�؈|�y*�o����zx�ې�<��
+��F��?�m�7�v�����]�[����=�[!y��|��!��*�]�3�C��B��{���'Ȃ<��C>�l(@���+�!�y�A���\� �<�i�!�!/����y!�G^?�?�||��'�s�{)�)��|��GP������ ��˞K�38��c����俀��?@ ��B%�2�B� 几��"�j��:�R^
+ȏ@c�r4!���U`FnD~��y
+�!�������z�U�yh�_#o�� ڑ7C���9&��py+�B�]ȏ"����g��ϐ��"o���py��{�'�"���z>�S��.!���O����+=g�3��p�������5���/=�����)�C�����.����2�B�G���
+���N�o�*|�����k����_���=�7�>����o��G��� �z����?8���9 _r�+N���S"�'g�� �(��F~��C�5�x�i��i�?� �pm���-bߴ/
+�����`;�j��S���������������q�Z�~�iutd�M��vvv�PiuZT��z�l���y�������������1�F�!/7�ϛ���Q|�ķ| _�/�Λ�9����7����q�s��:o*���������������@�Ւ��+�w���� ����7s2d�ySaut�i?xE�ϛ6�gb````````````x\���@�V�C��� �)��Z��3B����������������ё�7����Faut�9d�����7s899���+M���9ȹ�a��7U�gb````````````x\0t�P���y���8�y�q����;o200000000000<�pvv&�M�W��J��� �M��+��3B��gb````````````x\0lذ��M��� �)�^;o2000000000000X��Ņ�7��������8�y�y���l�z�L��N�h�꼩�7��a�W�ΛVpuu%�M�?�U������]췜7��7)��������������c�ȑ�%��+M���<���:xE��V3x&���G�&/1�^i��Z�-�6xE���~�L�t:9oZ��Ԫ������=xE�FH;x&��cƌ!4��i�?�|��f��u��&�c��cǒ?��z�頱::�w�c�hx�������VGL'{�_�h�q�W��k�N�gb````````````x\0q�D����vd_���O^Q�?�u<��???��ꕦ����q��O
+^�G���A5��a���/[Z�5�pG��� �)'^�g����31000000000000<.�9s&��Q})#��~hأ%�^��~�����1g����9z�}�GK^�O�ط�)��ϟO�li�vR7|B_d�%�^Ѥ~�o�OS,Z���Ĵ��Yo7�oh�?Zb����3[���j��X�t)y�i��G?��=e�����_P������������������˖O�L�::�r�����0x&��Ha!�x @���I0^�XH�_��Д��Sz�du��u�C��a�C��9c�4�g�N�{z�O�N�yr���z{y��y��5�m��p�a�C��h�5vj[��R!
+<�\���##l&�3f̒��[�x�0��Θrp�i�B��G������sy�ל`R��VC�9�r Oᆾ�O�͍M|Ĝ��h,��+�=IV��}�N=�k�J�S�pDm��J�7�2��2w�T�O�;M(���%�P�~4
+^�X��w���%��`1�4T��r�r�\ݪ������oKVv��DO��z�._��[�:a���bǹ���u�"VN�HL�͍�eys̍�F���M�d�9��iY���r� �/`�6^)d�u]�#Ѭ�wu��?���;��%K����Ys��B�lnB6�u�S�R�d�F'�g&,'z�M�e����Mu�Y��c�,�w�����z͍]$�>�<0�I��^"'��H�D/#{~x������R��D�)�0�rSG4x+(ЕCx�f�N��鐵b:u�1K8,���T�b���.�+(碽�~��r9E9��+ b�WHtVV��.$+:kyMOz����+����Y�s��#�TMO��#�C���;D�s3���B�#g���]h��:�mZ��(he���CC��d$�)��(K!q$t���Dzو�VN�5�Y3�x��5�����DJqČ���I�?�ɝ˝a��;�;�ţ��)�tfV���o���й�3�9�︽R�_>tN�0�_"I�H�H� 8�ʇO@y�,�S^���-#��q ���k��"us�z�@J�[J�]�ky|�<����:����cqH��O�I@��˳��3&ˡ<�{��1Y�^N���H^�p���N\8�9�s�Y���I/�ç�́���s""��,3�X8�
+��xq;p$�۹(*��@�3"����9�AK�x��Z�4�'�$�Dt$�ɸ��U4���@�tzW� 4�������q��������
+�ҝ@Kn�TRZ:M�8���jE�*�6P���#�p$�S��Cl90h8{n�,N�k��#��#��#P�p�+}�~%*Ҡ,F9>(��)8����q�Ú�o�; D�A`6��N�N!�=-܄
+��-
+�c���1�`�u����W��ф�{{�0�B�
+�1�b�(Y�"CeA���g�OȂ��$�jR��A�!���$*������fnX���,���0����8��E���ea�\Y�3G�|R���\*F��Op�pq�GGY���1���%���K
+���#��.��N��8U�J�:U,X s_����dA~����vv�`oI��xT*��Ԍ�W�灏TV89�|�x��8�Oexj�!g�һ��U�8�7rZN��vQ�iO�|. +l�4�h1�X�,̛' �W����*l�qU�nT���#�&N��'|d��[�,���Q���[�=! �P�!�k�)��S�}��3{p��q����
+q�Q=�\�{���q�on�������㋛���;���5+е�N��y����o�7�o6�p%1�wp��0pɿ����r����3n����\�y��y��<����\�i.�4w�4�r�Dg��~��g����ѿK���k��_Ϙ���>Η_�v�E\�]D�ѥ������=�����l��VnZ���*$R3RR#RR�bG��ڑU(k�<��j�jQՀَ�!�B
+F��4{���H�(�~���o��ǔg�=����1��g�&c��CGxs�L����ߴ��ary2��Z.p-�T��Dt�ˉ+�߰���J�<��z6��Ŝ������˽��y�-�Ձ�y��迅�������p��(N���A��W��r��v\��0�O�=#�鐳��'�Z�2� >��>��SZ����=���xx8�{�V�C��Q�����J��n~[�>t�ݜ==~54�c��$���:��N�N�r��d�t�SN�����#8s�������Z���M�fsk�-ܧ\3����S�I0�����7��Zm;�c?D���F��{��ت|̏*�a�(舋߄���A;>�`t����G/�f>n�q�ݵ�\EVn*��R�ߺ�ran�rn��r�W�:ђ��D�sˇ���`��yn|�3��N���)�քޚ�u��a�$�3�EX�{��qx�&X�IM�8G��{,�j|W}�����Jg�m�o�Lq�PM��Ξ+=x��0���'�k��b.�K��s���e�T�[έ���w
+�*���'�GoZ'�\D���?sC�Z�4\���.|�)8G��g�=pX��r5�
+�Ԑ�����=0�67�M���τwp�����!��rK�����#�?�e��9�a�S��G�r.����\��pY���y�+| ߠ%�rP�*��xN�9s����\�2K�(��W�*.ۖȭ��x�&2�F>�$Ѐx�>w�����4B_!� �;
+�P��-�)�|��-�����D�6�
+�h���x���c5^��+�
+¯�
+�����i��r`���{��g0���p�[*<y��8'�E}��E0��o��>`�oB�`3��&�v"�qբQ��
+�yXG�''2P��c0:p��i2�BL��Z�:a��'�q�8.p?]_�P���WB�ҙ�2'p<�T�
+�`;�6ٖ|�%:��(��I�l�ua��EP�x؆l-l��L���)�^��k���)S&Myz2'x�KH8�:����!��'�J�`>mt�-g�_&�{�T�2��4�I�ZP[A��*��Wr.����{K��V����n�:�l,4�4���~K�� \�-�8|�� �Ú��������0�u���t�|�'���8��wڸ�8n'\��Ӈ�(���D˵"+���8�k��V���Vg��]�p�q7�)��}�>[n��DOB�J5��|G���UWj�e�eOX��S�SE�Z.,_��֊ �v��q�z������n�z����d�9q��9�@�e�e����@�F�XI�EP�M���=�$\A9��:LS�!� S�y�V-�����b�-&�6�hcg+p6*[����a�v�6P�P+��Ѫ
+'�X{��Ox
+���0;`v�ӌI�9
+�A�KiYC����ڛ�}�G���V��0��?z��a1nS�q/r�
+��f����~3������m��.��Գ�ώ���(r�1A*��p�
+֎ui��*9|������ ^3���F������O����2�q7��S9��e�������W���h�6���#ߜ�-{x�-�}�oN\�֨@ggn��;���W�>�]�ړ�ޱ|��|o��L�i�0VTil�p��nР��`'�Za��_�/��1��ظ�&�8t�9�{��ٳ���7��i�%9�ׂ����v�4@s��m�e<�L�F-Ἠ�6Į��-��F;�M��a���2�W�ƭ|���Qp��ѹ|� ���2�y��'�W�5��6�@ˠ�_���m�?�.~��Oe���.v��]�b���.v��]�b���.v��]�b���^0��E��#
+�/Ia���Y�FQY��J�e�a*�m0]�eY��
+�5�(�"��2*��.�&�h�]���,����2�)�Ȳ\_YVbz�,�@jo=*�>S�ma�%�v"��e{�qB����e��p��v��䨑et��!z:��2���Ne-�;8�ɲ��@��e�G�?���1A�ў�K��L�q�,˨�c2��a���Y��1��.4�,��<��?'�$;�G��u�/�ؿ�7�<���bY&�+����$˘�I��7�_'Y��u��ć��)X��>N�T~��%ˤj+���UV�WY�Ke�.�U~�U~�U�h,��!��u�V���<����[�=$�_��a��i!������N�Qh���R����i���K�
+V�s��:�8,��9(�@2��1eJI0�<�c&�L{�O�R:��:�XO5��8J �b<���u�Ě"`�t��o��ߢ�MD�
+��i-��`�$]�擩��zc���p�+�ģ�r�c�����X<���o���z[��hK�U�8j
+�1��E�4u9�E�6J�[��Oyﮠ���m,�BS��\��v���i�K�"�D����K��}��_Is��~�����\'kdɫ���hϮB],}�X��Va�uh��^$�B�=���D�մuq�}ԃޠ��ɖ�+h�ɴ_VQ�&Z��A(%��S��m�?�&=o����/Q���{��3�<��O�$�L������j2Q�x��Xx�Z���XB[����@{Q�zj�'�QMS�I<�>�<'�jB�,����q.��=��UY�$S�b�)+h���
+ަ�ZA�}��J�Ut$R�����9H���ɲ��h����Z%װB�k%�d��i9ɑH��X��~��mz%=R��瓚��R��+z}}��KOT�g�l@Z"�%�>�2��Ѳ�Zo-�?��˿������4���\j�$�E�R�y����m���L�#���2�F��c"��k�W���x9�c�}t.8��0�Vҹ�%�o�����E��c��'�lDzY�pU�1�룳�*ZΒ{��w�\e�����j��h�n�^�weR���>��Z���J+!���C�6���B�:��"�\כ��|"��$���ё�ث�el���oվ'XZi�n���>K�-���~���d/�$[��z���]�]0�
+�� �;�di��-��_3�͗c�k��3�9��)�u��F����N��J�R��|!�W����W���ҫ)�XG=5��.�$i-�^��S/�^�Bq�Dr���xwQ�4�EL��l�wc,S�1� ̱H���W���^��TG8�_B���8�����.Rv.D�g���ќ��05ùr>Rb���q"�@gC�y����Q^%M#0]����Z�H�h��%��c�����i}D��*/��3D��yj#R3�s��
+���`��-����Y�vmCޗ�2�j@�� ;A2묧�T���@w9��J�JgӁ�z�g��Ѝ5�����J���3���ʧ=2�I�Ԇ�h�]Dq��8G�����s�|qƀ���y�|��4�O�O'�]2�o�8G�"x�<Кk��7�_EB�$ï�Z"�pu�}}��"����+��|����� ���(���=������^���C�#�6�����/A�`/8� 8
+�(; N(F��&���a�F�$��M�f��[�҅�(%<@��8q�8q���X1�b�o�kPN�By��ʛ��Q�Qgq��:�?��A� ʿ�r�؎� ���e��(� ��-���D�:�_��D��O�)�*������S�E�+�W(w+����l~b�gl��| ��]� �l�؆�`�m%�U�U(mkQ��=��l?G��(߶�N
+j��*�
+e[�#�Nj'����<_=�0����Q ��NF�M��~�lu���S�?E�\��U�P��Y;�_�yv� �-�C{���š�]�k�6�7��C9��L�e��r���B�����#��5ˁ��hV������}����k�P�״a�Q�E��G����K��;S��(7�7��doƻ��P����Q��uN록�v��Y�����b��� ��h�Q����r�v)ʯiW���M@y��|�/R�'�U{�yz�|~>�|�6$�:ɗ�E �W�/��Eo��}I!�)ď�bP`Ϣ=m~iS���#(l�Q��i@�l�k俱�B~���=os�6�.�����K6�i6��"zE���>:��D�� ���]���h�m�M�=���Ă�Y�6�4
+r�ƌ)��V����"m���-�X��<t+6�$BZ�ʘ�L\������WA9�1��p<=��DS-�A�+��dN��l��B���Wd��?$Y��I�E�����$N��8��8��8��K:L��k`�,ك�U9-��+SPW��(7S~��;k����Ԕ;S�N�x��(�<����Y�f5WNy
+�-�����(�L�u�oS�N�����4�3p��,�_H���;��h_bKn0{|4�y�1<��a,��=�x< ���u<�+�$��˫��m�a�}eO|a�4�x>YD�>��A¡�[9��pΜ;7����s��n��[��qI�zn3������>� w�3rM�1����]���x>�O������B��B�-��B�);�|�P)4mB�pA�!���j}ęb����b���+��L��D��.v��+�
+�x_�+�
+'���S��S�T)�)�Q�E�"E�Q���R�*�((��:�YѮ�R\P\Q�P�Q�W�J��I��T�(�3�A�y�pe�2F��LQnTf(��(����)����\��Ôa"���;�p���\7�>�&�~�pJ�N͔� ���,��1R8�:��<\X
+(q�@�7��Ǥ���A�ȭH%��JwIÕ�rh��r��i(��j�`�ު4ML؞�O(Kh�1������V��^�:e���{VW��X}e��D�D�ĐĘĴĜĒDs���{k4k����{[���n ��eӖ�-�-���HW�{��/MOK�O�H�H��U��5p��I[3���Z��k�U�gƬ�(�}ۜ���9t���sv,���()�]w)�n��❳v���=�=��|ޛ�^�{�G����{��D�lV�T6Kj��~��﷿E�${&��z���){_vK�9~��>��`���胆.�w���v��ڹ��3r�Ƈ����)�aчM^�Q�L�q1'$')G��$�����w/�b�v���}E�=���
+�M%���K��0���a�%)�q�����c�r�}r���|�j9�#��/H��d��=�c��t��>Rxp;]�_��a����.9�+�erX)�Mrx\���^��n),��Iur�#���0D#�0F�p��C�~,��r(�W�!��P֫�>��R�:ȡ�z��D9��,
+��09\,��r�$���0wb�4ad�¥������H���� ÅHXõ�"� �#%!�"mDJG�D�F�E*Bڇ�1RR9��؉a��8�I�3Hd��t
+����&��{�}�Ç���p��FBܩ]sA���1�DP��_��4��`8)) w}�"��!�b�bJ@�aE�Y\��~�'õ���dX7\K�K�J�)K|�4%K�Jf�L/ .�G9 �ܒ�i<�$��e%�%ƒ�O|1mzi$M��e>����1n.�/�/
+!��`J�1�����Ɩ,-m+�(m+�,=U�Q6Ë%�����\.�Vr�.,Y���\jiʙ}�*1���1�5%1���b��*�\�J�Y����Y��2גY��%1eQX����+�.+*s/�Fɻ�$�o��.����iݳP��2Wԇ�SɬOTX����O�x/�h?��W��L�i9�'�/�8�a0%�����v4��C��yb�������}�m�ʺ1�!K�a�Y�ϴꇒ�H/���J�'}^:� $�D�@*
+�:±�;%K�a٥�J'�<�[�P�.M.Y��z�M���Wvb=�0�E|}$}D� ��J��h� �8n�;�/��LY@镲��=X��g.R�ƩM��C%��
+K��6a�4���J}>Sb.�싗E��R�D�>Z^K�]e�ˢ�����6��%=�-i@h�}�[I��}}�Q/u!4��{}y����n�Y�e �B��R� ���e�Q:�>EH;���y�g��:�"����Po�!���$�d#R_�Z���/��*��ʎ���c�J��U�
+�,-�O��=��NE��|�����;���/�7�,i�P��'���ҜL�8Xڛ����s;�o�|�B�s�LV���.�O��[��eie�{}��tY�m2ϗzR��;d<�qy�tTU�U�o��xU;����|���U���oĴ�u�̇��G�h��[Uw��ʢ��m�À�;���*�Um8�1b/�nT�1�_�dԠ�$ʼn]��%��K2)���D���ŧ�|��!]2��P�l�/1J��n*c����%�C���`�l��*i.��C����Gד҃�n+z��� B}q��Y�k����B���n�&✂���Ҍ�q-�ׂ�q-�<�$�s���b��{�KG}~mG�)�A�%cɵ�3J.P����4���dK��f8�X=/�3�2�o����gQ�S8����u�}��8�,�jY�"���e����>�$�rP��QӷO�T�G���G������%�s�B_�6a�T��7��E��uD�_�_%D�����vBE�K��7j�N`}� ~!ކ�b��OF?����6�R|����So�yv?�'�'������ϳ���di=��0G;A;^��UG�]�/���l��^p�A\��
+#��F ��Fp�<+L�a��U��7�7�'�=�/��%P v��@O�S��7e�)EN�T*U��
+[�s�Ev��_�E�-�>�+��s���`_�$�����u�����Jz�ɂ���"�^��^��֣|C<��s�9<���3�9OV\P���C������O"�?��N�s���C�g�kAxO�B��B��BT(@�8�����S��.'Z��}�}��G����o�O���i�30��w���]�u�v��<�r�E!��<���gu��3�gؗ�C�Ɵa�|օt��U�H8�>�Fzp�GR!i���ܐtH�쁳�H~Hӑf!����<�����gb�g��x�?�O���bij��T$�#e"e�;<���E*(A���C���l|��ɈԀdF:�t��q��VD��\�/��d8{��=��
+g/�(� �K!�z#l�]P����\��p��p.����M炸0�[� t�8��y�������'���I�m:�ݝ{;���y����J�W:�;����y�3��*JI�';3;/���ֹ����κΔ�z��3��H��\�y�h�7��J�;s;�u��3�sJ:7w�wnG���۹%5���L�3�
+���ԙU�ՙ�)�Y�!w�T�{����q�3˩:�:ntN��ΰ���{:�3;nw��:u(]�t8���BK)O��Ԡ������N��w:�:���q�������k����杳�i�%��7���P�w����.�ͬ���4��9�8&�p�蚈4i&R RRR8R$�2$����p��Z��kK�-]��t��҅kK�-]��t��҅kK�-]��t5Ʉ�K�/]��t�Eµ�ז.\[�pm�µ��>��l$%�)?G�N�r�� ד�87����4�Z��p-9�kI��w��>z�ނ�(/�;~"�IJ�'N$�XbӉ�;1m�{�U|��C'*NԜh:�v��ĩgO\�>v
+}���)�\{>B?>���S��������VY�HY$�v�v��Q���&�Om��x`c{� 8�<�9��H���#�%�%ڬ��ƕ�8{�/_�
+߭��u��
+���^��O�~
+6�Q8o���8o��a���7����Z�j��>�ڧ�O��v�� �'t�/?��A��Cg�D�5��x/vތ�j1��b��8��qD�����šr�Z����٠8J�h9���^�꽱�"��Q��8����K��He�� ����G��Y��kI��Cq��g��ѥ8M���ҽ�4��(ގ���#��? �����k�DP\ҫ?�%)NlX)SK?��)>����Xq�6ͤ�?X���Pq�v��%��6�4��nm�~e��Z�ɳ@S��4��F���4ѠD>ՠ�=lr08a����JS �p�y���n6yR9�:�'>��fp�m1����H|����S{̴�vGn�5L��+>d��2%jϙ"
+A��LɆ�ګ���7L����/0D�v�2ѵL;
+qu�i�!�Ne�7D�i{SR꜋�iun���N�e7#�c���e���b��:?S�!�n�� �e:d�#�0�>l8��m�ʟj�1���E��p�<Ԝrl�fS���n�~���n����n���p�.�Y��M �('���L9��h�ںS��u�M��)'�[�I人3���/ ��Jߺ���ꮙvbΛ4�J�Qyz�ӡ~ܯ��YX�.��Fz�ԎVzh�bXP/��We4$��꒰���R���m4�T.��4ݭ��o��7�^m�����X�9�1ϥ�L�Y��պl�ve]&��F].��o����u��J��A����V�2�~*�S�L�����@3Tn�[x0�2�>Ĭ�̬[X|�2����2Ө�`l{r~q]yqd�z�pa�ʋ�G�nU�և�5�Eh����p�D�f'��5���Hl�>�r���f�ʲ:�ٽ��6��]i�_fRW6`�5���?���������X����i�����*��MvV��;n��j*鋪��wQ��o� ��9NNi���
+J�Ί[
+Y�
+N��Ua
+�����
+�h��
+��Kq
+>(�h���㨌3�9��͉U�
+攪Ȇ s��̛qƨ3o�Z��^��7gI9�Xh"s�y��lhiX���1e�1t�šL��P��:�YO�sb�g�1+�Y�ڼ*�>=ُ����"?h�@��J2��g\UBC�iYUrC���u�Xɓ�65ęv�k%Wk�v��U;7�:l��h��K�Ά4�!#4�8��U�C��i���í�U��M��n8G緣�n�@��:2#U�k�C�g�s�ib�oU
+�sS���t�o"s,��n:hr�$o�f�u��d�'��̫���nD���M��#q�A����>�ie1d��_LFY�IO2[�R[�g՟���d]��Q6�%�~#��S���*p-��!c�6���ȭ��y('��uz>�խz!�'e����u�^�Tc�^�ԴAuL��V���;���fU���n�I�P�3��y�%G��~���c��8#�49�|�=�ʇ�����X��$��S�[/WoD}nU�7�5'���k��֛����ۥ:�3�.������U�6]G���������1�4�mͮ��t����c�Ww��?�:g�t�C�����:��r,�r3�llV���~��!5m"�s5��͚6u�,�V���Dg�:���ί5I�٪�7��Z�$?���������3��8�Y�������/��'��p�?e8�<٤����Z�>�}w�*y�]n�ǽ�^�\�>�m����ךL3��)ʹ�8F�}�D��h]J��)T^(y�%�t��fs(��;�p\�k�0%T?l��y`�g���6�K��Զ�3����s�6d��)�!�T\u�Aov��h؋3@M����P���j�?d>\�^���ĵ�æ��w*�0]qS�Sٿ��U����|�w�
+:̕U�
+�p�
+�=�ϖ�ZUΡVW.�*��7\5��0��z�ܪ[
+8r��6�6M��6cm��M�0��Y͡5bst�'���8ۤ6j���Fgs�]�)|�نK�sD�Q����bT6�̗���q�Uō����QڧI���Ps�ٽ�ܜ�6��hl=S�nNi�X�М�6�ƥys�̚Q���k<���Bj��ֵ��Ll�i��ڬo����p�m���y�I]Xgl�5�h>`�X�\b:+�x5a�F�J�\M8�9��͇�ʚ��ʶ��ҎZڻ�,��-�w��W��%y��\�c���T�5/ wM��4���5 ���6�$7w`+�7w�e�lj>�6SZ[��M�͗��w��LEw8���Bڧ�d�})��eoc=�*�o��
+�}5!������|����3m;������Yޥ���2G��i~ж���~ׁ����D9��o˯9Ԣ�e�n\�+[����nԵ�:��W�mqn
+&��VL��`ME����E��X������Y-��#+ȁF?s�ѩq��=�J�,�Ūv�ftm6�6��.���8����i�����O�BS�qr�bs�ѽq)�ɍ1�3��F���V�И��E��O���qc�
+W�tl]ZC(�'э�$�̺�٦]Ơ�Zchcn��qAc��}�dN�2F5~��f�n,k�R�[ǡ�Fs���o�&�)&��\�fLl<��kLi���4��n�k
+ܯ�R!�I�n�g����������v�)�5��Ѵ�u#�Ӎ]���L㹦��l㥦��\�զ��"�FU�>������M�[?6>h�T�\��r�h9q����oʯjo�5;U]lR�k��E�SM[�{ۡj�)���ZExM{�_[Eͩ��m55g[f�5�\l nk���2��]���\oY�v��y��gkn�,n�(�mC[��V:�Z�U�S*=���m�pJ��[���+�В�v�Vْ�v�VӲ��n�SKz��ZזL,E�uo�6��z���ܣJ|n�Q
+y�Q'�9�N{ԕ����M�zM0�WLG��H�BVã����?��hك
+�N֤�~~�쎎��qttGG��w�)�k/��kC�:�Z�Ӳ�h���)٩G���Ѹڀ�2\���I�6���hbmh��h��9�d1�����k9s4�r�����(��Y_������6��|4�6����͵�-'�n��o�x?�-){~��ƒh��#���=E�{4�~����76W`�^���'�]a�e�
+K��^�4h�`�8��9���
+b`+L����
+�@1�W� ^K��C�B���3X����&�n���
+=��s>�.7�� �\0�
+��\.|ɇ�/���k|4��o�9�����l�0�e�^����Ta7L|J�ȍM����t�<���^��8�$�I�T�4n�r��En�2L��2Y�6�B�Q�ǭV)�p;l�U㹏T����.�$�$�j�*��L��%�*\���E�[��{�
+Tz�[�WUǏS5���s�w��u���M]���w�m��ɿ��j�M��ߦ9�9��Vs\s���|��?�9�9�_�\�\��.�~�K�[!U � 5���[k�6mm�ھ�Jg�^�zc��zw���Pfh2�2\1e�����f�������l~F�{��]�.pk�q��s��w���\7�
+J�k�k�!���x�[ޞ�G_r�A˻�.���G�#��{�?�C�/�
+�~0�+���6��K�e�/�w�CL���Ù��l�<�ّٕy�K�W3o�|;�;���w��:�����q���#$�?3 3hGxfh�̈��Q�љq���)����9s{fVfΎe��̽�v�f�츾�^!Hww���gcNe��f�}Lq�tG� ;�w���ٱ �Ў�;w�ڑ�cώ�wT츲�fGӎ��;N�8���;g�Zӥ�X �u0�ѳg�At,��1P/�(��8>���^��~����UŪbxE��cX�:����*U��է�O!JeP�*U,U��L���3x]�;��pLq�G��'�TF�a�J�:�Ș�m��m!�¶�o�ܶl[춄m�ۦn[�mӶ�m;��ږ�m϶�m��V��f[Ӷ�sFy��g2.d\θ�q3�NF|ƽ����m�mI���l��s��m3�32���3�nk����Fq6�6'�7���������?��3ßa\�k��ת_��I�I�����,p����/M�|?m�&��
+�b�i�7��$
+O�^_е{S���v�,��{W����w�)��]\�`�A=��^��B��]�w�ݤw�ݦ��n�}J�Kóz����w_���}]��~������Ź�_�����j��N�\W}j��~c��>��>������\}nn����A�}4=T�1�Ch��,7B_��7�{���8�97Q<7E27M&wsA!�lK�v�.7K?.7GLu��NDk":X�E��Dҭ�R-W��@�[��I���FZ�t��v�Dgj��u�����~D�Y���BD�s���K��W�ө}n���-J�s[�wr�3�}���Q;�.�&!�����.�2�^��0�/t!�G�c �TWH�Զ�N{�0�Y�Lt!>��V�IC]�xjbKH�'6��#�i -�"�竟��W8���������a��©y�
+g�Z��Ե7���k�=R�7��A�B}f�����a�N�mrH��*N��]2F��"���{mR�{�v������oi/O�����/�m^Lax~��60�͓T�,/�06�Xx0���P��6��0�����o���G��nhg�f�0�T_<����o-vh���]H�0_��zc{,~h�{���sdN$�u�;q�Q�����@;�>g���_/�����}~N}�X
+-~o��V~�W��_�-�q��{C���\@��9,P��ȼn �ZB����Ȁ����h�=��2�X���x�X�(ϗ/p��t2����-��cr����س�U?��Ud]$�e\�a2^�f -~d��`@H�&s)K�/�����X�`���d�Wd-���8w�e��y��9�$/�pSﺏz��fX�^�F|��#E�;I���+�E|;�����=y���/���������w����+�daSޙ�6K�H�^�Yx1�Ba;�[��>E����
+�Z
+��;u�u,(:�;���F��X��@A��Y�-s�e,���9�
+u'6�� �OK����K�EW{�s��9�@�5d�/?�.X�
+R�nP;�c� ��v��nB��ay��n�?�4�^ʲ����=Y���Sy�
+�R��)��w��z�>������辋�s��=�>)_,���.���P��ߑ1n�ϑyեHI��QE�|�"���E���(b�;!���D| �ɟZ�?�ȇ�y?�X49?��߲/�+
+�/
+"6ɏ,
+��!di�L���- m%�#���E��O(��m���'E�/���T���Q����(-W������{���r����-h��t˾�`{у���9?V���=��������!"!� B�A4��1� AD@DED!�P�H�"��"��k
+1�j��c,��X��k��b���Zj��k���c��w���1�{�?~�g�,֬Y�f͚��g��/y5�i�ڸ�i��/�r�^���g�Xṉ�}a�K�/փ��nKcO�6�7p��/w����R� �`?'��q:|��߆�٦<7�|G?b�1�ep��k�a9ď��u�}m2�Ll3�9�XK_8�R���k
+�ẩ�/�})��������m�����wܟsN�������/kŀ���Hp�e�d�nˣ�ےe
+4�Dz�P�i���'���9��o���y:�|wO�
+wO*p�d3��wON���i�=9��'��r�=Q�����{�L�'�}|�D�L��Ρ{%�H,�T][�P�R�V�Y�S��²�����k%u%kK֗4�l.QK��l/_��dOIT���C%GK���(�*9Sr��B��ޒ�D���/��R�R��R�Ҡ������%Vo
+~�!�Y����{��܇]ۨ�D
+]��� ������wORxH�R��=/��$2q����4B-M+Zk�t�4n��q%���r
+k��OOEkwQ�sJ�<=���Ca�ӂ�T��s��v�1�t��g��-_R��~Nj�w����}�p#�ⅧH��%)������x���X ҄/yg���{�D9�;E5�@QKa�h�Dm��'yI^�.!��M�Cm�(���|�m�0[��%��im�[�-�6ߖN1�(ݖW�k+(^��wy��Ȗ]�`+��l��5�u���&�-�m���V�>�A�{؎��u�N�N���(��ZHjI:I
+Wm�F`)�p��K��
+��Zq��++Bl�����1��W�w2������fێ��g���T�t�w�_qa��ߊIQŅ�
+�ED���-7���M )$�FZX
+$œv�I��id����E��9E���<�1�\NJ%ˊ
+���k �(�G����(�E�
+#+�H��Ԇ�+�W4Vl�5Ul��n[W��bO���CG+��~�'*��u��{�+�U���:�����#(\�9I���wW.b������u�̭̯�6�5t���L�,�\�=���坕�
+%�*7Tn�l^�[���sEcqa�uy_�)֧�wys��ݕ{+T�l#�n��[X�*��R�U�K1ipUXUDU$ۼjZU��䢂���U�닫����(TU�U�(�V��ZW��h~�ƪ&�-U۪v��U�V�C����� [rehe8y~6y,FQ��ʩ�#��+�h�V&V�p����j�Y�����5Wj�jn�ʵ�Z�Z�Z�ElS������EE�a4߬��5�F�F"N���5�8�6�6�$p\�G�F�>B=��!G����[Ks����lHH��?Y����-��)2�>���S�����P��om�>^}�����3��/T_�^��FTu,�1�x��p�����Кp�&��L��^W�XR��dm��^�Q�Z}�࢚�5��j�k
+kJkV��j�Q����f����\��fG�5�Y��p��U�<�����َԴմז��l���k���Ԯ��X�D�TF33����*4W����_�R��vg�o-�ѵ�j��=V�A�k�֞'�ګ��j�W�����W�Q\�j�ͶjҪ�UѫbW%�:����LZ)�V�Z�vg�3��U)��U�V�*_�������i��i�b܁�ڈ�E�.�]�~i����'�˗�-ݲ4s��|u鮥9K���d���˖"����Ǘ�/=Z�Ү�K���?��n�|�|��k��zd�~�ϨM������̥]�I,$;�S�<&��4���_��T�Fi*������֬J��Jq��s)�S,�XJq%�j��(n���b��n����n�{)�x�"�n��N���)��{(^�x���(ި[S'S���N��5x(�P�f�EP��8�b�x��8�=�t�k��*v�8�â����b]:�d�κl���A/�Q,�u�}�]��b��q�C���V6��z�}��l�����:`�Ö�FJr�
+{u�u�}:R�\�x�!�7�Di]�����sH7v۪��`j�}�ѿ�n3���ml�N���9�9�-#t��v;O���nh\
+�/��@c��f^�G���6�;:�dg���i���}u�>~ڜ6�W��R}���ج'=��8���2���Y7��܋u;�H�� S�gR̩ڧQ\�D�a��8�}�}��e�)��T}���s�W+u�V�Q\Kq����qu�y
+F���Y���c����)����Cq�n�Շ�~�wh�=�����c�p6��a� ����.�g(��x��e���S�&�}(����S��>�����z�A�8�g�zꍱ��[����탶���}l�}�F��7�}������vr�9���N��æ��~tq�_���F?��uC��q`��fNs���;�fc^���Y�U�s�.>A�����E:�T� ]�$�D�y��)�Q,�XD����b��?�5� ��K�F#6<M�y-��v꼠�겁�3d�x��1#v�B2d��E��gdp�s��Ȱ�62d9��n�
+S�(�F���c���Ʒ��P�ߦ*�R�n�;CG�R� �'�'�$�)�)q���M1Y��1_����8=@+�i����'<�)#@�1XH)DžJQ�h-���B��~�Ɣ��挲�)��S�B�>#
+��G�f�Gd��?�+#2#=� cア�}�l-G2Φ�e��\��3�#�|��B|�����|pF2�u��Y_�oƴ�쌢�����_pF?���j�5�;�qAQ�_f`FkfH�w�x.A��ze�AZ�$�ʌf~�ve�f&@����2�Qz-C�L��������ĩϖ���_�2�P�g��r�W��3��M#�ߑ�H(�x$W(�d�.�W��&Q�iC�%�ϊQ����`�R(f�J{�ƣy����ҋ��h?��%7�����?"Q�˯���,��E~C~C�r��&4��=�=O���|I�T���eBv��4,2]q�L[0Ϧ�G��!9Z�y�H�-ŖzE�������|=��>�������ίu�V����Ɂt�\Ԗ����<pRݵGa�ۜ�G:8�e���C]��{+�N#\��v=�o��.�faѕ�g?{�����v�;��vn���q�K�%�]Rl�vah���v9��ʢ+d�+��2��aQ(�y-s:�`���Nv�v)kM׃�]�2��'������h�(�(��e;���/МI�E�9�%A���{b�ۛno�����7��7��Mg�i4c������
+�%e�m��O�Ɗ�Nrn�|������3�f�Mʞ��<�����]ї4?�wF!�$K̝�g�70���#K�B�0eFa�nWr�<�Q��,QH�\���e�L_.S�eF��s�$Y{�C�4��f2�۞�M��Q��,�g&��a����d�=����3[�l���V��h��t�}t�^ֹ�����l=�{u�:P�\�jf�/�
+��ML]Q�3�Pl�ö��-�H��3й�l;�::��2Ol@�Q껀�g������p�j��"��a��B)�Ŗ/;Wv}���+
+Wԏ��HJ�.�|���E+JsGR�;�,ƭ8�}�b�ފ�=ܮ��Tf��+VR��þꊇ�x>�?��̟ ~���b��zgw����H�����:䙱�7��O�C��y��,�.�[��DR�
+�".)=�oE�6��;��WlH�]��m_ᡷ�(��4,�>�����rEb�!'�G�jb�03){��6�ʋ
+��ΨgO�Q��aː%��1�GnY�����R���4�u�>��e[fg���(���R,ٱ�4����h�ۙ�C��í �}e�gs]]�u�s��}��?;s&�$�hZq��pE��I�d�n���&�}z��+�u;'����&�L��Z$Y���(�����M�"�ъ�M�8��*�Tc�:݆�3\繿�����U0o���к����t�HWݤ�zZͷ�v����w��P��d�J7]���N�㴳bB��� � '�V�{J�p����(�ZVb7�Hɧ�͢ˉ�F�Z
+G������D�_�r�'�����:�*QO��n�ܶ����Vr�V`���X�B��"��;�6����Q��2�j�f����\���.S��m����u�i
+�dq��ԛ�Ы���@��.q��;�(�v�M�
+�9I�G���$Z�$,��$4�t�AI�;I��bqeZ�$a<�D%i�����i����BͰ��ϱ/`&�R��~U��_x�/F�/|�/6��^ӽ����/�\�^^���D�-U,"��;=utML%�/��c`�C��<&��́��?�w+3Ɨ�^��i�)�v�tec���$q�M!�.�x��S�4H�o�ӕ#��Mm�j���U��]���i�i�vZ#�3yQLu(Q��ڄ��JS�C�z��B�v��U�
+�A�U��5���r��59�j�B��l��t��AV�BW�J-�nQ��ie.+��4ʣ5N
+Q�
+�J9I�_!+()�gQ�J�o(de2��%��J��,��i�����!M�#2�'�je��� s��C��� C��:HLV���|O]>By�Ծ�R��R�N���q%O�v(����2y��@�>J��7TR�&_�i� �U�+1C%i�
+�O�4[��F%�!� �:��i�W�C��Gn�.R�?I�"��/:��N�ý+��}r�.�.9Wڣ߽��fy���i�/�\$%��Ь�ɓ��R�<^�Y[�A�Kd�CI)]��]`��/�� r�6�4�Z�wv�dMB�.��?)����_*!Kmr��nZei��h�3�b�nii|�W\Z�%�.�^�R��4�I�R�C�<)Ol��J�����R����9��?)Ajv(!��PA�Q"�
+YG�|D�d�j�����R�ODӎ"+�,�r�U������4�Ƚ�=���;V�7��h}�r�\9z�l�Nj����{B�`�pW�1��;"�L�1q��
+7LɌ��6�3��Ć���O������:%jb�W&1�㓥QS�uCT+� �q�ҩ�D���)��N�+�i%Z�=���q�2��o��Ӎe@gC'�>�t�r,��Ag��a��
+y�'�4coTG^
+deN��։A=uaY�����,5�fi�����s������S��i/��j���{#8�r�Gm�_[�Q��'����wY��߉T㼎���8��(�g~�I_=e
+/�2���]?!|x:�������"n���z�hd
+��ȓ7��f=�}���CO��C��x��{s�s��f�#�_���q����9���6w~ndn�`�F�c$�K7p=/��]��ӌ�ɟ#��ǿoˍ�.+�9m�Z+Z��z�7sO����]�/z���w���β���{��
+��;�n�4J7�{<������?>�U��D#ޛ��O��"�x��~�a�q�������K�|m�wRi�z��9��;nrN�y^��Wr�#dj ��{-灶o�mq�ͧ+Q^�i��n�m�����9�|E��%�ݲ%6Z��{^��x�E�d]�z}��V;�;�з�A_����P���[�w������84�̊X�� ;�Wh��ݱw���e�ޘ��ƃ��}�����1-���ϣ����G/���eϏ��˾ɷ�e��rJ߿��ّ|6�};���e��t��
+>;��U.�s�W�B?W|5.�s�W;B?�v8�X2��%����Xk�'BZ�i�$�!��Ұ(邅����6�K
+�0�y\sh��q}��6l�'H�:ő>��=
+�����;��ɹ�
+�0fa-qP`��\Khc`g�oځI=�^� ��5�����]�G�4�3�qq���C���c�vȵ��Y�F�0~����z\�Աu��rjQ���2�:�L�t[X�0;,L���2~b)�.po�������P.C�RA <��G�G�H��&���y�#�O�����P"�/Q��(tNL��ul�w��5 ��ʀ�!~w
+X�1`�]��j]� ��+�.
+(��=Ҟ��cݽ;��ݻ�<� ��2�� (u�wf~O��ԍw
+�b
+�d����!-�ƚX��H����^K�l��O����!}���r��ۋr���lj1T�`9D� ����5�m(�Rө��cW�]9v� ��]�#�ڥ�5v�3����-M,�s��� n�k����cӓ�Q��1���t��%_�!����쟣�Na��5��>G��(o��4H�8(%(A�:Ǐ�RW�X9_����bK'�:�h�j�,'G&OC�I�1��`
+Vy���j�(�ʯ�w�Xn*��0������o�E���[�?M3�;���$I�R��?(�X��1�X�\�\�yb�I����g��e��B2%�U��� ���R��D�ߍ)����;��
+8{g��e?N�lS}gΘ�1;�f�G���cv N7hT��ߧw��Δ;S|.s�˲�Tf+x�I���,Ӑ^�x3�Hz�k���u���J��S��I��R).J���:f:��f�1;��d�5��3�
+]Hѷ&MOZL�r�����\����D�X4�#�N
+A���kFg��}�H)ޑzG��+�.������>/�~}���jڨi���1ʗ�g]��������N٫ӯ���Q1A�A��m��4¦!y�b���ۥ�$�3$��(=\�/v�Q�n5?>�/S������w~>Orn��Y1��g%Ϛ?+}V�<��
+�
+���hV��f�Ί�^6kͬu�6�j��B�� ;o��G��b��[���JD�l�:F��O�Z�7���k�P�����
+_��뒾b�w<�/%.p�4:٭rt���Q��Իۻ��n�ܶ�4�-���[������s�7��,���=^�3$e���(���E[��E�E���/zƙ�f\���~E�W��8� �DL���A�)~ޖZ�v=�㗝��z�sFR?�����'GP-B����P+>jt���+�n<��w�%��Z�6��e�dW�+[\R�>[M�jpU�ڏ]Q����^}o��w�ͅ�ݥ��e.����^���˥�%��W\RkFP���
+���[DMt�/�kK�
+�r��@x/�GL�L������Hs!�+��I0]\Ox�h�� �J�3#�����{<�j3�E���c�e�9��sB-�:��ʹ����$�az/���z�Be��.އ�u3�Ʋ���c>���h�g� ?�)��^>G/�2.g2T������z]�|�q��d� ����r�Ġ�1�d _q^7�M����<vX���;m�ۿ�(�2���$�7l�V���n���F��w�|j]1��
+|+�*���7z��D��昣a1�oB�
+(�ǁ%�+�m<�b49���� ��h�]��,|�����,K�-�a��L�/���6�սЪ�t��ЧV��+q�W 3B�4�(B����-9�#���Г�Qvq_�J�G�;��{3�p�Ϥ�F��$xN�|`�%��ހ��׃�zO����"IT��|�{A9�C���-I�O�ə�w��g�T<g�Gn�+HI��/�ə�w���G�d�53ro0d\>h��!8w0T�&��Pe4`8�-�&����r;Q�B��>=t2CPj+`�*�!��O�����2�$ȫ��Z�D��)��HE���P�̧S��g(�#��2K�+�{��KqBsQ�S�;�����
+�צ�a�Y %�{�V9Tz�g0i�I�"-O �"���wK�"���/����qEy�tΒ�(�a�q��s����� N�xM����(4� ��:K��YQ�[���O��࿃�Y�;�%s�3�?���˿ �q�?ynQ�G��'����3r���3���e�.�wn��O#m�I�Y�A*[-S[�'`�9���5�����cSS^��H���$�إ���*�]����*�a�Beͳ�:�s�B-R� <_YKu=ʚ(+6�o+&X������
+���/��x���X�+j
+C%��_AC���mL�3�g=I�"�}��*@2Aurs�$��!'2�4�;�1����'hEz{y6V���b(��$��%��A�]�c�]����4P�_/HxBU�Sz;Q{�
++`���E$xx�tePv����<�?�;_�?�o��R�́>�F��9�
+{��Pj%8#@�d�GP�u��R2�o����r����Z0}�(��=�Q�t�!-�
+��3�-�O�K��к�xw�:��vT�E]��h��s���Գ�����W=ؑ��tS��-�o��&�Y��� ���y?(�:�~�r6@�YP��7�3��-���!��?��ǧM��i��7M���^�|F�U���:�����NP�"��S�����<�}�Z�������� �*�Q���~�]��M����.�����ð��łw���,� χ���E��%��x��1�`L��uf��.�B�yE;�׀��-�Ӌ��`�}��k�_C/�[��#9�����[��Zm�z ������ƶ�����V����9��=�Zq�;kJ����4rs1S��\� �w�e�j�>�c�"�b�6~��a�x�+��d�9ƥX��Hs`� �㬿�+��a�"�9���7��E�g� 9�uk#��[��f*�8�Q�J������EP�������y.(;�l��41��ӯ��ɂ{JO���b�ڥ�o̩���5�\OƵ�@�2i�E15^Fn&C�
+����m��S��|K���"���O�j3C�~=ޅz������u.K���:�3Qv�Ŝ扨�7�?��Y�E_�>��;�I+JMA�OA9��薁>ȕA�����z�����9����+w��1���(�2O����L��w�4~i�5��Lm'j��Y�9��>�h0�ݰg���F�ه``C�(��%���>���
+��F���'�^���8�灿���� �ǐ��qP��O��0j�n�8��2��� ~�
+8W�8r͠�]�/N�L�%������>C��5W��{��3x�^s
+x>=��9��A�ݺ�����Y�������A�-��+Z�[�H8؋Z��>�+zOA�8�y�۠zJ��W���=M'��A�a[
+�oyT�"�
+h��x@�v�o��}�#��[���hc�i�� �i���R��Q��Z`&�/�z]%�<�(�+��-��.����*�O�ըż��QVM����螌9x�
+���s�#U�oG����e�o��v(q��'<��;@�&�_ �D+� ʻ���f�毗E�A�%���5�;�I�觠Æ&�l~�~X�C�)�: ƣ�C�˱���c���Z`C�(��%���>���
+��F���'�^���8�灿���� �ǐ��qP��O��0j�n�8\�,|������s%� ��#����2�С��~�G+�5���h;�s��C���&S��+ Z������L�
+`=������6�N�?��z��x~��E�С���_������'F"Wo�7(�і�ӐN|��1�"����Z`&�/�z]%�<�(�+��-��q����*�O�ըż��QVM����0���g��/��&���wA�&���ih��Ԟ�䟂���`~n~�~��C�)�: |U}}]`��wJ�['�eݘm���tcM��*֍��O7V�n�k����\ԍ5�kb7�n�A�X˺�uc���LՍ���c7V�n̊L�>
+��è��jՍ��{��?~�+�_�fP�.����L�C>Za�A��$@�9��}j�m�;�hj@�D{�^�z<�BC���o�ؐ��n����c������ ��h��~����*�s��t�e< zY;�7A�>�ɀ���[�
+�j���E�4���1�L��E������ ��^W (��#J�
+�hK ���($�
+�Sh5j1o=t�U��@<>id����}�� ʻ�@�AȌ�4�Z�gjOB�OAG[L��
+o7�|?Z�!䔂r���p �G�@.�K��_���o`C�"pre�c��^c�o���;k�?�x<��KSw3TN�t�=��z)�R2ʦ2�4�^��&�(��o�~��C5���_�qW.�ȹ�Eƥ��+~�_�6�,lG����0㤿K�"�%aP�A9|C�v3A��a*~s���G�����}X���jA�A������=zˡC9Z:V
+��6����w���e����-���4�|�<�;�]_�
+z��~öls�9ЭQ���9��}�P��E-�������˭�1N;|�×p�%��ah��(P��� �+\�ߞ
+z*x����=���O�g���}t�"�}�
+�ø��0���_��z;���}����c���<
+2!a�<]>���b7t{rRA?�F������v�����$(��|A�>M(��N<
+ɧq�#�}�xt~=�.z��><��>~x�iH�:䷁���M�"��><��'Y�������o�����w��K�C�����<�2�Q*���rHk��&H+���<��,�,�"�/5�.����fh�g�1��6|�Ļ�c��z�HԵ����n���p��.h
+ ����sZ��O/<�M�.�:o��#T�B��2�4������CƳM����S�=J�
+�t�W�}��M}Dy�q����-��@�
+_텇�B��0ӯ MoK�p�3Y���>J��\��#ĿL�7F`������f���nbH���N��������|8/@~
+�Z���q5�S����h��/�c��L����!�jF�Gy~�R�~�Sԛ�8��>�v�/\��}JK`����� tN�\�U�eH8S�uȜ�q�iN�K����u���w���3'����`�x���An��xT�L7[�&j+Zz�8W|��f�Md[?�ܜ�m$wa�b�����2�T��z��D��������t����{�GϢջЮn��i&�3F�A�W��QV&�ZC-�B]G� ;A9��N�U,��&����N��E�Q�A�Mhu���U���i�=;p��m�3��Or.i����܋mnh˵�����X��j
+,_
+?�Ε��|�����T���ߘ~}��:����X�q���̰���=���Z��p��䅲�p���X]O��4F�4���Ϸ2T�?���
+�G
+F�9����3�_ �`���T��K���x��9��/{ �Eр}\���#�^m/kN�,�s����Mւ'e���zO꾴e�!3�a}��=�ʅ�0^�����zSf�|���
+����?L;&���W3�f�.���*��Ă�bX�y�sE=�}(���~�ׯ�\��2/̙X�Xg�n�S�� g,�m9 �$j���
+��b����K��5ǎ����QJ>$o�?��Y�u/Kv���,�����f~�
+6�Ɯp���{�=hK/t������-�������f�0̮a�g,̔�n��\���
+�/p-4��r
+c�ֈ�.P�/�腇�dX�(ʟMA��x���:knj_�i�7��V��
+�I3*����V̖S0��5�]�6��ΔE�+*�O��:�i5_�a~>
+���W[������[�#�p���5Q|>G��o��o�7nЏ�R<�M(�L�.�b�/V堯Ǚ�
+�,4β��6�0������Ĕ�9Sw��0ި�=�0L��x�U�����l�Z�H�Ʃn�I��V�s���� 9����ߡB��R���|g�[��ZP�Eh��t�>t�^����
+���J��_~�|�9XxgKZ�Z�y� �^�#����8���Y~��ƙ
+�+���
+��24<��gb��~�G���/�<���a}�׀^��f�ɋq팁��H�ϱ0E���4_�T��-K8���&t���i��u�-F�z�2��~_�s+���x��S\����-�i��V�ehA/X0FL]��n�7CsS���
+�'�ߎ����/A�f��-��Q?#��\l�
+K^��`;w�P���x~%,�;6L!~��y7���o��
+�+��G��\��揁s�F�SR�迪'�O᫉�%=��dz$����0�Z�rt�7�sV�&e�(蓋֭1�7�k�Sd��}��>���O���]����R�Ŧ�$˛-%�"�fܽ�O2���_�M'���)�p/[LZ����B���4[��h���}�)�>!c]���H�4���Kh?��d� �q���P�c>7�}Dx�6@���s5���t;8=@ ��V���
+U3i+���t�ǼO�f�dc���_H&�WI��a�g�K�;r?�S�#LxƄ5��<��<���끋��=�5~���+�Z���o�
+}1�[�����>`h����'~����p2v�3�:�e��8��J�`���G
+᳦8+x�m��9�^�����[^:���ǔ~<!�|���$�L8 ����V�c��
+?���~�[���L㩨~�O���k>Ƴ$�8;=�M*���I�M8��8����1퍾�����}8�f�瓏1e��O�IG�����/aH�r+f6��xb�x9�i��n��<�e��|
+��!�:�>p��
+�Dg|�a%���y�|��\Հ �=��}�i�c�d��0��s+ŀi�'�@�L�$0��2C�i�6,�:�B|���F��
+��8}p��N���9�xΥ'H��L�ǧ���Ǡ�l��b�}o�b7p�^�0�hL��)3���YkH��kN4I�J�fN�L�J�~
+��zob��w�+�:^'CC��58�@`z��R��u6<�(��_ℒ��%��E���� x^Do��%���|�(�u����Z�G��i.%��7/#G�i��=\LSD����Q��5V�� �~1U|��ȳ�ALc���=m��`~���,�)�3,b�W�bړO�Ii���9�K�=���b��X�� p+`'���K
+�~]�x��,-�ހ��K����C�'N]Z��L���
+�h�7�.������'䕀��w>�d����a�6���O-Y*w����Ȣ�+�}�7*�R��<��c�P��u����yJ �|yR0yF�X(�L��x�p��I�K�Q��R�a�0~W��!�ȣz}"��� ��+�����x:T`m�:���O�"I4�f�M좽�AqT�����-H!R�)EKqR��&-��eR��,m�Z���a�C��� 9L�$O�c�9UN�s�|�H.�w�{��E�|]�S��0e�2U�Q�T%]�Q�"�\�V�(�MJ��]٭�S)mJ�0��N��ۧ��(�E���a&�k�K���X֭�$�����iK����#�c��:��{=�yt{�yZ<=#=�=�=�=�x�x�z�<�y�K���$�y�W�W�^�WA��v�#m���"��=�_|�4(P�"(���f�;P�O�Gpp����w�-�>d��{��m�����ԯ��0���˽
+�6�%�;�=�K���G
+� ����Ɔw�_��N�0uB�� ��O�>��S�F�"#�"R"�"l��#�F����11lb����e'���'�i����>�#M.���|�H��t�=�ݢ�qF���4������m�k�;w.��L��3f.�Y/Q/7/�H/���&�/�@���&�1��4j�)�-'˴��Sd~��B���e�kB5���q��7t��g>m>-���b��L��v�M�Z�����i�Q���)yO��Oy<%�y�xK<���_�|���co)D�R�L�ݣE�Hib���D���PD��"v�V�Om�Ct�n�#.�^q�6��<(n}n��JH�Ye�Z�*��r�jH�e5!�f5#��jAz�Jc�ri��v��ݑ������V/����՛��G#���5��Z}�^��F�Z����};�Y�^�ށ�Ck���;���0��b���L D��c
+��gX&ذ�]TO�5İ�݆]B
+��c�%̰�W��7,r�a�p�"`��"
+�L2,r�a�ɆE�E"
+�|հH�a�)�E�y�S,�I���b�M-2Ͱȃ�E�
+�|Ͱ�t�"�"1�EfkX�a�2q�ef�c�
+��2�`�e�a�D�"I�E�
+��1,�bXd.,�jXd�a��EI3,��sX�X��"i7]�%�u�a�G���0,�iX�QXd�a�,�"نE3,�cX�qX$װ��E��yҰ��2O�c�
+�|ݰO�a���]��Z�v�a�B�.�
+��v���4h�b�"%�EJ
+�|ӰH�a��H�a�oYiX�����T�"��E��T�1,RkXd,RgXd�a�z�"��ư̷�1k
+�d�0�OG�x�*2=h�57�w�)56ף�kD[e`s=�k�j��Q��1��x�y(�٧Q���t�K�~��k=���������`M
+�5}g��u�5=g��ca[��D{���z4k!�K�I��軃m��{�m���A�5zaP�̓�<�Q�F�jD�$M�&��}���"�+��u�K��5B��N���`�qR0�\��/w�cY�U�0��r����&��*�F��~�,ڸ��U�7�K�%t��u~]-W�%4զV ���pW��n�"%���ҕI �0�Fa�(�#�,Mx(>B���N5��٠d�B�V�,��e�%!��dP2��[Û'��
+1ezQ�?<Q�Q��se,���9���^֏Jgp9�L��e�k�\���z��=4E����ꟅE�#m�ؖ|�Z:o�2
+_��(�o�'h��E��bv�J�q�;����{�R�S���~W�U���"'���J�����Q�w��@!����dNF�%z���Ie'�&���_q�I>qU�;�ge��G�e�W��nG�b���̛�d�P ���N2�"�MD��̍�ߛ�(3�������d
+�('�Q���A�$�/�)���$�E=���k�ow����/��_���:i�[ta#�S�Ϸ1ZyAyA�(/)/�1�+�+�W��q��C��OyUyUܮ���&�ו��ʏ���'�Oĝ��"P��31V��s����%�)�T~)��_+�w)o+o��]�]q��[�4c�^�G���i�;�H�h�C��GD�5�bB�!�����& `BADTt
+W"�"IEDAE�1!bX��9�5���齻7�o���|���OwuM�����n�F��j����&��>BM�'�d�=㞡f��jν�^!+R��"k�4���|1R�%| ��K�Rd�_�!{�9�o������O�'��� g��
+��D��f1�Za�5��z�
+��\�+Q[\
+WCn���v��!w\�A�q}\u�p#�[bK䁭�5���Ď�u���u�.�uŭqk�
+�bW��a7�ݱ;�;��{`�{bO�w�]Po�
+wC}��B}�7�F>���a���x ���!h ���h�A���#�`����C�P���0<OF~x����t<
+�3�L@����(G�h4/�K�H���(���h��Acp2NF�8���8g�q8g���sP(��yh<���(�B4���P8>����>�"� |M�E�MƧ�i4��gQ$.��h*.�%h.ť�'| _B��|��W�U4��7�,|�FQ�����#�����+��G.=h����>�o��p;Z �{��žb_�P @��d1E��b:�3�+f��h��#�%b������b>Z&��h�x@<���#��B<&C�� �Z)�E(�>�K��Z�$^B��U�*Z#�o��b�X���s��:��%����(E|-�F��{�=J?��P��M��+X�6(�zh��@a�2�B@��)��Y�I� m�fI�P�4W������|�--���R��r���b�MZ.-Gۥ��J�+%J�(OZ+�E;�u�:�SJ�R�.)MJC��Fi#�-m���=�Vi+*�K�Q�t\:��J��Sh�tN:��K��tY��J�w��Q�K_��舒Q2�(i(S*
+�q���� eUeUtRY]Y)P��N)T��N+k+k�3�jc�b�z\
+�*��5�l8{>�[�-�Vr��:.����r��n?Q���)�w���]�nqw�Tȑo���2�a6�
+l�MpM\�c�7�*�������}���p��$�8
+��q,^���j��S��g��x'�ß��z�����3����X���*n7���vq��G�'O��b�xE�.��Ň�S��V� ~Q �PHS��l�gi��BZ%��6IY�6�tR:#��.J�H�J���JN���U���D���#PyT�}Ǡ�z�������h�ڭ�@����U@��@���FW�6�6��m
+]4�&h���f��?�F���
+]Թ.��9�r=����c4��m
+��1(lPئ������@a���Z��Z��ڀª@amA
+�@
+�A
+@
+[�:�:�:��5t5lj�
+��+�a[PC7P�v���A
+;�v5�5�j� j��aWP�n���A
+�@
+{�z��]����(Z_P4P�~�e�A��~
+����5�k��PЯa�_~�_��V�A�@�A��@�F�Z��j5�j�U0��XP�q�V!�V��V�A��@�&�B��BMm�=�z4�h
+�N$��TНi�;?��Lݙ�3tg�N��lН9�;sAw����Y��3��BНE�;���ϙp���%����\4��K��p�\:���q�\!w�;�Ns�\)w�����ʹ��s}J�|˟��WH��!�pU\��k�z�!n���-n���x0�Á�ލ�!x�����L�l</�r�'�u8
+o�[�V��w��>���lj�HDe��N7^,�č�q��+����a�x^�(�"����G�3��N�(~U0
+���i�Li��PZ&�K��
+�f)[�.����R�tI�*}��(��W(J#�����T�*�?���*�L�>�g��W�K�wӃ7-�6EGZ9i�I��1�Pc�4�0�TM!�.�x8��Ǖa�UBzjtt���-`o#��ݗ��I%7������p�����Z�����R���γ�x��CZ�a����]��Z�z��>
+xN�Ξy�^N�~b�t�o��'�r�]j����]H�N�%����8��&����9��[��W��l�#�a=*�F�hX{D$�>`�&:� b+!���D�X�������v`>�؝�� �m�6��U�kN��$�gu�*V���F�c�ɼ�{�8�6s�Y]ɠo�X}�1ǘ�$]������
+A[~L6�ʐ|fL`B�}!��;��Z�%1ә9d������F��<&������%:L0Ӎqcz]ѝ�e0Ѱ^�ӈ�~<��2I�(GF �`Z����(��j��K�RE�9��p�=�]ٮ��Đ��l"R��=���N2�w�V%-c3��F�l�l���ݬ��@ݶ��_}{)�&��U�A�M�[�{ 5f��eȖ����a�ar���Al�[{���Vwv= �F�Gk>�ݴ��t/R1��('O4j}��sAKX}f��)/�wNC(P
+�K[ �#�HzLM���c��UU҄u���nHJIo'E���^D�e�t՞U����MϢRt�F�a��RoyR�F�̙�Lƚq`\H�� ��ӟ�0��P&���D1�X&�Y�$3�LR�,)��1DCX�������.Zv)Kt�]�.'���
+���e����x��,Q�(�U47Hi�l"�;,oO������pQU�� r!V g�,���EX
+j�L g�w�B�K�
+���=�+A��Y���EX%�&�Z ��5�k ��& ��:!�`��B0�(8+�
+i��Y!���h���mì����Y�6�Dj:+l&5�%�D\A�6.ƓZϒ�ߎ ������Unp�j�� �|�2C�q
+��C4E����(��|Ƅ��'�OJ8��a��r�[��c��A�L��y�Y�!�r��'�͍��pI\>W�=��xsޅ�Ï��|!��l�]q���|_�o�zM���|�"��m�;�wS�~5������#����O��105Pt10�n�`����}Cdhf�`�e8�0�p��N�b��/���^B�0����Tx.���֢�*.��}��B�h�pST�+b�C���d)u��H��eR�tL�-}R�(���J�4e�2��RO�+�-��j�`b���1���+c���2f 0K�Y"c����2f0ˀY&c����2&�8`�d�
+`V�B��L������`%�L0 2f0��Y%c�I&Q�$�L��I&��
+L*0�2&
+�4`�dL:0��˘��f����`6Ș��lf���&�� �M�l�1����f��-�l�1��d�)c���&K�d�
+L���
+�V`�ʘ`r�ɑ1ۀ��6����l�1����+c��&O��f0;d�N`v�S��f0�dL>0���˘���f����`�Ș`
+�)�1��S(c����2� 0�9(cs�C2�00��9,c�s�#2�(0G�9*c�s�c2�80ǁ9.cNs�2�$0'�9)c��)�HƜ�0gd�Y`�sVƜ�0�dL10��˘��漌)��s��\�1��S*c.s��2�0���$c.s��2�
+0W��"c~�`~�1W��
+�Us
+�k�\�1ׁ��us��ܐ17�� �Ms�[�ܒ1���
+�ms�;�ܑ1e�S&c�s��2��r`�e�=`�sO���>0�e�`�@��~�M�}�e��+DSdjC�7C�7C�������T��h<A桀-��"�<��P���v�� �P���Cd
+x��x(��C/=ZE�y(�G�2��h<A桀�-��"�<���P��=�h<A�@� ZE�y(�c��H��2||A�@�"�"a�Ș��f��I& �$5D�"�j�T������h|$A�#A�&ZI��H�ˉ�Gd>�|������h|$A�#A)ZI��H�k��Gd>������h|$A�#A�+ZI��H�H�H��GA��������_3����1C��3����1À�0��0~2�`�e�ڏ(k?"�ڏ(k?"�ڏ(k?��*DSdV2m�iL�
+�+0�2�-0m�i+c܀q�Mƴ�0�d�;0���"���a,�
+�Y�X��{A߹7���xP_҃ނ|`��]�0z?���
+�M썘��'�i�HK���Ν"c��C�6Kr�i�D����.��K&\ǚ1�&��SǞ�x���:օЦ2I趦Ϊ�aU�8�M�/C���]�Ou�:��*���Vk��7 �!-��n
+m�Ύj�,��әv)_f��N@i��[3�t�9�>Ð�=�7���yv�;fw���:s�\a
+�r�؋�j�`o������k�!%\�6���ح�V��\C;Dj%�^"m���5�D��3]Њ`Ί�O�S�h��2� gL���i��ļ9m�1�]!6�z=p$Grp$Gb8R�!��w�I��DA��\���5�J:�m�z���`����Ωu��*Q���V{1��~f���~�����)�#�_�Igd�b5 q,�YW����t�����!�י����:�|c����u�t�F���dV:3������Jks�=�\ٚȬ�ʎƑ+[M��?�1ӒM%-B]�����9�"^����Dk��j��J�H�m��ϭ�Ю�`��h�0ʀ_�.Q�C�.
+ۄ�ϐ"��_��71U�/�O���p&����c��e�O"��f&���2���Y���
++˞2���7�gֈ�I�� k�:�.���vc{��i��͆��4X1K�N��m %���g�G�"���~��2�!�}�~���)�j\M�g�:r�9wΓ���p�a\̅q����n!�����p�\��y��w�;͕pW���
+<�^r�/<��Jބ7���F|sގw&e�JH]Z����.�2c���
+@(ʒM�,i6J��e�D�4�t@(]v�F��M���fffn���00p�N�]����<x�0������< Xx�,�9�b��%�K/^�x������� x�6��2�����>���Sԇ�f�c�K�eB�P����T��B�P����Ӓ��u;_
+u@X��h�P7��ʖ/@��nP7��
+��m)�8p��������ek�6���m���S����,%��ɿ�q��Y���l�*ʬ@��r��_%F�M�2�$��alE��n��X3�T~zB3=�g��X�O��j�c��Zgf-r��M@!�a
+D��ߕ~T�t"�M��t����sv�_[����U=J�VEq[�9�aYc�[�����@�T�6�&�����z�l�ƪ�t��X��7a�q#�C����Ԩo��+0`lȸ�:�Z�"W�>jxXȄ��p��!a�!a~���Tu)���h�;�ol��w�v�:5$[{�����J�l�b �tP9j7U�r�#)�T"�Ec�{�^��U
+՛uƵ:20̼C��{{��;wloe�j�`�d��`�P�@�j��/�1jx�*�����F\S��F1�g��%�7/��p���u!�?j���JCו�6�nt���f��<�ܔ���yQ����I��<=��^�B���)S�_y:�˙���o�K�<áOڝ۲�aP��]5?N6�<��"{ߟ��8���$����S�Ό�_��o�mq�j���M?r��#��v�;|Z9�×�)�Z�����!3O�9�_��{�q�s�v�u�R����1[�F,����M�:��/J6�UuϬ����u�����}ݢ��{̰9g4جc���P�q�`ߒ�a��繤�[�Ͱ�iQ�!���M����7�M�vu����\���9|@�Y͠�n��T��4i���^��3���s��n�[EՇ�P�����)���#��C]ll��[��('��!cmBnj�V�а�����'�h���""���dU=�01�g����ʳb[��k�9�I�~��a'�p�1MoC^�*��~� 9ZK��{'_��U�m]aC3��#�[mS�h��P�QO/t;��zB���sأk���~˫��co��o���3�-�]�8dO�~�⌒��t�����=~�r{l�P�W-k}lZ����z���u4���Fk7�=��є���#]��1�����*����M㗄u���j���f ��\�p��۩3�(��-�u�l�p�ʨ�������e>��zW���-f�16��ey��5�}fdU��m:^���E�?���7�6?z��V;�CY���6����o��Ym"cO�����XNխ¢�V�n���VƦ�GĢ����ћ����G�Gb�2[;;;{{�j!s�n�f��!d�ݹ?��
+�í���҇&�
+��YϟDd6�����O�����]߳�C����mj��t���YS��#�G,�i�r��'w.7�X���Ɖo>X%�sl&�}��j�n߉�M{u-�?�����w��֮�����6����ϝ3�����K��b�W�B���w�N_m�F���mjq=����]K�QלW�v�Rd�;�GZ[f��YWYg硭yJ����v�0e��kg?�Nm��ɷlzn�&��ܮ2���,���>9~�ˉ���\�~����m=���a$G|��r:j5`��ݯ&���>�ξ���ڽV�tU��E����oˇ����-�m[�l��!�/H��dk�`�d���go��H6��Z��;8���TՇE%y��N�����|��CE$0�H༎����Lj2��CU�V�Vv*[H�@ �Rԑ@�N� ����;���,��uq�']J;t7Hz>���A���c�F�LZ��F<<#5�U�=+Z~�n�I|;آʏ1��L��u6�d��;�dQ�O#�$}��ӿW4��Ե�7}����Ǩ1I�,�\}�|kB��f�]�^M;`2��L��>�l�|�����HN9Ұ�Gv勪ܞ��>ʝ��d�.e��o��~O�]��l~�o۴�%n����7y���.r��gv��]6������;}q��1�__8���}De��.�;W�lt.o��` ��B�w�j������f�[�
+�!.k������L9��?�jȌ��r��R5S�E�.�
+ !�@
+jTШ�~���&�� >Č8`�vv�-�툘�i6���_���H��
+��A����a���"z��x)��W��|[ijt�K�l�]6�vO��<����b�֢��sQ�y�/Gfv��~�;�_����ډ�m��a��Y���}�~ҷ��Ymn7��l�� >�jĕm�|)bh�Ig�u6-�0�*�~�(��?�ߖ�7-���s�D5�CI���S'�z�z�nl\�:�ԨI��N^m���,9��7���'��%����r��J��_ul� ���HI:?(�Q����8���9)o���I1��.�i}0�p(w�B����B��a��Xő/��]%�bU�
+ϓ8OUM�P�5���"&����X�����h�; �Ze؆lh]x�J�v'�W�Po4�tgڣv2-SfF
+s�i��^C�/�w��+�����Z�Y�I�1�}r�ym�y-��a�jS 룣b�*"�:*��8r��W����2h@K��<�> q�f�c���ο>:�Y�VV��g��N=��Mkpz�w��z�3��tۓ���nhA~އ);:�����;��N�_cn�I�>�s��n����R*���v�®�^�p_��͋�w��uh���e�s-ӣj-/�ӯ���CtJ�C��K�N�X�8l���fj��}i����}k�I���x��>R{���(��ύD�c��o�f�Fٍ�¸�ɨ�R��;��H��ڻ�O�:ǽ��ۥ����œ�k�la:���ڝc��e9t��ܨ�|�Šzg�>����1Vi��fZS�5a��|��oY���b����z.m����M��Ü��
+��zD��^�c�M�(�0��6�G�����.|n~��¤L�qc���w6��(��)p��W��S�g�S��ckʹ�[��s�^��{����{�ZOۏ�E��h�x���W����X/[�]�25{��ي�VcP��צSߛζؽ���N�6�����2������'�k~R��Lk��u�}Tb|�Q�Q�����mTQz�D�_T��H��Z�~��T*��-�U����M��&�]w����m��y.��6��;{��]ճ�w��5�,���|��p�y�'���9�G�e� ��FWј�S�>�Y�ʯJ>��ϧ랲����������`A����R6�]��9��![�s��ԏ������G�y��xX7Μףo/E9����%KT���Z�i�뭜������c{�u\��u�T�qӠ����fuI�8gc�N&�Q��<�;������\d��x��f��#V}�m�3���Ӊ�Z�^����-m��k�v�l�}�ć��꽅��ƿ�������zR�JP��%�Y1�/�)������3�hJ�iJ���Y�&��ol�����S]w��F+��:8�x��5���)=�3۬���0�rv����֥�R�����cOy�{���V֯`k�յ��f�eL~���i+�yپ�>�Y�w�=�,+3��̃��^����-�������ɫ��_��Bkz��#���Oi�f��ў����mM��-�7��xڶK�m�fa�ǡm���o�b_^ί��kь�-�
+I����'�}ji�z�UE�}15e�U��w�w�ϵ�y�q��=}�
+��l٭���kF�7}����Ao����6u�֍z)o^p�}O�q7=#�E����
+�5�[�?У�IannN�'ֹ�9��̤ꪠ��Ն��H�_���f�
+�z�n^z�nf�F��C>�y��檵E.!{g5�<���Ĩ�����6���)~y�R�7����e���킷���Dt��A{�֞_-�mc�u����z�v�
+ϛ�����Ό�Y?yKnr�D�_��7�X��.�`\���_�)�w�I�'W?�|�W&0�g��N��x�ʳ�M�+����ǔ+�l��Z�5s�8�mO�0��ein�����&���ɳ�PwMS
+9[��5I@�h�T�թ3Xq oKD����EǍ����Y��_y[!*@�����O���&�;���0��A(��>h
+
+%[#�ݏ�F�))�fZ�ac
+�2"�/t���\T�(e5~Q�,Y/��Ԡo��ա{_o:��uq���&�<�Y�H?�Ŗfy�m��5��5��R����ƿv)N���yVy���@�E��dV�}����>���F<6nxk�EvpF���/���lc��rn}0e��7U�'�;�Ro��4O��U�H1ϯ427�Χ�}��#��u?�ZaYڶΙ�\��5g��4:c�wFH����-��k��4�e� ����G���wqt|��c={d��;p�����Vq�ӏ��lc���#���j������R���T���)QlUkQYFz�Qlub�
+�2�/�~FB�NV�ԭ�b��
+CN�e�mts�u�ul���4�ojd���)�i�ޗ�6�����öW���^Ӻ{���`�>ױ;7��2vL�81o��7zy=/��J�70̢��.E~_|C�~j� �x�2���G���?�^Ttf�F���$���R�A��]���Z�d<п�*���ߺo�3�ǽ�)��!�H�kzb��g��q�1�w��4�`}~�۶%��l�[�����鋽�X�;��ʩʪ|�)��N�
+H�tm�p���s7�>Ъ����A\��N����vƜ�k�a:�K����e�^�n���04qZ�Q�=bV/�w�[|��\��PK���b��PK�rGUDocuments/1/Resources/Fonts/1FB72A15-96C1-4AAA-948A-3CD37F439BCD.odttf/[1].last.piecePKPK�rGDiscardControl.xml/[1].piece]�A� @ѫ�H
+��.�0����Ċ�q����n�&����u����s ��BI*yQ�u5%8�P�{^��}�0\�
+z��00v�Ѩ�c4Vh��B�k[�)�39�PK�ފ�s�PK�rGDiscardControl.xml/[2].piece�q�,NN,JQN�+��K� HLO�U�w�O.�
+�ꃄ����
+�%��Ģ��45A���E�@un�`7's#GCS]K3gC]GGG]KG]cgcs7cK'g��4%};PK��j�r�PK�rGDocuments/1/Pages/1.fpage�[]o�6}^���l�L�TH�+�lAӮݰ5V��J��ԥ)t�=�m ��K�&�sϽ�g�m�8M.��}�(�ơ&2~K�˫b,L�v�̷��(�����U�J�h��o���E�����vH1C_8X&��8���g?>����ӳ`�>�Y�yL��tS����ɯ�4O7I�.���m����%ƈH�y0�A'I�)�o�|�n�n�|{�ެ�YG�X�ŻM6� �!�I���y����Lc�c1PӉp6#��u<`�cAf�l6��h�(�N*�/�Wg��t2���apV�-ӳlu�L
+�����<
+�?6�e��
+Lj�ꃿ��:_d��!ő�#1b_舅�<;_/ҳ�Ni���B��Y��86��k8ډ�CWVC�%b�����S�; �R�͟�FR��i Q�"brd�3��='C�.�J-�����p�� ̽�h�KDy=�HW���@��o��k�Я����y���ߞ:�=��LG�4�~�8��E�cQV�!i1nm{�أ��_Q����z�i����0��T�A,'d���1�G6�25�,~9��?a8GZ�~�:�7�b��N༙�]�lL�w.ޑ��+O�J�Y=U���V��]2
+2��f}�-�BC�����us�[3�veg���V|
+G�pM���Z�ٕ�|�kǷ��M�|�;є9�4>�)�:�~M1A��D32^��_���[\��2�������Tx��2cZ�*�4��[s䖆��w���c�d=E�.�!��F>5A�h��Q�ݺ��[n��έ��������s��5<����R
+�I,|C�TLQk h�*+���@mͬ�.v\���E�~����pZA)//!���)��q����fBqޔJ~B*� Θ�%u��l��e���˻�L�L������Q�)������*��;�f�-g;��E�.�j#�%��R�lζw>�Q�='���~�3k�/;�뤌�e��w(%����mk�H���>�Hܬ}~��ߎ�`���?.�[��K�wo'��r�Hs���6��s�b��c2���6�2�7L��ߨv��1��1FRJ��e�RFh�@i?BJm�w6����7�4Ǹ�U�m���$�D7�{�@�'��9e�b�}�(������n���s��r�5S�����{�����A��C/������w��]�N74�ܜ��uu㛑N��79�L]?��Q��vO�E�A��M�U-@�u�t��4�p|��k��C���ų��F_<�PK�/��=:PK�rG.Documents/1/Pages/_rels/1.fpage.rels/[4].piece��J�I,���+��,(�PKg!PK�rG3Documents/1/Pages/_rels/1.fpage.rels/[5].last.piecePKPK�rG(Documents/1/FixedDocument.fdoc/[1].piece��wˬHMq�O.�M�+�PK^�=CPK�rG-Documents/1/FixedDocument.fdoc/[2].last.piecePKPK�rG3Documents/1/_rels/FixedDocument.fdoc.rels/[2].piece��J�I,���+��,(�PKg!PK�rG8Documents/1/_rels/FixedDocument.fdoc.rels/[3].last.piecePKPK�rG%FixedDocumentSequence.fdseq/[1].piece��wˬHMq�O.�M�+ N-,M�KN�PK&XaPK�rG*FixedDocumentSequence.fdseq/[2].last.piecePKPK�rG0_rels/FixedDocumentSequence.fdseq.rels/[2].piece��J�I,���+��,(�PKg!PK�rG5_rels/FixedDocumentSequence.fdseq.rels/[3].last.piecePKPK�rGDiscardControl.xml/[3].piece��w�,NN,Jq��+)�ϱPK1.��PK�rG!DiscardControl.xml/[4].last.piecePKPK�rG_rels/.rels/[4].piece��J�I,���+��,(�PKg!PK�rG_rels/.rels/[5].last.piecePKPK�rG[Content_Types].xml/[14].piece���,H-�PK��8
+PK�rG#[Content_Types].xml/[15].last.piecePKPK-�rG��X�jq[Content_Types].xml/[0].piecePK-�rGK�jbl�[Content_Types].xml/[1].piecePK-�rG�BpJlyb_rels/.rels/[0].piecePK-�rG4 u�_rels/.rels/[1].piecePK-�rG��[Pm{�[Content_Types].xml/[2].piecePK-�rG��x:��%�FixedDocumentSequence.fdseq/[0].piecePK-�rG�s�}hv[[Content_Types].xml/[3].piecePK-�rG���(Documents/1/FixedDocument.fdoc/[0].piecePK-�rG�jfm�[Content_Types].xml/[4].piecePK-�rG� 1�p��[Content_Types].xml/[5].piecePK-�rG�BpJly.TDocuments/1/Pages/_rels/1.fpage.rels/[0].piecePK-�rG(�Ѱ��.Documents/1/Pages/_rels/1.fpage.rels/[1].piecePK-�rGk����
+ [Content_Types].xml/[6].piecePK-�rGL���.� Documents/1/Pages/_rels/1.fpage.rels/[2].piecePK-�rG�n����
+[Content_Types].xml/[7].piecePK-�rG�+��t��[Content_Types].xml/[8].piecePK-�rG�BpJly0g_rels/FixedDocumentSequence.fdseq.rels/[0].piecePK-�rGn� +ks01
+_rels/FixedDocumentSequence.fdseq.rels/[1].piecePK-�rG�~�u`f�
+[Content_Types].xml/[9].piecePK-�rG��Y�y�Metadata/Job_PT.xmlPK-�rGJ�g�s��[Content_Types].xml/[10].piecePK-�rG�BpJly3_Documents/1/_rels/FixedDocument.fdoc.rels/[0].piecePK-�rG�?tz3,Documents/1/_rels/FixedDocument.fdoc.rels/[1].piecePK-�rG�L��gm[Content_Types].xml/[11].piecePK-�rG�C��T�Metadata/MXDC_Empty_PT.xmlPK-�rGe��sy.�Documents/1/Pages/_rels/1.fpage.rels/[3].piecePK-�rG���R��{_rels/.rels/[2].piecePK-�rG��0XZA[Content_Types].xml/[12].piecePK-�rGI�X� (�Documents/1/Metadata/Page1_Thumbnail.JPGPK-�rG��juC!_rels/.rels/[3].piecePK-�rG@�~^l�![Content_Types].xml/[13].piecePK-�rG�,��kv�"DiscardControl.xml/[0].piecePK-�rG�eG����PO#Documents/1/Resources/Fonts/F1D97895-7DC8-43F1-BC7E-3DE51FE3FF2E.odttf/[0].piecePK-�rGU�Documents/1/Resources/Fonts/F1D97895-7DC8-43F1-BC7E-3DE51FE3FF2E.odttf/[1].last.piecePK-�rG���b��P5Documents/1/Resources/Fonts/1FB72A15-96C1-4AAA-948A-3CD37F439BCD.odttf/[0].piecePK-�rGU�Documents/1/Resources/Fonts/1FB72A15-96C1-4AAA-948A-3CD37F439BCD.odttf/[1].last.piecePK-�rG�ފ�s���DiscardControl.xml/[1].piecePK-�rG��j�r�W�DiscardControl.xml/[2].piecePK-�rG�/��=:�Documents/1/Pages/1.fpagePK-�rGg!.
+�Documents/1/Pages/_rels/1.fpage.rels/[4].piecePK-�rG3{�Documents/1/Pages/_rels/1.fpage.rels/[5].last.piecePK-�rG^�=C(��Documents/1/FixedDocument.fdoc/[1].piecePK-�rG-F�Documents/1/FixedDocument.fdoc/[2].last.piecePK-�rGg!3��Documents/1/_rels/FixedDocument.fdoc.rels/[2].piecePK-�rG8�Documents/1/_rels/FixedDocument.fdoc.rels/[3].last.piecePK-�rG&Xa%~�FixedDocumentSequence.fdseq/[1].piecePK-�rG*��FixedDocumentSequence.fdseq/[2].last.piecePK-�rGg!0E�_rels/FixedDocumentSequence.fdseq.rels/[2].piecePK-�rG5��_rels/FixedDocumentSequence.fdseq.rels/[3].last.piecePK-�rG1.���DiscardControl.xml/[3].piecePK-�rG!w�DiscardControl.xml/[4].last.piecePK-�rGg!��_rels/.rels/[4].piecePK-�rG�_rels/.rels/[5].last.piecePK-�rG��8
+g�[Content_Types].xml/[14].piecePK-�rG#��[Content_Types].xml/[15].last.piecePK77)�
diff --git a/md/dim.feed b/md/dim.feed
deleted file mode 100644
index 0b9756d..0000000
--- a/md/dim.feed
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
- tag:github.com,2008:/organizations/GistIcon/usernamealreadyis.private
-
-
- Private Feed for the GistIcon Organization
- 2015-12-02T17:16:20+07:00
-
diff --git a/md/index.iso b/md/index.iso
new file mode 100644
index 0000000..2c37594
--- /dev/null
+++ b/md/index.iso
@@ -0,0 +1,4 @@
+
+
diff --git a/md/rb/Syntax.rb b/md/rb/Syntax.rb
new file mode 100644
index 0000000..1ddd833
--- /dev/null
+++ b/md/rb/Syntax.rb
@@ -0,0 +1,3 @@
+aFile = File.new("filename", "mode")
+ # ... process the file
+aFile.close
diff --git a/md/root/latex/main.tex b/md/root/latex/main.tex
new file mode 100644
index 0000000..1a6ea5d
--- /dev/null
+++ b/md/root/latex/main.tex
@@ -0,0 +1,34 @@
+\documentclass{article}
+\usepackage{graphicx}
+
+\begin{document}
+
+\title{Introduction to \LaTeX{}}
+\author{GistIcon}
+
+\maketitle
+
+\begin{abstract}
+The abstract text goes here.
+\end{abstract}
+
+\section{Introduction}
+
+
+\begin{equation}
+ \label{simple_equation}
+ \alpha = \sqrt{ \beta }
+\end{equation}
+
+\subsection{Subsection Heading Here}
+Write your subsection text here.
+Example: Accessing a specific authorPermalink
+
+Pages and posts can also access a specific data item. The example below shows how to access a specific item:
+
+
+\section{Conclusion}
+The File.new Method:
+You can create a File object using File.new method for reading, writing, or both, according to the mode string. Finally, you can use File.close method to close that file.
+
+\end{document}
diff --git a/md/root/test/ruby/Library/class::Filddle.rb b/md/root/test/ruby/Library/class::Filddle.rb
new file mode 100644
index 0000000..d01a6f8
--- /dev/null
+++ b/md/root/test/ruby/Library/class::Filddle.rb
@@ -0,0 +1,76 @@
+**// new(lib = nil, flags = Fiddle::RTLD_LAZY | Fiddle::RTLD_GLOBAL)
+**// Create a new handler that opens library named lib with flags. If no library is specified, RTLD_DEFAULT is used
+
+ static VALUE
+rb_fiddle_handle_initialize(int argc, VALUE argv[], VALUE self)
+{
+ void *ptr;
+ struct dl_handle *fiddle_handle;
+ VALUE lib, flag;
+ char *clib;
+ int cflag;
+ const char *err;
+
+ switch( rb_scan_args(argc, argv, "02", &lib, &flag) ){
+ case 0:
+ clib = NULL;
+ cflag = RTLD_LAZY | RTLD_GLOBAL;
+ break;
+ case 1:
+ clib = NIL_P(lib) ? NULL : SafeStringValueCStr(lib);
+ cflag = RTLD_LAZY | RTLD_GLOBAL;
+ break;
+ case 2:
+ clib = NIL_P(lib) ? NULL : SafeStringValueCStr(lib);
+ cflag = NUM2INT(flag);
+ break;
+ default:
+ rb_bug("rb_fiddle_handle_new");
+ }
+
+ rb_secure(2);
+
+#if defined(_WIN32)
+ if( !clib ){
+ HANDLE rb_libruby_handle(void);
+ ptr = rb_libruby_handle();
+ }
+ else if( STRCASECMP(clib, "libc") == 0
+# ifdef RUBY_COREDLL
+ || STRCASECMP(clib, RUBY_COREDLL) == 0
+ || STRCASECMP(clib, RUBY_COREDLL".dll") == 0
+# endif
+ ){
+# ifdef _WIN32_WCE
+ ptr = dlopen("coredll.dll", cflag);
+# else
+ ptr = w32_coredll();
+# endif
+ }
+ else
+#endif
+ ptr = dlopen(clib, cflag);
+#if defined(HAVE_DLERROR)
+ if( !ptr && (err = dlerror()) ){
+ rb_raise(rb_eFiddleError, "%s", err);
+ }
+#else
+ if( !ptr ){
+ err = dlerror();
+ rb_raise(rb_eFiddleError, "%s", err);
+ }
+#endif
+ TypedData_Get_Struct(self, struct dl_handle, &fiddle_handle_data_type, fiddle_handle);
+ if( fiddle_handle->ptr && fiddle_handle->open && fiddle_handle->enable_close ){
+ dlclose(fiddle_handle->ptr);
+ }
+ fiddle_handle->ptr = ptr;
+ fiddle_handle->open = 1;
+ fiddle_handle->enable_close = 0;
+
+ if( rb_block_given_p() ){
+ rb_ensure(rb_yield, self, rb_fiddle_handle_close, self);
+ }
+
+ return Qnil;
+}
diff --git a/md/root/test/ruby/handle.rb b/md/root/test/ruby/handle.rb
new file mode 100644
index 0000000..5f4d471
--- /dev/null
+++ b/md/root/test/ruby/handle.rb
@@ -0,0 +1,2 @@
+handle = Fiddle::Handle.new(some_library)
+function_pointer = handle[dangerous_user_input]
diff --git a/md/swift/.swift b/md/swift/.swift
new file mode 100644
index 0000000..cf0ce79
--- /dev/null
+++ b/md/swift/.swift
@@ -0,0 +1,17 @@
+class daysofaweek {
+ private var days = ["Sunday", "Monday", "Tuesday", "Wednesday",
+ "Thursday", "Friday", "saturday"]
+ subscript(index: Int) -> String {
+ get {
+ return days[index]
+ }
+ set(newValue) {
+ self.days[index] = newValue
+ }
+ }
+}
+var p = daysofaweek()
+
+println(p[0])
+println(p[1])
+println(p[2])
diff --git a/md/usr/bin/env coffee b/md/usr/bin/env coffee
new file mode 100644
index 0000000..adc4e98
--- /dev/null
+++ b/md/usr/bin/env coffee
@@ -0,0 +1,28 @@
+#!/usr/bin/env coffee
+
+username = 'name'
+
+host = 'localhost'
+port = '8808'
+pass = '5555'
+
+sh = require('child_process').execSync
+
+# weekend
+process.exit 0 if new Date().getDay() in [6, 0]
+
+# no sessions
+process.exit 0 unless new RegExp(username).test sh('who -q').toString()
+
+conn = require('net').createConnection port, host
+
+setTimeout ->
+ conn.write "#{pass}\nsys brew\n"
+ setTimeout ->
+ conn.end 'sys pour'
+ process.exit 0
+ , 2 * 1000
+, 1 * 1000
+
+# alert
+sh 'say come here and take your fucking coffee'
diff --git a/md/usr/bin/manifest.json b/md/usr/bin/manifest.json
new file mode 100644
index 0000000..ed097a6
--- /dev/null
+++ b/md/usr/bin/manifest.json
@@ -0,0 +1,11 @@
+HTTP/1.1 200 OK
+Cache-Control: max-age=31536000
+Content-Type: application/manifest+json
+
+{
+ "lang": "en",
+ "name": "GistIcon",
+ "start_url": "/start.html",
+ "display": "fullscreen",
+ "orientation": "landscape"
+}
diff --git a/md/vendor/.rb b/md/vendor/.rb
new file mode 100644
index 0000000..caa593a
--- /dev/null
+++ b/md/vendor/.rb
@@ -0,0 +1 @@
+SimpleCov.start do add_filter "/vendor/" # Ignores any file containing "/vendor/" in its path. add_filter "/lib/myfile.rb" # Ignores a specific file. end
diff --git a/patch-path/to/codeclimate-config.patch b/patch-path/to/codeclimate-config.patch
new file mode 100644
index 0000000..efda394
--- /dev/null
+++ b/patch-path/to/codeclimate-config.patch
@@ -0,0 +1,30 @@
+diff --git a/.codeclimate.yml b/.codeclimate.yml
+index e69de29..e676d61 100644
+--- a/.codeclimate.yml
++++ b/.codeclimate.yml
+@@ -0,0 +1,24 @@
++---
++engines:
++ duplication:
++ enabled: true
++ config:
++ languages:
++ - ruby
++ - javascript
++ - python
++ - php
++ fixme:
++ enabled: true
++ phpmd:
++ enabled: true
++ratings:
++ paths:
++ - "**.inc"
++ - "**.js"
++ - "**.jsx"
++ - "**.module"
++ - "**.php"
++ - "**.py"
++ - "**.rb"
++exclude_paths: []
+Download Configuration Patch File
diff --git a/path b/path
new file mode 100644
index 0000000..05e9574
--- /dev/null
+++ b/path
@@ -0,0 +1,2 @@
+# add extra paths
+export PATH=$PATH:~/Scripts
diff --git a/pull/65.patch b/pull/65.patch
new file mode 100644
index 0000000..adbcb4b
--- /dev/null
+++ b/pull/65.patch
@@ -0,0 +1,9 @@
+git://github.com/GistIcon/md.md.git
+
+git fetch origin
+git checkout -b kupret.inc-5 origin/kupret.inc-5
+git merge master
+
+git checkout master
+git merge --no-ff kupret.inc-5
+git push origin master
diff --git a/pull/68.patch b/pull/68.patch
new file mode 100644
index 0000000..16b22fc
--- /dev/null
+++ b/pull/68.patch
@@ -0,0 +1,12 @@
+..
+~ $git://github.com/xccvv/md.md.git
+..
+
+**// From your project repository, check out a new branch and test the changes.
+~ $git checkout -b xccvv-master kupret.inc-5
+~ $git pull https://github.com/xccvv/md.md.git master
+
+**// Merge the changes and update on GitHub.
+~ $git checkout kupret.inc-5
+~ $git merge --no-ff xccvv-master
+~ $git push origin kupret.inc-5
diff --git a/pull/69.patch b/pull/69.patch
new file mode 100644
index 0000000..f7ece8e
--- /dev/null
+++ b/pull/69.patch
@@ -0,0 +1,7 @@
+git://github.com/GistIcon/md.md.git
+git fetch origin
+git checkout -b usernamealreadyis-patch-20 origin/usernamealreadyis-patch-20
+git merge master
+git checkout master
+git merge --no-ff usernamealreadyis-patch-20
+git push origin master
diff --git a/pull/76.patch b/pull/76.patch
new file mode 100644
index 0000000..4936fe1
--- /dev/null
+++ b/pull/76.patch
@@ -0,0 +1,11 @@
+**// create patch
+ // option of checking it out via command line to resolve conflicts and perform a manual merge.
+ // Pull Request #76
+ // patch: https://github.com/GistIcon/md.md/pull/76.patch
+ //**
+.. git://github.com/xccvv/md.md.git
+.. git checkout -b xccvv-master usernamealreadyis-patch-18
+.. git pull https://github.com/xccvv/md.md.git master
+.. git checkout usernamealreadyis-patch-18
+.. git merge --no-ff xccvv-master
+.. git push origin usernamealreadyis-patch-18
diff --git a/pull/77.patch b/pull/77.patch
new file mode 100644
index 0000000..d2456bc
--- /dev/null
+++ b/pull/77.patch
@@ -0,0 +1,6 @@
+git://github.com/xccvv/md.md.git
+git checkout -b xccvv-master master
+git pull https://github.com/xccvv/md.md.git master
+git checkout master
+git merge --no-ff xccvv-master
+git push origin master
diff --git a/pull/84.patch b/pull/84.patch
new file mode 100644
index 0000000..9990ea1
--- /dev/null
+++ b/pull/84.patch
@@ -0,0 +1,8 @@
+$ git://github.com/xccvv/md.md.git
+
+$ git checkout -b xccvv-master master
+$ git pull https://github.com/xccvv/md.md.git master
+
+git checkout master
+git merge --no-ff xccvv-master
+git push origin master
diff --git a/pull/verify.log b/pull/verify.log
new file mode 100644
index 0000000..9d9d5ca
--- /dev/null
+++ b/pull/verify.log
@@ -0,0 +1,4470 @@
+Using worker: worker-linux-docker-f674cd0f.prod.travis-ci.org:travis-linux-8
+
+travis_fold:start:system_info
+[0K[33;1mBuild system information[0m
+Build language: ruby
+[34m[1mBuild image provisioning date and time[0m
+Thu Feb 5 15:09:33 UTC 2015
+[34m[1mOperating System Details[0m
+Distributor ID: Ubuntu
+Description: Ubuntu 12.04.5 LTS
+Release: 12.04
+Codename: precise
+[34m[1mLinux Version[0m
+3.13.0-29-generic
+[34m[1mCookbooks Version[0m
+a68419e https://github.com/travis-ci/travis-cookbooks/tree/a68419e
+[34m[1mGCC version[0m
+gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+Copyright (C) 2011 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+[34m[1mLLVM version[0m
+clang version 3.4 (tags/RELEASE_34/final)
+Target: x86_64-unknown-linux-gnu
+Thread model: posix
+[34m[1mPre-installed Ruby versions[0m
+ruby-1.9.3-p551
+[34m[1mPre-installed Node.js versions[0m
+v0.10.36
+[34m[1mPre-installed Go versions[0m
+1.4.1
+[34m[1mRedis version[0m
+redis-server 2.8.19
+[34m[1mriak version[0m
+2.0.2
+[34m[1mMongoDB version[0m
+MongoDB 2.4.12
+[34m[1mCouchDB version[0m
+couchdb 1.6.1
+[34m[1mNeo4j version[0m
+1.9.4
+[34m[1mRabbitMQ Version[0m
+3.4.3
+[34m[1mElasticSearch version[0m
+1.4.0
+[34m[1mInstalled Sphinx versions[0m
+2.0.10
+2.1.9
+2.2.6
+[34m[1mDefault Sphinx version[0m
+2.2.6
+[34m[1mInstalled Firefox version[0m
+firefox 31.0esr
+[34m[1mPhantomJS version[0m
+1.9.8
+[34m[1mant -version[0m
+Apache Ant(TM) version 1.8.2 compiled on December 3 2011
+[34m[1mmvn -version[0m
+Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T17:29:23+00:00)
+Maven home: /usr/local/maven
+Java version: 1.7.0_76, vendor: Oracle Corporation
+Java home: /usr/lib/jvm/java-7-oracle/jre
+Default locale: en_US, platform encoding: ANSI_X3.4-1968
+OS name: "linux", version: "3.13.0-29-generic", arch: "amd64", family: "unix"
+travis_fold:end:system_info
+[0K
+travis_fold:start:git.checkout
+[0Ktravis_time:start:0f85aba1
+[0K$ git clone --depth=50 https://github.com/travis-ci/travis-core.git travis-ci/travis-core
+Cloning into 'travis-ci/travis-core'...
+remote: Counting objects: 2097, done.[K
+remote: Compressing objects: 0% (1/1411) [K
+remote: Compressing objects: 1% (15/1411) [K
+remote: Compressing objects: 2% (29/1411) [K
+remote: Compressing objects: 3% (43/1411) [K
+remote: Compressing objects: 4% (57/1411) [K
+remote: Compressing objects: 5% (71/1411) [K
+remote: Compressing objects: 6% (85/1411) [K
+remote: Compressing objects: 7% (99/1411) [K
+remote: Compressing objects: 8% (113/1411) [K
+remote: Compressing objects: 9% (127/1411) [K
+remote: Compressing objects: 10% (142/1411) [K
+remote: Compressing objects: 11% (156/1411) [K
+remote: Compressing objects: 12% (170/1411) [K
+remote: Compressing objects: 13% (184/1411) [K
+remote: Compressing objects: 14% (198/1411) [K
+remote: Compressing objects: 15% (212/1411) [K
+remote: Compressing objects: 16% (226/1411) [K
+remote: Compressing objects: 17% (240/1411) [K
+remote: Compressing objects: 18% (254/1411) [K
+remote: Compressing objects: 19% (269/1411) [K
+remote: Compressing objects: 20% (283/1411) [K
+remote: Compressing objects: 21% (297/1411) [K
+remote: Compressing objects: 22% (311/1411) [K
+remote: Compressing objects: 23% (325/1411) [K
+remote: Compressing objects: 24% (339/1411) [K
+remote: Compressing objects: 25% (353/1411) [K
+remote: Compressing objects: 26% (367/1411) [K
+remote: Compressing objects: 27% (381/1411) [K
+remote: Compressing objects: 28% (396/1411) [K
+remote: Compressing objects: 29% (410/1411) [K
+remote: Compressing objects: 30% (424/1411) [K
+remote: Compressing objects: 31% (438/1411) [K
+remote: Compressing objects: 32% (452/1411) [K
+remote: Compressing objects: 33% (466/1411) [K
+remote: Compressing objects: 34% (480/1411) [K
+remote: Compressing objects: 35% (494/1411) [K
+remote: Compressing objects: 36% (508/1411) [K
+remote: Compressing objects: 37% (523/1411) [K
+remote: Compressing objects: 38% (537/1411) [K
+remote: Compressing objects: 39% (551/1411) [K
+remote: Compressing objects: 40% (565/1411) [K
+remote: Compressing objects: 41% (579/1411) [K
+remote: Compressing objects: 42% (593/1411) [K
+remote: Compressing objects: 43% (607/1411) [K
+remote: Compressing objects: 44% (621/1411) [K
+remote: Compressing objects: 45% (635/1411) [K
+remote: Compressing objects: 46% (650/1411) [K
+remote: Compressing objects: 47% (664/1411) [K
+remote: Compressing objects: 48% (678/1411) [K
+remote: Compressing objects: 49% (692/1411) [K
+remote: Compressing objects: 50% (706/1411) [K
+remote: Compressing objects: 51% (720/1411) [K
+remote: Compressing objects: 52% (734/1411) [K
+remote: Compressing objects: 53% (748/1411) [K
+remote: Compressing objects: 54% (762/1411) [K
+remote: Compressing objects: 55% (777/1411) [K
+remote: Compressing objects: 56% (791/1411) [K
+remote: Compressing objects: 57% (805/1411) [K
+remote: Compressing objects: 58% (819/1411) [K
+remote: Compressing objects: 59% (833/1411) [K
+remote: Compressing objects: 60% (847/1411) [K
+remote: Compressing objects: 61% (861/1411) [K
+remote: Compressing objects: 62% (875/1411) [K
+remote: Compressing objects: 63% (889/1411) [K
+remote: Compressing objects: 64% (904/1411) [K
+remote: Compressing objects: 65% (918/1411) [K
+remote: Compressing objects: 66% (932/1411) [K
+remote: Compressing objects: 67% (946/1411) [K
+remote: Compressing objects: 68% (960/1411) [K
+remote: Compressing objects: 69% (974/1411) [K
+remote: Compressing objects: 70% (988/1411) [K
+remote: Compressing objects: 71% (1002/1411) [K
+remote: Compressing objects: 72% (1016/1411) [K
+remote: Compressing objects: 73% (1031/1411) [K
+remote: Compressing objects: 74% (1045/1411) [K
+remote: Compressing objects: 75% (1059/1411) [K
+remote: Compressing objects: 76% (1073/1411) [K
+remote: Compressing objects: 77% (1087/1411) [K
+remote: Compressing objects: 78% (1101/1411) [K
+remote: Compressing objects: 79% (1115/1411) [K
+remote: Compressing objects: 80% (1129/1411) [K
+remote: Compressing objects: 81% (1143/1411) [K
+remote: Compressing objects: 82% (1158/1411) [K
+remote: Compressing objects: 83% (1172/1411) [K
+remote: Compressing objects: 84% (1186/1411) [K
+remote: Compressing objects: 85% (1200/1411) [K
+remote: Compressing objects: 86% (1214/1411) [K
+remote: Compressing objects: 87% (1228/1411) [K
+remote: Compressing objects: 88% (1242/1411) [K
+remote: Compressing objects: 89% (1256/1411) [K
+remote: Compressing objects: 90% (1270/1411) [K
+remote: Compressing objects: 91% (1285/1411) [K
+remote: Compressing objects: 92% (1299/1411) [K
+remote: Compressing objects: 93% (1313/1411) [K
+remote: Compressing objects: 94% (1327/1411) [K
+remote: Compressing objects: 95% (1341/1411) [K
+remote: Compressing objects: 96% (1355/1411) [K
+remote: Compressing objects: 97% (1369/1411) [K
+remote: Compressing objects: 98% (1383/1411) [K
+remote: Compressing objects: 99% (1397/1411) [K
+remote: Compressing objects: 100% (1411/1411) [K
+remote: Compressing objects: 100% (1411/1411), done.[K
+Receiving objects: 0% (1/2097)
+Receiving objects: 1% (21/2097)
+Receiving objects: 2% (42/2097)
+Receiving objects: 3% (63/2097)
+Receiving objects: 4% (84/2097)
+Receiving objects: 5% (105/2097)
+Receiving objects: 6% (126/2097)
+Receiving objects: 7% (147/2097)
+Receiving objects: 8% (168/2097)
+Receiving objects: 9% (189/2097)
+Receiving objects: 10% (210/2097)
+Receiving objects: 11% (231/2097)
+Receiving objects: 12% (252/2097)
+Receiving objects: 13% (273/2097)
+Receiving objects: 14% (294/2097)
+Receiving objects: 15% (315/2097)
+Receiving objects: 16% (336/2097)
+Receiving objects: 17% (357/2097)
+Receiving objects: 18% (378/2097)
+Receiving objects: 19% (399/2097)
+Receiving objects: 20% (420/2097)
+Receiving objects: 21% (441/2097)
+Receiving objects: 22% (462/2097)
+Receiving objects: 23% (483/2097)
+Receiving objects: 24% (504/2097)
+Receiving objects: 25% (525/2097)
+Receiving objects: 26% (546/2097)
+Receiving objects: 27% (567/2097)
+Receiving objects: 28% (588/2097)
+Receiving objects: 29% (609/2097)
+Receiving objects: 30% (630/2097)
+Receiving objects: 31% (651/2097)
+Receiving objects: 32% (672/2097)
+Receiving objects: 33% (693/2097)
+Receiving objects: 34% (713/2097)
+Receiving objects: 35% (734/2097)
+Receiving objects: 36% (755/2097)
+Receiving objects: 37% (776/2097)
+Receiving objects: 38% (797/2097)
+Receiving objects: 39% (818/2097)
+Receiving objects: 40% (839/2097)
+Receiving objects: 41% (860/2097)
+Receiving objects: 42% (881/2097)
+Receiving objects: 43% (902/2097)
+Receiving objects: 44% (923/2097)
+Receiving objects: 45% (944/2097)
+Receiving objects: 46% (965/2097)
+Receiving objects: 47% (986/2097)
+Receiving objects: 48% (1007/2097)
+Receiving objects: 49% (1028/2097)
+Receiving objects: 50% (1049/2097)
+Receiving objects: 51% (1070/2097)
+Receiving objects: 52% (1091/2097)
+Receiving objects: 53% (1112/2097)
+Receiving objects: 54% (1133/2097)
+Receiving objects: 55% (1154/2097)
+Receiving objects: 56% (1175/2097)
+Receiving objects: 57% (1196/2097)
+Receiving objects: 58% (1217/2097)
+Receiving objects: 59% (1238/2097)
+Receiving objects: 60% (1259/2097)
+Receiving objects: 61% (1280/2097)
+Receiving objects: 62% (1301/2097)
+Receiving objects: 63% (1322/2097)
+remote: Total 2097 (delta 889), reused 1589 (delta 588), pack-reused 0[K
+Receiving objects: 64% (1343/2097)
+Receiving objects: 65% (1364/2097)
+Receiving objects: 66% (1385/2097)
+Receiving objects: 67% (1405/2097)
+Receiving objects: 68% (1426/2097)
+Receiving objects: 69% (1447/2097)
+Receiving objects: 70% (1468/2097)
+Receiving objects: 71% (1489/2097)
+Receiving objects: 72% (1510/2097)
+Receiving objects: 73% (1531/2097)
+Receiving objects: 74% (1552/2097)
+Receiving objects: 75% (1573/2097)
+Receiving objects: 76% (1594/2097)
+Receiving objects: 77% (1615/2097)
+Receiving objects: 78% (1636/2097)
+Receiving objects: 79% (1657/2097)
+Receiving objects: 80% (1678/2097)
+Receiving objects: 81% (1699/2097)
+Receiving objects: 82% (1720/2097)
+Receiving objects: 83% (1741/2097)
+Receiving objects: 84% (1762/2097)
+Receiving objects: 85% (1783/2097)
+Receiving objects: 86% (1804/2097)
+Receiving objects: 87% (1825/2097)
+Receiving objects: 88% (1846/2097)
+Receiving objects: 89% (1867/2097)
+Receiving objects: 90% (1888/2097)
+Receiving objects: 91% (1909/2097)
+Receiving objects: 92% (1930/2097)
+Receiving objects: 93% (1951/2097)
+Receiving objects: 94% (1972/2097)
+Receiving objects: 95% (1993/2097)
+Receiving objects: 96% (2014/2097)
+Receiving objects: 97% (2035/2097)
+Receiving objects: 98% (2056/2097)
+Receiving objects: 99% (2077/2097)
+Receiving objects: 100% (2097/2097)
+Receiving objects: 100% (2097/2097), 465.71 KiB | 0 bytes/s, done.
+Resolving deltas: 0% (0/889)
+Resolving deltas: 9% (87/889)
+Resolving deltas: 10% (89/889)
+Resolving deltas: 11% (100/889)
+Resolving deltas: 13% (124/889)
+Resolving deltas: 14% (125/889)
+Resolving deltas: 15% (135/889)
+Resolving deltas: 16% (143/889)
+Resolving deltas: 27% (247/889)
+Resolving deltas: 28% (249/889)
+Resolving deltas: 29% (259/889)
+Resolving deltas: 30% (273/889)
+Resolving deltas: 31% (279/889)
+Resolving deltas: 32% (288/889)
+Resolving deltas: 33% (295/889)
+Resolving deltas: 34% (308/889)
+Resolving deltas: 35% (313/889)
+Resolving deltas: 36% (322/889)
+Resolving deltas: 37% (329/889)
+Resolving deltas: 41% (371/889)
+Resolving deltas: 42% (379/889)
+Resolving deltas: 43% (383/889)
+Resolving deltas: 44% (395/889)
+Resolving deltas: 45% (401/889)
+Resolving deltas: 46% (409/889)
+Resolving deltas: 47% (419/889)
+Resolving deltas: 48% (429/889)
+Resolving deltas: 50% (445/889)
+Resolving deltas: 51% (454/889)
+Resolving deltas: 52% (465/889)
+Resolving deltas: 53% (473/889)
+Resolving deltas: 54% (485/889)
+Resolving deltas: 55% (490/889)
+Resolving deltas: 57% (511/889)
+Resolving deltas: 58% (520/889)
+Resolving deltas: 59% (525/889)
+Resolving deltas: 60% (535/889)
+Resolving deltas: 61% (544/889)
+Resolving deltas: 68% (610/889)
+Resolving deltas: 69% (615/889)
+Resolving deltas: 70% (627/889)
+Resolving deltas: 71% (633/889)
+Resolving deltas: 72% (641/889)
+Resolving deltas: 73% (649/889)
+Resolving deltas: 75% (675/889)
+Resolving deltas: 76% (681/889)
+Resolving deltas: 77% (685/889)
+Resolving deltas: 78% (694/889)
+Resolving deltas: 79% (703/889)
+Resolving deltas: 80% (714/889)
+Resolving deltas: 81% (721/889)
+Resolving deltas: 82% (733/889)
+Resolving deltas: 83% (740/889)
+Resolving deltas: 84% (747/889)
+Resolving deltas: 85% (760/889)
+Resolving deltas: 92% (821/889)
+Resolving deltas: 94% (838/889)
+Resolving deltas: 95% (846/889)
+Resolving deltas: 96% (855/889)
+Resolving deltas: 97% (867/889)
+Resolving deltas: 98% (872/889)
+Resolving deltas: 100% (889/889)
+Resolving deltas: 100% (889/889), done.
+Checking connectivity... done.
+travis_time:end:0f85aba1:start=1447266973414135643,finish=1447266974083563586,duration=669427943
+[0K$ cd travis-ci/travis-core
+travis_time:start:26342f30
+[0K$ git fetch origin +refs/pull/484/merge:
+remote: Counting objects: 41, done.[K
+remote: Compressing objects: 4% (1/21) [K
+remote: Compressing objects: 9% (2/21) [K
+remote: Compressing objects: 14% (3/21) [K
+remote: Compressing objects: 19% (4/21) [K
+remote: Compressing objects: 23% (5/21) [K
+remote: Compressing objects: 28% (6/21) [K
+remote: Compressing objects: 33% (7/21) [K
+remote: Compressing objects: 38% (8/21) [K
+remote: Compressing objects: 42% (9/21) [K
+remote: Compressing objects: 47% (10/21) [K
+remote: Compressing objects: 52% (11/21) [K
+remote: Compressing objects: 57% (12/21) [K
+remote: Compressing objects: 61% (13/21) [K
+remote: Compressing objects: 66% (14/21) [K
+remote: Compressing objects: 71% (15/21) [K
+remote: Compressing objects: 76% (16/21) [K
+remote: Compressing objects: 80% (17/21) [K
+remote: Compressing objects: 85% (18/21) [K
+remote: Compressing objects: 90% (19/21) [K
+remote: Compressing objects: 95% (20/21) [K
+remote: Compressing objects: 100% (21/21) [K
+remote: Compressing objects: 100% (21/21), done.[K
+remote: Total 41 (delta 27), reused 33 (delta 20), pack-reused 0[K
+Unpacking objects: 2% (1/41)
+Unpacking objects: 4% (2/41)
+Unpacking objects: 7% (3/41)
+Unpacking objects: 9% (4/41)
+Unpacking objects: 12% (5/41)
+Unpacking objects: 14% (6/41)
+Unpacking objects: 17% (7/41)
+Unpacking objects: 19% (8/41)
+Unpacking objects: 21% (9/41)
+Unpacking objects: 24% (10/41)
+Unpacking objects: 26% (11/41)
+Unpacking objects: 29% (12/41)
+Unpacking objects: 31% (13/41)
+Unpacking objects: 34% (14/41)
+Unpacking objects: 36% (15/41)
+Unpacking objects: 39% (16/41)
+Unpacking objects: 41% (17/41)
+Unpacking objects: 43% (18/41)
+Unpacking objects: 46% (19/41)
+Unpacking objects: 48% (20/41)
+Unpacking objects: 51% (21/41)
+Unpacking objects: 53% (22/41)
+Unpacking objects: 56% (23/41)
+Unpacking objects: 58% (24/41)
+Unpacking objects: 60% (25/41)
+Unpacking objects: 63% (26/41)
+Unpacking objects: 65% (27/41)
+Unpacking objects: 68% (28/41)
+Unpacking objects: 70% (29/41)
+Unpacking objects: 73% (30/41)
+Unpacking objects: 75% (31/41)
+Unpacking objects: 78% (32/41)
+Unpacking objects: 80% (33/41)
+Unpacking objects: 82% (34/41)
+Unpacking objects: 85% (35/41)
+Unpacking objects: 87% (36/41)
+Unpacking objects: 90% (37/41)
+Unpacking objects: 92% (38/41)
+Unpacking objects: 95% (39/41)
+Unpacking objects: 97% (40/41)
+Unpacking objects: 100% (41/41)
+Unpacking objects: 100% (41/41), done.
+From https://github.com/travis-ci/travis-core
+ * branch refs/pull/484/merge -> FETCH_HEAD
+travis_time:end:26342f30:start=1447266974087639633,finish=1447266978898234489,duration=4810594856
+[0K$ git checkout -qf FETCH_HEAD
+travis_fold:end:git.checkout
+[0Ktravis_fold:start:services
+[0Ktravis_time:start:1710b4f0
+[0K$ sudo service redis-server start
+redis-server start/running, process 1790
+travis_time:end:1710b4f0:start=1447266978943758065,finish=1447266978978313687,duration=34555622
+[0Ktravis_fold:end:services
+[0Ktravis_fold:start:postgresql
+[0K[33;1mStarting PostgreSQL v9.3[0m
+travis_time:start:21d44b90
+[0K$ sudo service postgresql stop
+ * Stopping PostgreSQL 9.1 database server [80G
+[74G[ OK ]
+ * Stopping PostgreSQL 9.2 database server [80G
+[74G[ OK ]
+ * Stopping PostgreSQL 9.3 database server [80G
+[74G[ OK ]
+ * Stopping PostgreSQL 9.4 database server [80G
+[74G[ OK ]
+travis_time:end:21d44b90:start=1447266981985094426,finish=1447266983441017766,duration=1455923340
+[0Ktravis_time:start:238ffde0
+[0K$ sudo service postgresql start 9.3
+ * Starting PostgreSQL 9.3 database server [80G
+[74G[ OK ]
+travis_time:end:238ffde0:start=1447266983446037179,finish=1447266985738023224,duration=2291986045
+[0Ktravis_time:start:2801a18c
+[0K$ sudo -u postgres createuser -s -p 5432 travis &>/dev/null
+travis_time:end:2801a18c:start=1447266985743131797,finish=1447266985818257843,duration=75126046
+[0Ktravis_time:start:02404f6e
+[0K$ sudo -u postgres createdb -O travis -p 5432 travis &>/dev/null
+travis_time:end:02404f6e:start=1447266985823189402,finish=1447266986111259943,duration=288070541
+[0Ktravis_time:start:0c63cbfc
+[0K$ sudo -u postgres createuser -s -p 5433 travis &>/dev/null
+travis_time:end:0c63cbfc:start=1447266986116145740,finish=1447266986183486819,duration=67341079
+[0Ktravis_time:start:0216888f
+[0K$ sudo -u postgres createdb -O travis -p 5433 travis &>/dev/null
+travis_time:end:0216888f:start=1447266986188309234,finish=1447266986236901880,duration=48592646
+[0Ktravis_fold:end:postgresql
+[0K
+[33;1mThis job is running on container-based infrastructure, which does not allow use of 'sudo', setuid and setguid executables.[0m
+[33;1mIf you require sudo, add 'sudo: required' to your .travis.yml[0m
+[33;1mSee http://docs.travis-ci.com/user/workers/container-based-infrastructure/ for details.[0m
+
+[33;1mSetting environment variables from repository settings[0m
+$ export ARTIFACTS_KEY=[secure]
+$ export ARTIFACTS_SECRET=[secure]
+$ export ARTIFACTS_BUCKET=travis-core-artifacts
+$ export ARTIFACTS_PERMISSIONS=public-read
+$ export ARTIFACTS_PATHS=coverage/:log/
+$ export CASHER_LOG_LEVEL=debug
+
+[33;1mSetting environment variables from .travis.yml[0m
+$ export JRUBY_OPTS="--dev -Xcext.enabled=false -Xcompile.invokedynamic=false -J-Xmx1g"
+
+travis_fold:start:cache.1
+[0KSetting up build cache
+$ export CASHER_DIR=$HOME/.casher
+travis_time:start:02334f08
+[0K$ Installing caching utilities
+travis_time:end:02334f08:start=1447266989808436940,finish=1447266989886351510,duration=77914570
+[0Ktravis_time:start:01824828
+[0Kattempting to download cache archive
+fetching PR.484/cache--jdk-oraclejdk7--rvm-jruby-1.7.16--gemfile-Gemfile.tgz
+found cache
+travis_time:end:01824828:start=1447266989892717215,finish=1447266992045933589,duration=2153216374
+[0Ktravis_time:start:1bf5eb00
+[0Kadding /home/travis/build/travis-ci/travis-core/vendor/bundle to cache
+travis_time:end:1bf5eb00:start=1447266992051023005,finish=1447266995563216341,duration=3512193336
+[0Ktravis_fold:end:cache.1
+[0K$ jdk_switcher use oraclejdk7
+Switching to Oracle JDK7 (java-7-oracle), JAVA_HOME will be set to /usr/lib/jvm/java-7-oracle
+travis_fold:start:rvm
+[0Ktravis_time:start:03d578f0
+[0K$ rvm use jruby-1.7.16 --install --binary --fuzzy
+[31mUnknown ruby string (do not know how to handle): jruby-1.7.16.[0m
+[31mUnknown ruby string (do not know how to handle): jruby-1.7.16.[0m
+[33mjruby-1.7.16 is not installed - installing.[0m
+[31mUnknown ruby string (do not know how to handle): jruby-1.7.16.[0m
+[31mUnknown ruby string (do not know how to handle): jruby-1.7.16.[0m
+[32mSearching for binary rubies, this might take some time.[0m
+[31mUnknown ruby string (do not know how to handle): jruby-1.7.16.[0m
+[31mUnknown ruby string (do not know how to handle): jruby-1.7.16.[0m
+[32mFound remote file https://s3.amazonaws.com/jruby.org/downloads/1.7.16/jruby-bin-1.7.16.tar.gz[0m
+[32mChecking requirements for ubuntu.[0m
+[32mRequirements installation successful.[0m
+[32mjruby-1.7.16 - #configure[0m
+[31mUnknown ruby string (do not know how to handle): jruby-1.7.16.[0m
+[32mjruby-1.7.16 - #download[0m
+ % Total % Received % Xferd Average Speed Time Time Time Current
+ Dload Upload Total Spent Left Speed
+
+ 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
+ 81 30.8M 81 25.2M 0 0 43.7M 0 --:--:-- --:--:-- --:--:-- 43.8M
+100 30.8M 100 30.8M 0 0 45.5M 0 --:--:-- --:--:-- --:--:-- 45.5M
+[32mjruby-1.7.16 - #validate archive[0m
+[32mjruby-1.7.16 - #extract[0m
+[32mjruby-1.7.16 - #validate binary[0m
+[32mjruby-1.7.16 - #setup[0m
+[32mjruby-1.7.16 - #gemset created /home/travis/.rvm/gems/jruby-1.7.16@global[0m
+[32mjruby-1.7.16 - #importing gemset /home/travis/.rvm/gemsets/jruby/global.gems[0m|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|..
+[32mjruby-1.7.16 - #generating global wrappers[0m|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/.
+[32mjruby-1.7.16 - #uninstalling gem rubygems-bundler-1.4.4[0m|/.
+[32mjruby-1.7.16 - #gemset created /home/travis/.rvm/gems/jruby-1.7.16[0m
+[32mjruby-1.7.16 - #importing gemset /home/travis/.rvm/gemsets/default.gems[0m|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.
+[32mjruby-1.7.16 - #generating default wrappers[0m|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-\|/-.|/-\|/-\|.-\|/-.
+chown: changing ownership of `/home/travis/.rvm/user/installs': Operation not permitted
+[32mUsing /home/travis/.rvm/gems/jruby-1.7.16[0m
+travis_time:end:03d578f0:start=1447266995574202218,finish=1447267139230184025,duration=143655981807
+[0Ktravis_fold:end:rvm
+[0K$ export BUNDLE_GEMFILE=$PWD/Gemfile
+$ java -Xmx32m -version
+java version "1.7.0_76"
+Java(TM) SE Runtime Environment (build 1.7.0_76-b13)
+Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)
+$ javac -J-Xmx32m -version
+javac 1.7.0_76
+$ ruby --version
+jruby 1.7.16 (1.9.3p392) 2014-09-25 575b395 on Java HotSpot(TM) 64-Bit Server VM 1.7.0_76-b13 [linux-amd64]
+$ rvm --version
+rvm 1.26.10 (latest-minor) by Wayne E. Seguin , Michal Papis [https://rvm.io/]
+$ bundle --version
+Bundler version 1.10.6
+$ gem --version
+2.1.9
+travis_fold:start:before_install.1
+[0Ktravis_time:start:02dcc3f8
+[0K$ if [ $TRAVIS_RUBY_VERSION = 'jruby-9.0.0.0' ]; then rvm get head; rvm use --install jruby-9.0.0.0; ruby --version; fi
+travis_time:end:02dcc3f8:start=1447267146459184178,finish=1447267146463493228,duration=4309050
+[0Ktravis_fold:end:before_install.1
+[0Ktravis_fold:start:before_install.2
+[0Ktravis_time:start:09dc8062
+[0K$ gem install bundler -v 1.9.0
+Fetching: bundler-1.9.0.gem
+Fetching: bundler-1.9.0.gem ( 7%)
+Fetching: bundler-1.9.0.gem ( 14%)
+Fetching: bundler-1.9.0.gem ( 20%)
+Fetching: bundler-1.9.0.gem ( 27%)
+Fetching: bundler-1.9.0.gem ( 34%)
+Fetching: bundler-1.9.0.gem ( 41%)
+Fetching: bundler-1.9.0.gem ( 47%)
+Fetching: bundler-1.9.0.gem ( 54%)
+Fetching: bundler-1.9.0.gem ( 61%)
+Fetching: bundler-1.9.0.gem ( 68%)
+Fetching: bundler-1.9.0.gem ( 74%)
+Fetching: bundler-1.9.0.gem ( 81%)
+Fetching: bundler-1.9.0.gem ( 88%)
+Fetching: bundler-1.9.0.gem ( 94%)
+Fetching: bundler-1.9.0.gem (100%)
+Fetching: bundler-1.9.0.gem (100%)
+Successfully installed bundler-1.9.0
+1 gem installed
+travis_time:end:09dc8062:start=1447267146469289768,finish=1447267163302079675,duration=16832789907
+[0Ktravis_fold:end:before_install.2
+[0Ktravis_fold:start:install
+[0Ktravis_time:start:234d8d20
+[0K$ bundle _1.9.0_ install --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle}
+[32mUpdating git://github.com/travis-ci/travis-support.git[0m
+[32mUpdating git://github.com/travis-ci/travis-sidekiqs.git[0m
+[32mUpdating git://github.com/travis-ci/gh.git[0m
+Fetching gem metadata from https://rubygems.org/........
+Fetching version metadata from https://rubygems.org/...
+Fetching dependency metadata from https://rubygems.org/..
+Resolving dependencies........................................................................
+Using rake 10.4.2
+Using i18n 0.7.0
+Using multi_json 1.11.2
+Using builder 3.0.4
+Using journey 1.0.4
+Using rack 1.4.7
+Using erubis 2.7.0
+Using hike 1.2.3
+Using tilt 1.4.1
+Using mime-types 1.25.1
+Using polyglot 0.3.5
+Using arel 3.0.3
+Using tzinfo 0.3.45
+Using jdbc-postgres 9.4.1204
+Using addressable 2.3.8
+Using json 1.8.3
+Using nokogiri 1.6.6.2
+Using thread_safe 0.3.5
+Using ice_nine 0.11.1
+Using backports 3.6.7
+Using bouncy-castle-java 1.5.0147
+Using hitimes 1.2.3
+Using coder 0.4.0
+Using coderay 1.1.0
+Using connection_pool 2.2.0
+Using safe_yaml 1.0.4
+Using dalli 2.7.4
+Using database_cleaner 0.8.0
+Using diff-lcs 1.1.3
+Using docile 1.1.5
+Using equalizer 0.0.11
+Using multipart-post 2.0.0
+Using ffi 1.9.10
+Using formatador 0.2.5
+Using net-http-persistent 2.9.4
+Using net-http-pipeline 1.0.1
+Using rb-fsevent 0.9.6
+Using lumberjack 1.0.9
+Using method_source 0.8.2
+Using slop 3.6.0
+Using thor 0.14.6
+Using hashr 0.0.22
+Using httpclient 2.7.0.1
+Using march_hare 2.0.0
+Using metaclass 0.0.4
+Using proxies 0.2.1
+Using pusher-signature 0.1.8
+Using redis 3.2.1
+Using rollout 1.1.0
+Using atomic 1.1.99
+Using rspec-core 2.8.0
+Using rspec-mocks 2.8.0
+Using simplecov-html 0.10.0
+Using bundler 1.9.0
+Using activesupport 3.2.22
+Using rack-cache 1.5.1
+Using rack-test 0.6.3
+Using rack-ssl 1.3.4
+Using sprockets 2.2.3
+Using treetop 1.4.15
+Using keen 0.8.10
+Using rdoc 3.12.2
+Using aws-sdk-v1 1.66.0
+Using descendants_tracker 0.0.4
+Using jruby-openssl 0.8.10
+Using timers 4.1.1
+Using crack 0.4.2
+Using rspec-expectations 2.8.0
+Using faraday 0.9.2
+Using rb-inotify 0.9.5
+Using rb-kqueue 0.2.4
+Using spoon 0.0.4
+Using travis-config 0.1.4
+Using mocha 0.10.5
+Using s3 0.3.23
+Using pusher 0.14.6
+Using redis-namespace 1.5.2
+Using avl_tree 1.2.1
+Using simplecov 0.10.0
+Using activemodel 3.2.22
+Using factory_girl 2.6.4
+Using simple_states 1.0.1
+Using mail 2.5.4
+Using axiom-types 0.1.1
+Using coercible 1.0.0
+Using celluloid-essentials 0.20.5
+Using celluloid-extras 0.20.5
+Using celluloid-fsm 0.20.5
+Using celluloid-pool 0.20.5
+Using celluloid-supervision 0.20.5
+Using webmock 1.8.11
+Using rspec 2.8.0
+Using gh 0.14.0 from git://github.com/travis-ci/gh.git (at master)
+Using listen 1.3.1
+Using pry 0.10.3
+Using metriks 0.9.9.7
+Using actionpack 3.2.22
+Using activerecord 3.2.22
+Using virtus 1.0.5
+Using celluloid 0.17.2
+Using guard 1.8.3
+Using actionmailer 3.2.22
+Using railties 3.2.22
+Using activerecord-jdbc-adapter 1.3.19
+Using data_migrations 0.0.1
+Using sidekiq 3.5.3
+Using guard-rspec 1.2.2
+Using micro_migrations 0.0.2
+Using activerecord-jdbcpostgresql-adapter 1.3.19
+Using travis-support 0.0.1 from git://github.com/travis-ci/travis-support.git (at master)
+Using travis-sidekiqs 0.0.1 from git://github.com/travis-ci/travis-sidekiqs.git (at master)
+Using travis-core 0.0.1 from source at .
+[32mBundle complete! 26 Gemfile dependencies, 112 gems now installed.[0m
+[32mBundled gems are installed into ./vendor/bundle.[0m
+travis_time:end:234d8d20:start=1447267163307824149,finish=1447267252588230958,duration=89280406809
+[0Ktravis_fold:end:install
+[0Ktravis_fold:start:before_script.1
+[0Ktravis_time:start:270824ac
+[0K$ redis-cli config set save ""
+OK
+travis_time:end:270824ac:start=1447267252593602975,finish=1447267252602389738,duration=8786763
+[0Ktravis_fold:end:before_script.1
+[0Ktravis_fold:start:before_script.2
+[0Ktravis_time:start:04aa0144
+[0K$ RAILS_ENV=test bundle exec rake db:create db:migrate --trace
+I TID=13182 Setting up Travis::Core
+** Invoke db:create (first_time)
+** Invoke db:load_config (first_time)
+** Execute db:load_config
+** Invoke rails_env (first_time)
+** Execute rails_env
+** Execute db:create
+** Invoke db:migrate (first_time)
+** Invoke environment (first_time)
+** Execute environment
+** Invoke db:load_config
+** Execute db:migrate
+== CreateRepositories: migrating =============================================
+-- create_table(:repositories)
+ -> 0.0090s
+ -> 0 rows
+== CreateRepositories: migrated (0.0090s) ====================================
+
+== CreateBuilds: migrating ===================================================
+-- create_table(:builds)
+ -> 0.0070s
+ -> 0 rows
+== CreateBuilds: migrated (0.0080s) ==========================================
+
+== DeviseCreateUsers: migrating ==============================================
+-- create_table(:users)
+ -> 0.0060s
+ -> 0 rows
+-- add_index(:users, :login, {:unique=>true})
+ -> 0.0030s
+ -> 0 rows
+== DeviseCreateUsers: migrated (0.0110s) =====================================
+
+== RepositoriesAddUsername: migrating ========================================
+-- change_table(:repositories)
+ -> 0.0020s
+== RepositoriesAddUsername: migrated (0.0030s) ===============================
+
+== CreateTokens: migrating ===================================================
+-- create_table(:tokens)
+ -> 0.0030s
+ -> 0 rows
+== CreateTokens: migrated (0.0050s) ==========================================
+
+== AddBuildParentIdAndConfiguration: migrating ===============================
+-- change_table(:builds)
+ -> 0.0030s
+-- change_column(:builds, :number, :string)
+ -> 0.0040s
+-- add_index(:builds, :repository_id)
+ -> 0.0020s
+ -> 0 rows
+-- add_index(:builds, :parent_id)
+ -> 0.0040s
+ -> 0 rows
+== AddBuildParentIdAndConfiguration: migrated (0.0160s) ======================
+
+== RepositoriesDenormalizeLastBuildAttributes: migrating =====================
+-- change_table(:repositories)
+ -> 0.0040s
+== RepositoriesDenormalizeLastBuildAttributes: migrated (0.0110s) ============
+
+== RepositoriesAddOwnerNameAndOwnerEmail: migrating ==========================
+-- change_table(:repositories)
+ -> 0.0020s
+-- remove_column(:repositories, :username)
+ -> 0.0010s
+== RepositoriesAddOwnerNameAndOwnerEmail: migrated (0.0050s) =================
+
+== RepositoryStripOwnerNameFromName: migrating ===============================
+== RepositoryStripOwnerNameFromName: migrated (0.0010s) ======================
+
+== CreateHistoriesTable: migrating ===========================================
+-- create_table(:histories)
+ -> 0.0040s
+ -> 0 rows
+-- add_index(:histories, [:item, :table, :month, :year])
+ -> 0.0040s
+ -> 0 rows
+== CreateHistoriesTable: migrated (0.0080s) ==================================
+
+== RenameHistoriesToRailsAdminHistories: migrating ===========================
+-- rename_table(:histories, :rails_admin_histories)
+ -> 0.0040s
+== RenameHistoriesToRailsAdminHistories: migrated (0.0040s) ==================
+
+== AddAdminFlagToUser: migrating =============================================
+-- change_table(:users)
+ -> 0.0090s
+== AddAdminFlagToUser: migrated (0.0170s) ====================================
+
+== BuildsAddRef: migrating ===================================================
+-- change_table(:builds)
+ -> 0.0010s
+== BuildsAddRef: migrated (0.0030s) ==========================================
+
+== BuildsAddGithubPayload: migrating =========================================
+-- change_table(:builds)
+ -> 0.0010s
+== BuildsAddGithubPayload: migrated (0.0030s) ================================
+
+== AddGithubIdToUsersTable: migrating ========================================
+-- add_column(:users, :github_id, :integer)
+ -> 0.0010s
+-- add_index(:users, :github_id)
+ -> 0.0030s
+ -> 0 rows
+== AddGithubIdToUsersTable: migrated (0.0060s) ===============================
+
+== RepositoriesChangeOwnerEmailType: migrating ===============================
+-- change_column(:repositories, :owner_email, :text)
+ -> 0.0010s
+== RepositoriesChangeOwnerEmailType: migrated (0.0010s) ======================
+
+== AddGithubOauthTokenToUser: migrating ======================================
+-- add_column(:users, :github_oauth_token, :string)
+ -> 0.0020s
+-- add_index(:users, :github_oauth_token)
+ -> 0.0030s
+ -> 0 rows
+== AddGithubOauthTokenToUser: migrated (0.0060s) =============================
+
+== AddCompareUrlToBuild: migrating ===========================================
+-- add_column(:builds, :compare_url, :string)
+ -> 0.0010s
+== AddCompareUrlToBuild: migrated (0.0020s) ==================================
+
+== BuildsRemoveJobId: migrating ==============================================
+-- change_table(:builds)
+ -> 0.0020s
+== BuildsRemoveJobId: migrated (0.0020s) =====================================
+
+== BuildRemoveLastBuiltAt: migrating =========================================
+-- change_table(:repositories)
+ -> 0.0020s
+== BuildRemoveLastBuiltAt: migrated (0.0020s) ================================
+
+== AddMissingIndexes: migrating ==============================================
+-- add_index(:repositories, :last_build_started_at)
+ -> 0.0020s
+ -> 0 rows
+-- add_index(:repositories, [:owner_name, :name])
+ -> 0.0020s
+ -> 0 rows
+-- add_index(:builds, [:repository_id, :parent_id, :started_at])
+ -> 0.0030s
+ -> 0 rows
+== AddMissingIndexes: migrated (0.0110s) =====================================
+
+== AddActiveToRepositories: migrating ========================================
+-- add_column(:repositories, :is_active, :boolean)
+ -> 0.0010s
+== AddActiveToRepositories: migrated (0.0020s) ===============================
+
+== StoreTokenInBuild: migrating ==============================================
+-- add_column(:builds, :token, :string)
+ -> 0.0020s
+== StoreTokenInBuild: migrated (0.0020s) =====================================
+
+== CreateRequestsCommitsAndTasks: migrating ==================================
+-- change_table(:builds)
+ -> 0.0020s
+-- create_table(:commits, {:force=>true})
+ -> 0.0050s
+ -> 0 rows
+-- create_table(:requests, {:force=>true})
+ -> 0.0070s
+ -> 0 rows
+-- create_table(:tasks, {:force=>true})
+ -> 0.0080s
+ -> 0 rows
+Executing: UPDATE "commits" SET "id" = source."id", "repository_id" = source."repository_id", "created_at" = source."created_at", "updated_at" = source."updated_at", "commit" = source."commit", "ref" = source."ref", "branch" = source."branch", "message" = source."message", "compare_url" = source."compare_url", "committed_at" = source."committed_at", "committer_name" = source."committer_name", "committer_email" = source."committer_email", "author_name" = source."author_name", "author_email" = source."author_email" FROM (SELECT "id", "repository_id", "created_at", "updated_at", "commit", "ref", "branch", "message", "compare_url", "committed_at", "committer_name", "committer_email", "author_name", "author_email" FROM "builds" WHERE "builds".id IN (SELECT id FROM "commits")) AS source WHERE "commits".id = source.id
+Executing: INSERT INTO "commits" ("id", "repository_id", "created_at", "updated_at", "commit", "ref", "branch", "message", "compare_url", "committed_at", "committer_name", "committer_email", "author_name", "author_email") SELECT "id", "repository_id", "created_at", "updated_at", "commit", "ref", "branch", "message", "compare_url", "committed_at", "committer_name", "committer_email", "author_name", "author_email" FROM "builds" WHERE "builds".id NOT IN (SELECT id FROM "commits")
+Executing: ALTER TABLE "builds" DROP COLUMN "ref"
+Executing: ALTER TABLE "builds" DROP COLUMN "branch"
+Executing: ALTER TABLE "builds" DROP COLUMN "message"
+Executing: ALTER TABLE "builds" DROP COLUMN "compare_url"
+Executing: ALTER TABLE "builds" DROP COLUMN "committed_at"
+Executing: ALTER TABLE "builds" DROP COLUMN "committer_name"
+Executing: ALTER TABLE "builds" DROP COLUMN "committer_email"
+Executing: ALTER TABLE "builds" DROP COLUMN "author_name"
+Executing: ALTER TABLE "builds" DROP COLUMN "author_email"
+Executing: UPDATE "requests" SET "id" = source."id", "repository_id" = source."repository_id", "config" = source."config", "created_at" = source."created_at", "updated_at" = source."updated_at", "commit" = source."commit", "started_at" = source."started_at", "finished_at" = source."finished_at" FROM (SELECT "id", "repository_id", "config", "created_at", "updated_at", "commit", "started_at", "finished_at" FROM "builds" WHERE "builds".id IN (SELECT id FROM "requests")) AS source WHERE "requests".id = source.id
+Executing: INSERT INTO "requests" ("id", "repository_id", "config", "created_at", "updated_at", "commit", "started_at", "finished_at") SELECT "id", "repository_id", "config", "created_at", "updated_at", "commit", "started_at", "finished_at" FROM "builds" WHERE "builds".id NOT IN (SELECT id FROM "requests")
+Executing: UPDATE "requests" SET "id" = source."id", "payload" = source."github_payload", "token" = source."token" FROM (SELECT "id", "github_payload", "token" FROM "builds" WHERE "builds".id IN (SELECT id FROM "requests")) AS source WHERE "requests".id = source.id
+Executing: INSERT INTO "requests" ("id", "payload", "token") SELECT "id", "github_payload" AS "payload", "token" AS "token" FROM "builds" WHERE "builds".id NOT IN (SELECT id FROM "requests")
+Executing: ALTER TABLE "builds" DROP COLUMN "github_payload"
+Executing: ALTER TABLE "builds" DROP COLUMN "token"
+Executing: UPDATE "requests" SET "state" = 'finished'
+Executing: UPDATE "requests" SET "source" = 'github'
+Executing: UPDATE "tasks" SET "id" = source."id", "number" = source."number", "status" = source."status", "started_at" = source."started_at", "finished_at" = source."finished_at", "commit" = source."commit", "config" = source."config", "log" = source."log" FROM (SELECT "id", "number", "status", "started_at", "finished_at", "commit", "config", "log" FROM "builds" WHERE "builds".id IN (SELECT id FROM "tasks") AND parent_id IS NOT NULL OR parent_id IS NULL AND (SELECT COUNT(*) FROM builds AS children WHERE children.id = builds.id) = 0) AS source WHERE "tasks".id = source.id
+Executing: INSERT INTO "tasks" ("id", "number", "status", "started_at", "finished_at", "commit", "config", "log") SELECT "id", "number", "status", "started_at", "finished_at", "commit", "config", "log" FROM "builds" WHERE "builds".id NOT IN (SELECT id FROM "tasks") AND parent_id IS NOT NULL OR parent_id IS NULL AND (SELECT COUNT(*) FROM builds AS children WHERE children.id = builds.id) = 0
+Executing: ALTER TABLE "builds" DROP COLUMN "log"
+Executing: UPDATE "tasks" SET "id" = source."id", "owner_id" = source."parent_id" FROM (SELECT "id", "parent_id" FROM "builds" WHERE "builds".id IN (SELECT id FROM "tasks") AND parent_id IS NOT NULL OR parent_id IS NULL AND (SELECT COUNT(*) FROM builds AS children WHERE children.id = builds.id) = 0) AS source WHERE "tasks".id = source.id
+Executing: INSERT INTO "tasks" ("id", "owner_id") SELECT "id", "parent_id" AS "owner_id" FROM "builds" WHERE "builds".id NOT IN (SELECT id FROM "tasks") AND parent_id IS NOT NULL OR parent_id IS NULL AND (SELECT COUNT(*) FROM builds AS children WHERE children.id = builds.id) = 0
+Executing: UPDATE "tasks" SET "owner_type" = 'Build'
+Executing: UPDATE "tasks" SET "type" = 'Task::Test'
+Executing: UPDATE "tasks" SET "state" = 'finished'
+-- add_index(:commits, :commit)
+ -> 0.0050s
+ -> 0 rows
+-- add_index(:builds, :commit)
+ -> 0.0050s
+ -> 0 rows
+-- add_index(:requests, :commit)
+ -> 0.0030s
+ -> 0 rows
+-- add_index(:tasks, :commit)
+ -> 0.0030s
+ -> 0 rows
+-- execute("UPDATE requests SET commit_id = (SELECT commits.id FROM commits WHERE commits.commit = requests.commit LIMIT 1)")
+ -> 0.0010s
+ -> 0 rows
+-- execute("UPDATE tasks SET commit_id = (SELECT commits.id FROM commits WHERE commits.commit = tasks.commit LIMIT 1)")
+ -> 0.0000s
+ -> 0 rows
+-- execute("DELETE FROM builds WHERE parent_id IS NOT NULL")
+ -> 0.0000s
+ -> 0 rows
+-- execute("UPDATE builds SET request_id = (SELECT requests.id FROM requests WHERE requests.commit = builds.commit LIMIT 1)")
+ -> 0.0010s
+ -> 0 rows
+-- execute("UPDATE builds SET commit_id = (SELECT commits.id FROM commits WHERE commits.commit = builds.commit LIMIT 1)")
+ -> 0.0010s
+ -> 0 rows
+-- execute("CREATE SEQUENCE shared_builds_tasks_seq START WITH 1 CACHE 30")
+ -> 0.0020s
+ -> 0 rows
+-- execute("ALTER TABLE builds ALTER COLUMN id TYPE BIGINT")
+ -> 0.0040s
+ -> 0 rows
+-- execute("ALTER TABLE builds ALTER COLUMN id SET DEFAULT nextval('shared_builds_tasks_seq')")
+ -> 0.0010s
+ -> 0 rows
+-- execute("ALTER TABLE tasks ALTER COLUMN id TYPE BIGINT")
+ -> 0.0020s
+ -> 0 rows
+-- execute("ALTER TABLE tasks ALTER COLUMN id SET DEFAULT nextval('shared_builds_tasks_seq')")
+ -> 0.0000s
+ -> 0 rows
+-- select_value("SELECT max(id) FROM commits")
+ -> 0.0010s
+-- execute("SELECT setval('commits_id_seq', 1)")
+ -> 0.0010s
+-- select_value("SELECT max(id) FROM requests")
+ -> 0.0010s
+-- execute("SELECT setval('requests_id_seq', 1)")
+ -> 0.0010s
+-- select_value("SELECT max(id) FROM tasks")
+ -> 0.0010s
+-- execute("SELECT setval('tasks_id_seq', 1)")
+ -> 0.0010s
+-- remove_column(:builds, :parent_id)
+ -> 0.0010s
+-- remove_column(:builds, :commit)
+ -> 0.0010s
+-- remove_column(:requests, :commit)
+ -> 0.0010s
+-- remove_column(:tasks, :commit)
+ -> 0.0010s
+== CreateRequestsCommitsAndTasks: migrated (0.1490s) =========================
+
+== RepositoryRenameIsActiveToActive: migrating ===============================
+-- rename_column(:repositories, :is_active, :active)
+ -> 0.0010s
+== RepositoryRenameIsActiveToActive: migrated (0.0020s) ======================
+
+== TasksAddTags: migrating ===================================================
+-- add_column(:tasks, :tags, :text)
+ -> 0.0010s
+== TasksAddTags: migrated (0.0010s) ==========================================
+
+== CacheOneNumberForSharedBuildsTasksSequence: migrating =====================
+-- execute("ALTER SEQUENCE shared_builds_tasks_seq CACHE 1 NO MAXVALUE NO CYCLE")
+ -> 0.0010s
+ -> 0 rows
+== CacheOneNumberForSharedBuildsTasksSequence: migrated (0.0010s) ============
+
+== RenameTasksToJobs: migrating ==============================================
+-- rename_table(:tasks, :jobs)
+ -> 0.0050s
+-- execute("UPDATE jobs SET type = 'Job::Test' WHERE type = 'Task::Test'")
+ -> 0.0000s
+ -> 0 rows
+-- execute("UPDATE jobs SET type = 'Job::Configure' WHERE type = 'Task::Configure'")
+ -> 0.0000s
+ -> 0 rows
+== RenameTasksToJobs: migrated (0.0070s) =====================================
+
+== CreateArtifacts: migrating ================================================
+-- create_table(:artifacts)
+ -> 0.0040s
+ -> 0 rows
+Executing: UPDATE "artifacts" SET "id" = source."id", "content" = source."log" FROM (SELECT "id", "log" FROM "jobs" WHERE "jobs".id IN (SELECT id FROM "artifacts")) AS source WHERE "artifacts".id = source.id
+Executing: INSERT INTO "artifacts" ("id", "content") SELECT "id", "log" AS "content" FROM "jobs" WHERE "jobs".id NOT IN (SELECT id FROM "artifacts")
+Executing: ALTER TABLE "jobs" DROP COLUMN "log"
+Executing: UPDATE "artifacts" SET "type" = 'Artifact::Log'
+-- execute("UPDATE artifacts SET job_id = id")
+ -> 0.0010s
+ -> 0 rows
+-- execute("select setval('artifacts_id_seq', (select max(id) + 1 from artifacts));")
+ -> 0.0010s
+-- add_index(:artifacts, [:type, :job_id])
+ -> 0.0020s
+ -> 0 rows
+== CreateArtifacts: migrated (0.0140s) =======================================
+
+== CreateWorkers: migrating ==================================================
+-- create_table(:workers)
+ -> 0.0030s
+ -> 0 rows
+-- add_index(:workers, [:name, :host])
+ -> 0.0020s
+ -> 0 rows
+== CreateWorkers: migrated (0.0060s) =========================================
+
+== JobsAddRetries: migrating =================================================
+-- change_table(:jobs)
+ -> 0.0060s
+== JobsAddRetries: migrated (0.0060s) ========================================
+
+== RemoveRailsAdmin: migrating ===============================================
+-- drop_table(:rails_admin_histories)
+ -> 0.0010s
+ -> 0 rows
+== RemoveRailsAdmin: migrated (0.0030s) ======================================
+
+== AddIndexesToJobs: migrating ===============================================
+-- add_index(:jobs, [:queue, :state])
+ -> 0.0020s
+ -> 0 rows
+== AddIndexesToJobs: migrated (0.0030s) ======================================
+
+== AddRepositoryIdIndexToJobs: migrating =====================================
+-- add_index(:jobs, :repository_id)
+ -> 0.0030s
+ -> 0 rows
+== AddRepositoryIdIndexToJobs: migrated (0.0040s) ============================
+
+== AddOwnerAndTypeIndexToJobs: migrating =====================================
+-- add_index(:jobs, [:type, :owner_id, :owner_type])
+ -> 0.0030s
+ -> 0 rows
+== AddOwnerAndTypeIndexToJobs: migrated (0.0040s) ============================
+
+== WorkersAddPayloadAndLastError: migrating ==================================
+-- change_table(:workers)
+ -> 0.0010s
+== WorkersAddPayloadAndLastError: migrated (0.0010s) =========================
+
+== RepositoriesAddDescriptionAndLastLanguage: migrating ======================
+-- change_table(:repositories)
+ -> 0.0010s
+-- change_table(:builds)
+ -> 0.0000s
+== RepositoriesAddDescriptionAndLastLanguage: migrated (0.0030s) =============
+
+== BuildsAddArchivedAt: migrating ============================================
+-- change_table(:builds)
+ -> 0.0010s
+== BuildsAddArchivedAt: migrated (0.0010s) ===================================
+
+== MimicProductionDb: migrating ==============================================
+-- column_exists?(:users, :oauth2_uid, :integer)
+ -> 0.0020s
+-- column_exists?(:users, :oauth2_token, :string)
+ -> 0.0010s
+-- column_exists?(:repositories, :user_id, :integer)
+ -> 0.0020s
+== MimicProductionDb: migrated (0.0070s) =====================================
+
+== BuildsAddDuration: migrating ==============================================
+-- change_table(:builds)
+ -> 0.0010s
+== BuildsAddDuration: migrated (0.0020s) =====================================
+
+== RepositoriesAddLastBuildDuration: migrating ===============================
+-- change_table(:repositories)
+ -> 0.0010s
+== RepositoriesAddLastBuildDuration: migrated (0.0010s) ======================
+
+== CreateSslKeys: migrating ==================================================
+-- create_table(:ssl_keys)
+ -> 0.0030s
+ -> 0 rows
+-- add_index("ssl_keys", ["repository_id"], {:name=>"index_ssl_key_on_repository_id"})
+ -> 0.0020s
+ -> 0 rows
+== CreateSslKeys: migrated (0.0070s) =========================================
+
+== AddAllowFailureToJobs: migrating ==========================================
+-- add_column(:jobs, :allow_failure, :boolean, {:default=>false})
+ -> 0.0030s
+== AddAllowFailureToJobs: migrated (0.0040s) =================================
+
+== AddPullRequestFieldsToRequest: migrating ==================================
+-- add_column(:requests, :event_type, :string)
+ -> 0.0010s
+-- add_column(:requests, :comments_url, :string)
+ -> 0.0010s
+-- add_column(:requests, :base_commit, :string)
+ -> 0.0010s
+-- add_column(:requests, :head_commit, :string)
+ -> 0.0000s
+== AddPullRequestFieldsToRequest: migrated (0.0040s) =========================
+
+== AddGravatarIdToUsers: migrating ===========================================
+-- add_column(:users, :gravatar_id, :string)
+ -> 0.0010s
+== AddGravatarIdToUsers: migrated (0.0010s) ==================================
+
+== OrganizationsCreate: migrating ============================================
+-- create_table(:organizations)
+ -> 0.0030s
+ -> 0 rows
+== OrganizationsCreate: migrated (0.0040s) ===================================
+
+== JobsRenameOwnerToSource: migrating ========================================
+-- change_table(:jobs)
+ -> 0.0020s
+== JobsRenameOwnerToSource: migrated (0.0020s) ===============================
+
+== RepositoriesAddOwner: migrating ===========================================
+-- change_table(:repositories)
+ -> 0.0010s
+== RepositoriesAddOwner: migrated (0.0020s) ==================================
+
+== BuildsAddOwner: migrating =================================================
+-- change_table(:builds)
+ -> 0.0010s
+== BuildsAddOwner: migrated (0.0020s) ========================================
+
+== JobsAddOwner: migrating ===================================================
+-- change_table(:jobs)
+ -> 0.0010s
+== JobsAddOwner: migrated (0.0020s) ==========================================
+
+== RequestsAddOwner: migrating ===============================================
+-- change_table(:requests)
+ -> 0.0020s
+== RequestsAddOwner: migrated (0.0020s) ======================================
+
+== AddLocaleToUser: migrating ================================================
+-- add_column(:users, :locale, :string)
+ -> 0.0010s
+== AddLocaleToUser: migrated (0.0010s) =======================================
+
+== CreateMemberships: migrating ==============================================
+-- create_table(:memberships)
+ -> 0.0030s
+ -> 0 rows
+== CreateMemberships: migrated (0.0030s) =====================================
+
+== RepositoriesAddPrivate: migrating =========================================
+-- change_table(:repositories)
+ -> 0.0040s
+== RepositoriesAddPrivate: migrated (0.0040s) ================================
+
+== CreateUrls: migrating =====================================================
+-- create_table(:urls)
+ -> 0.0030s
+ -> 0 rows
+== CreateUrls: migrated (0.0030s) ============================================
+
+== CopyStatusToResult: migrating =============================================
+-- add_column(:builds, :result, :integer)
+ -> 0.0020s
+-- add_column(:jobs, :result, :integer)
+ -> 0.0020s
+-- add_column(:repositories, :last_build_result, :integer)
+ -> 0.0020s
+Executing: UPDATE builds SET result = status;
+Executing: UPDATE jobs SET result = status;
+Executing: UPDATE repositories SET last_build_result = last_build_status;
+== CopyStatusToResult: migrated (0.0080s) ====================================
+
+== RequestsAddIndexOnHeadCommit: migrating ===================================
+-- add_index(:requests, :head_commit)
+ -> 0.0040s
+ -> 0 rows
+== RequestsAddIndexOnHeadCommit: migrated (0.0040s) ==========================
+
+== CreatePermissions: migrating ==============================================
+-- create_table(:permissions)
+ -> 0.0050s
+ -> 0 rows
+-- add_index(:permissions, :user_id)
+ -> 0.0040s
+ -> 0 rows
+-- add_index(:permissions, :repository_id)
+ -> 0.0040s
+ -> 0 rows
+== CreatePermissions: migrated (0.0130s) =====================================
+
+== BuildsAddPreviousResult: migrating ========================================
+-- change_table(:builds)
+ -> 0.0020s
+== BuildsAddPreviousResult: migrated (0.0020s) ===============================
+
+== AddSyncInfoToUser: migrating ==============================================
+-- add_column(:users, :in_sync, :boolean)
+ -> 0.0040s
+-- add_column(:users, :synced_at, :timestamp)
+ -> 0.0010s
+== AddSyncInfoToUser: migrated (0.0050s) =====================================
+
+== RenameInSyncToIsSyncing: migrating ========================================
+-- rename_column(:users, :in_sync, :is_syncing)
+ -> 0.0010s
+== RenameInSyncToIsSyncing: migrated (0.0010s) ===============================
+
+== AddQueueToWorkers: migrating ==============================================
+-- add_column(:workers, :queue, :string)
+ -> 0.0020s
+== AddQueueToWorkers: migrated (0.0020s) =====================================
+
+== AddJobsIndexOnStateOwnerTypeOwnerId: migrating ============================
+-- add_index(:jobs, ["state", "owner_id", "owner_type"], {:name=>"index_jobs_on_state_owner_type_owner_id"})
+ -> 0.0070s
+ -> 0 rows
+== AddJobsIndexOnStateOwnerTypeOwnerId: migrated (0.0070s) ===================
+
+== AddQueuedAtToJobs: migrating ==============================================
+-- add_column(:jobs, :queued_at, :datetime)
+ -> 0.0020s
+== AddQueuedAtToJobs: migrated (0.0020s) =====================================
+
+== AddPushAndPullToPermissions: migrating ====================================
+-- add_column(:permissions, :push, :boolean, {:default=>false})
+ -> 0.0040s
+-- add_column(:permissions, :pull, :boolean, {:default=>false})
+ -> 0.0030s
+-- change_column_default(:permissions, :admin, false)
+ -> 0.0020s
+ -> 0 rows
+== AddPushAndPullToPermissions: migrated (0.0100s) ===========================
+
+== AddBuildsIndexOnRepositoryIdAndState: migrating ===========================
+-- remove_index("builds", {:column=>"repository_id"})
+ -> 0.0030s
+ -> 0 rows
+-- add_index("builds", ["repository_id", "state"])
+ -> 0.0030s
+ -> 0 rows
+== AddBuildsIndexOnRepositoryIdAndState: migrated (0.0060s) ==================
+
+== ArtifactsAddAggregatedAt: migrating =======================================
+-- add_column(:artifacts, :aggregated_at, :datetime)
+ -> 0.0020s
+== ArtifactsAddAggregatedAt: migrated (0.0040s) ==============================
+
+== AddArtifactParts: migrating ===============================================
+-- create_table(:artifact_parts)
+ -> 0.0040s
+ -> 0 rows
+-- add_index(:artifact_parts, [:artifact_id, :number])
+ -> 0.0030s
+ -> 0 rows
+== AddArtifactParts: migrated (0.0080s) ======================================
+
+== BuildsAddIndexOnFinishedAt: migrating =====================================
+-- add_index("builds", "finished_at")
+ -> 0.0030s
+ -> 0 rows
+== BuildsAddIndexOnFinishedAt: migrated (0.0030s) ============================
+
+== CommitsAddIndexOnBranch: migrating ========================================
+-- add_index("commits", "branch")
+ -> 0.0030s
+ -> 0 rows
+== CommitsAddIndexOnBranch: migrated (0.0030s) ===============================
+
+== JobsAddIndexOnCreatedAt: migrating ========================================
+-- add_index("jobs", "created_at")
+ -> 0.0050s
+ -> 0 rows
+== JobsAddIndexOnCreatedAt: migrated (0.0050s) ===============================
+
+== CreateEvents: migrating ===================================================
+-- create_table(:events)
+ -> 0.0040s
+ -> 0 rows
+== CreateEvents: migrated (0.0040s) ==========================================
+
+== RequestsAddResultAndMessage: migrating ====================================
+-- add_column(:requests, :result, :string)
+ -> 0.0010s
+-- add_column(:requests, :message, :string)
+ -> 0.0010s
+== RequestsAddResultAndMessage: migrated (0.0030s) ===========================
+
+== CreateBroadcasts: migrating ===============================================
+-- create_table(:broadcasts)
+ -> 0.0050s
+ -> 0 rows
+== CreateBroadcasts: migrated (0.0060s) ======================================
+
+== EventsChangeDataToText: migrating =========================================
+-- change_column(:events, :data, :text)
+ -> 0.0010s
+== EventsChangeDataToText: migrated (0.0010s) ================================
+
+== AddEventTypeToBuilds: migrating ===========================================
+-- add_column(:builds, :event_type, :string)
+ -> 0.0010s
+== AddEventTypeToBuilds: migrated (0.0020s) ==================================
+
+== UpdateEventTypeOnBuilds: migrating ========================================
+-- execute(" UPDATE builds\n SET event_type = requests.event_type\n FROM requests\n WHERE builds.request_id = requests.id\n")
+ -> 0.0010s
+ -> 0 rows
+== UpdateEventTypeOnBuilds: migrated (0.0010s) ===============================
+
+== AddIndexOnRepositoryIdAndEventTypeToBuilds: migrating =====================
+-- add_index(:builds, [:repository_id, :event_type])
+ -> 0.0040s
+ -> 0 rows
+== AddIndexOnRepositoryIdAndEventTypeToBuilds: migrated (0.0040s) ============
+
+== RepositoriesAddLastBuildState: migrating ==================================
+-- add_column(:repositories, :last_build_state, :string)
+ -> 0.0010s
+== RepositoriesAddLastBuildState: migrated (0.0020s) =========================
+
+== BuildsAddPreviousState: migrating =========================================
+-- add_column(:builds, :previous_state, :string)
+ -> 0.0010s
+== BuildsAddPreviousState: migrated (0.0010s) ================================
+
+== ArtifactPartsAddFinal: migrating ==========================================
+-- add_column(:artifact_parts, :final, :boolean)
+ -> 0.0010s
+-- add_column(:artifact_parts, :created_at, :timestamp)
+ -> 0.0010s
+== ArtifactPartsAddFinal: migrated (0.0020s) =================================
+
+== ArtifactPartsChangeContentToText: migrating ===============================
+-- change_column(:artifact_parts, :content, :text)
+ -> 0.0020s
+== ArtifactPartsChangeContentToText: migrated (0.0020s) ======================
+
+== ArtifactPartsAddIndexOnArtifactId: migrating ==============================
+-- add_index(:artifact_parts, :artifact_id)
+ -> 0.0030s
+ -> 0 rows
+== ArtifactPartsAddIndexOnArtifactId: migrated (0.0040s) =====================
+
+== ArtifactPartsRemoveIndexOnArtifactId: migrating ===========================
+-- remove_index(:artifact_parts, :artifact_id)
+ -> 0.0020s
+ -> 0 rows
+== ArtifactPartsRemoveIndexOnArtifactId: migrated (0.0030s) ==================
+
+== AddGithubScopesToUser: migrating ==========================================
+-- add_column(:users, :github_scopes, :text)
+ -> 0.0010s
+== AddGithubScopesToUser: migrated (0.0010s) =================================
+
+== AddIndexOnLastSeenAtToWorkers: migrating ==================================
+-- add_index(:workers, :last_seen_at)
+ -> 0.0030s
+ -> 0 rows
+== AddIndexOnLastSeenAtToWorkers: migrated (0.0030s) =========================
+
+== CacheFullNameInWorkers: migrating =========================================
+-- add_column(:workers, :full_name, :string)
+ -> 0.0010s
+-- add_index(:workers, :full_name)
+ -> 0.0030s
+ -> 0 rows
+== CacheFullNameInWorkers: migrated (0.0040s) ================================
+
+== ArtifactsAddArchivedAt: migrating =========================================
+-- add_column(:artifacts, :archived_at, :datetime)
+ -> 0.0010s
+-- add_index(:artifacts, :archived_at)
+ -> 0.0030s
+ -> 0 rows
+== ArtifactsAddArchivedAt: migrated (0.0040s) ================================
+
+== ArtifactsAddArchivingAndVerified: migrating ===============================
+-- add_column(:artifacts, :archiving, :boolean)
+ -> 0.0020s
+-- add_column(:artifacts, :archive_verified, :boolean)
+ -> 0.0010s
+-- add_index(:artifacts, :archiving)
+ -> 0.0030s
+ -> 0 rows
+-- add_index(:artifacts, :archive_verified)
+ -> 0.0030s
+ -> 0 rows
+== ArtifactsAddArchivingAndVerified: migrated (0.0090s) ======================
+
+== CreateEmails: migrating ===================================================
+-- create_table(:emails)
+ -> 0.0020s
+ -> 0 rows
+-- add_index(:emails, :user_id)
+ -> 0.0020s
+ -> 0 rows
+-- add_index(:emails, :email)
+ -> 0.0020s
+ -> 0 rows
+== CreateEmails: migrated (0.0070s) ==========================================
+
+== CreateLogs: migrating =====================================================
+-- create_table(:logs)
+ -> 0.0030s
+ -> 0 rows
+-- add_index(:logs, :job_id)
+ -> 0.0020s
+ -> 0 rows
+-- add_index(:logs, :archive_verified)
+ -> 0.0030s
+ -> 0 rows
+-- add_index(:logs, :archived_at)
+ -> 0.0030s
+ -> 0 rows
+== CreateLogs: migrated (0.0190s) ============================================
+
+== CreateLogParts: migrating =================================================
+-- create_table(:log_parts)
+ -> 0.0040s
+ -> 0 rows
+-- add_index(:log_parts, [:log_id, :number])
+ -> 0.0020s
+ -> 0 rows
+== CreateLogParts: migrated (0.0090s) ========================================
+
+== AddReferenceOnLogPartsLogId: migrating ====================================
+-- execute("ALTER TABLE log_parts ADD CONSTRAINT log_parts_log_id_fk FOREIGN KEY (log_id) REFERENCES logs (id);")
+ -> 0.0020s
+ -> 0 rows
+== AddReferenceOnLogPartsLogId: migrated (0.0020s) ===========================
+
+== RenameArtifacts: migrating ================================================
+-- rename_table(:artifacts, :artifacts_backup)
+ -> 0.0040s
+-- rename_table(:artifact_parts, :artifact_parts_backup)
+ -> 0.0030s
+== RenameArtifacts: migrated (0.0070s) =======================================
+
+== DropArtifacts: migrating ==================================================
+-- drop_table(:artifacts_backup)
+ -> 0.0020s
+ -> 0 rows
+-- drop_table(:artifact_parts_backup)
+ -> 0.0020s
+ -> 0 rows
+== DropArtifacts: migrated (0.0040s) =========================================
+
+== AddNotNullConstraintOnLogPartsLogId: migrating ============================
+-- execute("ALTER TABLE log_parts ALTER COLUMN log_id SET NOT NULL;")
+ -> 0.0000s
+ -> 0 rows
+== AddNotNullConstraintOnLogPartsLogId: migrated (0.0010s) ===================
+
+== AddPullRequestTitleToBuilds: migrating ====================================
+-- add_column(:builds, :pull_request_title, :text)
+ -> 0.0010s
+== AddPullRequestTitleToBuilds: migrated (0.0010s) ===========================
+
+== AddPullRequestNumberToBuilds: migrating ===================================
+-- add_column(:builds, :pull_request_number, :integer)
+ -> 0.0010s
+== AddPullRequestNumberToBuilds: migrated (0.0010s) ==========================
+
+== AddIndexToBuildsRequestId: migrating ======================================
+-- execute("CREATE INDEX CONCURRENTLY index_builds_on_request_id ON builds(request_id)")
+ -> 0.0010s
+ -> 0 rows
+== AddIndexToBuildsRequestId: migrated (0.0010s) =============================
+
+== AddIndexToJobsOnOwnerIdOwnerTypeAndState: migrating =======================
+-- execute("CREATE INDEX CONCURRENTLY index_jobs_on_owner_id_and_owner_type_and_state ON jobs(owner_id, owner_type, state)")
+ -> 0.0010s
+ -> 0 rows
+== AddIndexToJobsOnOwnerIdOwnerTypeAndState: migrated (0.0010s) ==============
+
+== AddBranchToBuilds: migrating ==============================================
+-- add_column(:builds, :branch, :string)
+ -> 0.0010s
+== AddBranchToBuilds: migrated (0.0010s) =====================================
+
+== AddMoreIndexesToBuilds: migrating =========================================
+-- execute(" CREATE INDEX CONCURRENTLY index_builds_on_repository_id_and_event_type_and_state_and_branch\n ON builds(repository_id, event_type, state, branch);\n")
+ -> 0.0010s
+ -> 0 rows
+== AddMoreIndexesToBuilds: migrated (0.0010s) ================================
+
+== AddIndexOnBuildState: migrating ===========================================
+-- execute(" CREATE INDEX CONCURRENTLY index_builds_on_state\n ON builds(state);\n")
+ -> 0.0010s
+ -> 0 rows
+== AddIndexOnBuildState: migrated (0.0010s) ==================================
+
+== UpdateFinishedJobs: migrating =============================================
+-- execute("UPDATE jobs SET state = 'passed' WHERE state = 'finished' AND result = 0 AND type = 'Job::Test'")
+ -> 0.0010s
+ -> 0 rows
+-- execute("UPDATE jobs SET state = 'failed' WHERE state = 'finished' AND result = 1 AND type = 'Job::Test'")
+ -> 0.0010s
+ -> 0 rows
+-- execute("UPDATE jobs SET state = 'errored' WHERE state = 'finished' AND result IS NULL AND type = 'Job::Test'")
+ -> 0.0010s
+ -> 0 rows
+-- execute("SELECT COUNT(*) FROM jobs WHERE state = 'finished' AND type = 'Job::Test'")
+ -> 0.0000s
+== UpdateFinishedJobs: migrated (0.0040s) ====================================
+
+== UpdateFinishedBuilds: migrating ===========================================
+-- execute("UPDATE builds SET state = 'passed' WHERE state = 'finished' AND result = 0")
+ -> 0.0010s
+ -> 0 rows
+-- execute("UPDATE builds SET state = 'failed' WHERE state = 'finished' AND result = 1")
+ -> 0.0000s
+ -> 0 rows
+-- execute("UPDATE builds SET state = 'errored' WHERE state = 'finished' AND result IS NULL")
+ -> 0.0000s
+ -> 0 rows
+-- execute("SELECT COUNT(*) FROM builds WHERE state = 'finished'")
+ -> 0.0010s
+== UpdateFinishedBuilds: migrated (0.0030s) ==================================
+
+== RemoveUnusedBuildColumns: migrating =======================================
+-- remove_column(:builds, :result)
+ -> 0.0010s
+-- remove_column(:builds, :status)
+ -> 0.0010s
+-- remove_column(:builds, :previous_result)
+ -> 0.0010s
+-- remove_column(:builds, :agent)
+ -> 0.0010s
+-- remove_column(:builds, :language)
+ -> 0.0010s
+-- remove_column(:builds, :archived_at)
+ -> 0.0000s
+== RemoveUnusedBuildColumns: migrated (0.0070s) ==============================
+
+== RemoveUnusedJobColumns: migrating =========================================
+-- remove_column(:jobs, :status)
+ -> 0.0010s
+-- remove_column(:jobs, :job_id)
+ -> 0.0010s
+-- remove_column(:jobs, :retries)
+ -> 0.0010s
+== RemoveUnusedJobColumns: migrated (0.0030s) ================================
+
+== AddGithubIdToUsers: migrating =============================================
+-- add_column(:repositories, :github_id, :integer)
+ -> 0.0010s
+-- add_index(:repositories, :github_id)
+ -> 0.0030s
+ -> 0 rows
+== AddGithubIdToUsers: migrated (0.0050s) ====================================
+
+== AddDefaultBranchToRepositories: migrating =================================
+-- add_column(:repositories, :default_branch, :string)
+ -> 0.0010s
+== AddDefaultBranchToRepositories: migrated (0.0010s) ========================
+
+== AddGithubLanguageToRepositories: migrating ================================
+-- add_column(:repositories, :github_language, :string)
+ -> 0.0010s
+== AddGithubLanguageToRepositories: migrated (0.0010s) =======================
+
+== AddPurgedAtToLogs: migrating ==============================================
+-- add_column(:logs, :purged_at, :timestamp)
+ -> 0.0010s
+== AddPurgedAtToLogs: migrated (0.0010s) =====================================
+
+== RemoveUnusedRepositoryColumns: migrating ==================================
+-- remove_column(:repositories, :last_duration)
+ -> 0.0010s
+-- remove_column(:repositories, :last_build_status)
+ -> 0.0010s
+-- remove_column(:repositories, :last_build_result)
+ -> 0.0010s
+-- remove_column(:repositories, :last_build_language)
+ -> 0.0010s
+== RemoveUnusedRepositoryColumns: migrated (0.0040s) =========================
+
+== AddUniqueIndexOnUsersGithubIdAndRemoveUniqueIndexOnUsersLogin: migrating ==
+-- execute("DROP INDEX index_users_on_login")
+ -> 0.0010s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_users_on_login ON users(login)")
+ -> 0.0010s
+ -> 0 rows
+-- execute("DROP INDEX index_users_on_github_id")
+ -> 0.0010s
+ -> 0 rows
+-- execute("CREATE UNIQUE INDEX CONCURRENTLY index_users_on_github_id ON users(github_id)")
+ -> 0.0010s
+ -> 0 rows
+== AddUniqueIndexOnUsersGithubIdAndRemoveUniqueIndexOnUsersLogin: migrated (0.0040s)
+
+== AddExtraColumnsToOrganizations: migrating =================================
+-- add_column(:organizations, :avatar_url, :string)
+ -> 0.0010s
+-- add_column(:organizations, :location, :string)
+ -> 0.0010s
+-- add_column(:organizations, :email, :string)
+ -> 0.0000s
+-- add_column(:organizations, :company, :string)
+ -> 0.0000s
+-- add_column(:organizations, :homepage, :string)
+ -> 0.0000s
+== AddExtraColumnsToOrganizations: migrated (0.0050s) ========================
+
+== AddIndexOnGithubIdToOrganizations: migrating ==============================
+-- execute("CREATE UNIQUE INDEX CONCURRENTLY index_organizations_on_github_id ON organizations(github_id)")
+ -> 0.0010s
+ -> 0 rows
+== AddIndexOnGithubIdToOrganizations: migrated (0.0010s) =====================
+
+== CreateAnnotations: migrating ==============================================
+-- create_table(:annotations)
+ -> 0.0030s
+ -> 0 rows
+== CreateAnnotations: migrated (0.0040s) =====================================
+
+== CreateAnnotationProviders: migrating ======================================
+-- create_table(:annotation_providers)
+ -> 0.0030s
+ -> 0 rows
+== CreateAnnotationProviders: migrated (0.0030s) =============================
+
+== AddAnnotationProviderIdToAnnotations: migrating ===========================
+-- add_column(:annotations, :annotation_provider_id, :integer, {:null=>false})
+ -> 0.0010s
+ -> 0 rows
+== AddAnnotationProviderIdToAnnotations: migrated (0.0010s) ==================
+
+== AddCanceledAtToJobsAndBuilds: migrating ===================================
+-- add_column(:builds, :canceled_at, :datetime)
+ -> 0.0010s
+-- add_column(:jobs, :canceled_at, :datetime)
+ -> 0.0010s
+== AddCanceledAtToJobsAndBuilds: migrated (0.0020s) ==========================
+
+== AddIndexOnRepositoryGithubId: migrating ===================================
+-- execute("DROP INDEX index_repositories_on_github_id")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_repositories_on_github_id ON repositories(github_id)")
+ -> 0.0000s
+ -> 0 rows
+== AddIndexOnRepositoryGithubId: migrated (0.0020s) ==========================
+
+== AddCachedMatrixIdsToBuilds: migrating =====================================
+-- execute("ALTER TABLE builds ADD COLUMN cached_matrix_ids integer[]")
+ -> 0.0010s
+ -> 0 rows
+== AddCachedMatrixIdsToBuilds: migrated (0.0010s) ============================
+
+== CreateIndexOnBuildsIdDescAndRepositoryIdAndEventType: migrating ===========
+-- execute("CREATE INDEX CONCURRENTLY index_builds_on_id_repository_id_and_event_type_desc ON builds (id DESC, repository_id, event_type);")
+ -> 0.0010s
+ -> 0 rows
+== CreateIndexOnBuildsIdDescAndRepositoryIdAndEventType: migrated (0.0010s) ==
+
+== AddUniqueIndexOnRepositoryGithubId: migrating =============================
+-- execute("DROP INDEX index_repositories_on_github_id")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE UNIQUE INDEX CONCURRENTLY index_repositories_on_github_id ON repositories(github_id)")
+ -> 0.0000s
+ -> 0 rows
+== AddUniqueIndexOnRepositoryGithubId: migrated (0.0020s) ====================
+
+== AddSettingsToRepositories: migrating ======================================
+-- add_column(:repositories, :settings, :json)
+ -> 0.0010s
+== AddSettingsToRepositories: migrated (0.0010s) =============================
+
+== RemoveWorkersTableAndIndexes: migrating ===================================
+-- drop_table(:workers)
+ -> 0.0020s
+ -> 0 rows
+== RemoveWorkersTableAndIndexes: migrated (0.0020s) ==========================
+
+== RemoveEventsTable: migrating ==============================================
+-- drop_table(:events)
+ -> 0.0020s
+ -> 0 rows
+== RemoveEventsTable: migrated (0.0020s) =====================================
+
+== RemoveAnnotationImageInfo: migrating ======================================
+-- remove_column(:annotations, :image_url)
+ -> 0.0010s
+-- remove_column(:annotations, :image_alt)
+ -> 0.0010s
+== RemoveAnnotationImageInfo: migrated (0.0030s) =============================
+
+== AddStatusToAnnotations: migrating =========================================
+-- add_column(:annotations, :status, :string)
+ -> 0.0010s
+== AddStatusToAnnotations: migrated (0.0010s) ================================
+
+== AddIndicesToRequests: migrating ===========================================
+-- execute("CREATE INDEX CONCURRENTLY index_requests_on_repository_id ON requests(repository_id)")
+ -> 0.0010s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_requests_on_commit_id ON requests(commit_id)")
+ -> 0.0010s
+ -> 0 rows
+== AddIndicesToRequests: migrated (0.0020s) ==================================
+
+== AddIndicesToMemberships: migrating ========================================
+-- execute("CREATE INDEX CONCURRENTLY index_memberships_on_user_id ON memberships(user_id)")
+ -> 0.0010s
+ -> 0 rows
+== AddIndicesToMemberships: migrated (0.0010s) ===============================
+
+== RemoveUnusedIndices: migrating ============================================
+-- execute("DROP INDEX CONCURRENTLY index_commits_on_commit")
+ -> 0.0000s
+ -> 0 rows
+-- execute("DROP INDEX CONCURRENTLY index_builds_on_state")
+ -> 0.0000s
+ -> 0 rows
+-- execute("DROP INDEX CONCURRENTLY index_commits_on_branch")
+ -> 0.0000s
+ -> 0 rows
+-- execute("DROP INDEX CONCURRENTLY index_users_on_github_oauth_token")
+ -> 0.0010s
+ -> 0 rows
+-- execute("DROP INDEX CONCURRENTLY index_builds_on_finished_at")
+ -> 0.0010s
+ -> 0 rows
+-- execute("DROP INDEX CONCURRENTLY index_jobs_on_queue_and_state")
+ -> 0.0010s
+ -> 0 rows
+-- execute("DROP INDEX CONCURRENTLY index_jobs_on_created_at")
+ -> 0.0010s
+ -> 0 rows
+== RemoveUnusedIndices: migrated (0.0060s) ===================================
+
+== AddRemovedInfoToLogs: migrating ===========================================
+-- add_column(:logs, :removed_at, :timestamp)
+ -> 0.0010s
+-- add_column(:logs, :removed_by, :integer)
+ -> 0.0010s
+== AddRemovedInfoToLogs: migrated (0.0050s) ==================================
+
+== AddEducationFieldToUser: migrating ========================================
+-- add_column(:users, :education, :boolean)
+ -> 0.0010s
+== AddEducationFieldToUser: migrated (0.0010s) ===============================
+
+== JobsAddReceivedAt: migrating ==============================================
+-- add_column(:jobs, :received_at, :datetime)
+ -> 0.0010s
+== JobsAddReceivedAt: migrated (0.0010s) =====================================
+
+== BuildsAddReceivedAt: migrating ============================================
+-- add_column(:builds, :received_at, :datetime)
+ -> 0.0010s
+== BuildsAddReceivedAt: migrated (0.0010s) ===================================
+
+== AddIndexOnRepositoryIdToCommits: migrating ================================
+-- execute("DROP INDEX IF EXISTS index_commits_on_repository_id")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_commits_on_repository_id ON commits(repository_id)")
+ -> 0.0010s
+ -> 0 rows
+== AddIndexOnRepositoryIdToCommits: migrated (0.0010s) =======================
+
+== IndexRequestsOnCreatedAt: migrating =======================================
+-- execute("DROP INDEX IF EXISTS index_requests_on_created_at")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_requests_on_created_at ON requests(created_at)")
+ -> 0.0000s
+ -> 0 rows
+== IndexRequestsOnCreatedAt: migrated (0.0020s) ==============================
+
+== CreateBranches: migrating =================================================
+-- create_table(:branches)
+ -> 0.0020s
+ -> 0 rows
+-- add_index(:branches, [:repository_id, :name], {:unique=>true})
+ -> 0.0020s
+ -> 0 rows
+== CreateBranches: migrated (0.0060s) ========================================
+
+== AddNextBuildNumberToRepository: migrating =================================
+-- add_column(:repositories, :next_build_number, :integer)
+ -> 0.0010s
+== AddNextBuildNumberToRepository: migrated (0.0010s) ========================
+
+== AddActiveIndexToRepository: migrating =====================================
+-- execute("DROP INDEX IF EXISTS index_repositories_on_active")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_repositories_on_active ON repositories(active)")
+ -> 0.0010s
+ -> 0 rows
+== AddActiveIndexToRepository: migrated (0.0010s) ============================
+
+== AddOwnerTypeAndOwnerIdIndexesToBuilds: migrating ==========================
+-- execute("DROP INDEX IF EXISTS index_builds_on_owner_type")
+ -> 0.0010s
+ -> 0 rows
+-- execute("DROP INDEX IF EXISTS index_builds_on_owner_id")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_builds_on_owner_type ON builds(owner_type)")
+ -> 0.0010s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_builds_on_owner_id ON builds(owner_id)")
+ -> 0.0000s
+ -> 0 rows
+== AddOwnerTypeAndOwnerIdIndexesToBuilds: migrated (0.0040s) =================
+
+== AddOwnerTypeAndOwnerIdIndexesToRepositories: migrating ====================
+-- execute("DROP INDEX IF EXISTS index_repositories_on_owner_type")
+ -> 0.0000s
+ -> 0 rows
+-- execute("DROP INDEX IF EXISTS index_repositories_on_owner_id")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_repositories_on_owner_type ON repositories(owner_type)")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_repositories_on_owner_id ON repositories(owner_id)")
+ -> 0.0000s
+ -> 0 rows
+== AddOwnerTypeAndOwnerIdIndexesToRepositories: migrated (0.0040s) ===========
+
+== AddSlugIndexToRepositories: migrating =====================================
+-- execute("CREATE EXTENSION IF NOT EXISTS pg_trgm")
+ -> 0.0070s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_repositories_on_slug ON repositories USING gin((owner_name || '/' || name) gin_trgm_ops)")
+ -> 0.0010s
+ -> 0 rows
+== AddSlugIndexToRepositories: migrated (0.0090s) ============================
+
+== AddTokenIndexToTokens: migrating ==========================================
+-- execute("DROP INDEX IF EXISTS index_tokens_on_token")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_tokens_on_token ON tokens(token)")
+ -> 0.0010s
+ -> 0 rows
+== AddTokenIndexToTokens: migrated (0.0020s) =================================
+
+== AddLoginIndexToOrganizations: migrating ===================================
+-- execute("DROP INDEX IF EXISTS index_organizations_on_login")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_organizations_on_login ON organizations(login)")
+ -> 0.0000s
+ -> 0 rows
+== AddLoginIndexToOrganizations: migrated (0.0010s) ==========================
+
+== AddLowerCaseIndices: migrating ============================================
+-- execute("DROP INDEX IF EXISTS index_organizations_on_lower_login")
+ -> 0.0010s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_organizations_on_lower_login ON organizations USING btree(lower(login))")
+ -> 0.0010s
+ -> 0 rows
+-- execute("DROP INDEX IF EXISTS index_users_on_lower_login")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_users_on_lower_login ON users USING btree(lower(login))")
+ -> 0.0000s
+ -> 0 rows
+-- execute("DROP INDEX IF EXISTS index_repositories_on_lower_name")
+ -> 0.0000s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_repositories_on_lower_name ON repositories USING btree(lower(name))")
+ -> 0.0010s
+ -> 0 rows
+-- execute("DROP INDEX IF EXISTS index_repositories_on_lower_owner_name")
+ -> 0.0010s
+ -> 0 rows
+-- execute("CREATE INDEX CONCURRENTLY index_repositories_on_lower_owner_name ON repositories USING btree(lower(owner_name))")
+ -> 0.0010s
+ -> 0 rows
+== AddLowerCaseIndices: migrated (0.0070s) ===================================
+
+== RepositoriesAddIndexOwnerName: migrating ==================================
+-- execute("CREATE INDEX CONCURRENTLY index_repositories_on_owner_name ON repositories(owner_name)")
+ -> 0.0010s
+ -> 0 rows
+== RepositoriesAddIndexOwnerName: migrated (0.0010s) =========================
+
+== RepositoriesAddIndexName: migrating =======================================
+-- execute("CREATE INDEX CONCURRENTLY index_repositories_on_name ON repositories(name)")
+ -> 0.0010s
+ -> 0 rows
+== RepositoriesAddIndexName: migrated (0.0010s) ==============================
+
+== RepositoriesDropIndexOwnerNameName: migrating =============================
+-- execute("DROP INDEX CONCURRENTLY index_repositories_on_owner_name_and_name")
+ -> 0.0010s
+ -> 0 rows
+== RepositoriesDropIndexOwnerNameName: migrated (0.0010s) ====================
+
+== BuildsAddIndexEventType: migrating ========================================
+-- execute("CREATE INDEX CONCURRENTLY index_builds_on_event_type ON builds (event_type)")
+ -> 0.0010s
+ -> 0 rows
+== BuildsAddIndexEventType: migrated (0.0010s) ===============================
+
+== BuildsAddIndexRepositoryId: migrating =====================================
+-- execute("CREATE INDEX CONCURRENTLY index_builds_on_repository_id ON builds (repository_id)")
+ -> 0.0020s
+ -> 0 rows
+== BuildsAddIndexRepositoryId: migrated (0.0020s) ============================
+
+== BuildsAddIndexState: migrating ============================================
+-- execute("CREATE INDEX CONCURRENTLY index_builds_on_state ON builds (state)")
+ -> 0.0010s
+ -> 0 rows
+== BuildsAddIndexState: migrated (0.0010s) ===================================
+
+== BuildsAddIndexBranch: migrating ===========================================
+-- execute("CREATE INDEX CONCURRENTLY index_builds_on_branch ON builds (branch)")
+ -> 0.0010s
+ -> 0 rows
+== BuildsAddIndexBranch: migrated (0.0020s) ==================================
+
+== BuildsDropIndexRepositoryIdAndState: migrating ============================
+-- execute("DROP INDEX CONCURRENTLY index_builds_on_repository_id_and_state")
+ -> 0.0000s
+ -> 0 rows
+== BuildsDropIndexRepositoryIdAndState: migrated (0.0020s) ===================
+
+== BuildsDropIndexRepositoryIdAndEventType: migrating ========================
+-- execute("DROP INDEX CONCURRENTLY index_builds_on_repository_id_and_event_type")
+ -> 0.0010s
+ -> 0 rows
+== BuildsDropIndexRepositoryIdAndEventType: migrated (0.0010s) ===============
+
+== BuildsDropIndexIdRepositoryIdAndEventTypeDesc: migrating ==================
+-- execute("DROP INDEX CONCURRENTLY index_builds_on_id_repository_id_and_event_type_desc")
+ -> 0.0010s
+ -> 0 rows
+== BuildsDropIndexIdRepositoryIdAndEventTypeDesc: migrated (0.0010s) =========
+
+== BuildsDropIndexRepositoryIdAndEventTypeAndStateAndBranch: migrating =======
+-- execute("DROP INDEX CONCURRENTLY index_builds_on_repository_id_and_event_type_and_state_and_bran")
+ -> 0.0010s
+ -> 0 rows
+== BuildsDropIndexRepositoryIdAndEventTypeAndStateAndBranch: migrated (0.0020s)
+
+== JobsAddIndexOwnerId: migrating ============================================
+-- execute("CREATE INDEX CONCURRENTLY index_jobs_on_owner_id ON jobs (owner_id)")
+ -> 0.0010s
+ -> 0 rows
+== JobsAddIndexOwnerId: migrated (0.0020s) ===================================
+
+== JobsAddIndexOwnerType: migrating ==========================================
+-- execute("CREATE INDEX CONCURRENTLY index_jobs_on_owner_type ON jobs (owner_type)")
+ -> 0.0020s
+ -> 0 rows
+== JobsAddIndexOwnerType: migrated (0.0020s) =================================
+
+== JobsAddIndexSourceId: migrating ===========================================
+-- execute("CREATE INDEX CONCURRENTLY index_jobs_on_source_id ON jobs (source_id)")
+ -> 0.0010s
+ -> 0 rows
+== JobsAddIndexSourceId: migrated (0.0020s) ==================================
+
+== JobsAddIndexSourceType: migrating =========================================
+-- execute("CREATE INDEX CONCURRENTLY index_jobs_on_source_type ON jobs (source_type)")
+ -> 0.0010s
+ -> 0 rows
+== JobsAddIndexSourceType: migrated (0.0010s) ================================
+
+== JobsAddIndexType: migrating ===============================================
+-- execute("CREATE INDEX CONCURRENTLY index_jobs_on_type ON jobs (type)")
+ -> 0.0010s
+ -> 0 rows
+== JobsAddIndexType: migrated (0.0010s) ======================================
+
+== JobsDropIndexOwnerIdAndOwnerTypeAndState: migrating =======================
+-- execute("DROP INDEX CONCURRENTLY index_jobs_on_owner_id_and_owner_type_and_state")
+ -> 0.0010s
+ -> 0 rows
+== JobsDropIndexOwnerIdAndOwnerTypeAndState: migrated (0.0010s) ==============
+
+== JobsDropIndexStateOwnerTypeOwnerId: migrating =============================
+-- execute("DROP INDEX CONCURRENTLY index_jobs_on_state_owner_type_owner_id")
+ -> 0.0000s
+ -> 0 rows
+== JobsDropIndexStateOwnerTypeOwnerId: migrated (0.0000s) ====================
+
+== JobsDropIndexTypeAndSourceIdAndSourceType: migrating ======================
+-- execute("DROP INDEX CONCURRENTLY index_jobs_on_type_and_owner_id_and_owner_type")
+ -> 0.0010s
+ -> 0 rows
+== JobsDropIndexTypeAndSourceIdAndSourceType: migrated (0.0010s) =============
+
+== JobsAddIndexState: migrating ==============================================
+-- execute("CREATE INDEX CONCURRENTLY index_jobs_on_state ON jobs (state)")
+ -> 0.0010s
+ -> 0 rows
+== JobsAddIndexState: migrated (0.0010s) =====================================
+
+== JobsAddIndexQueue: migrating ==============================================
+-- execute("CREATE INDEX CONCURRENTLY index_jobs_on_queue ON jobs (queue)")
+ -> 0.0000s
+ -> 0 rows
+== JobsAddIndexQueue: migrated (0.0010s) =====================================
+
+== TokensAddIndexUserId: migrating ===========================================
+-- execute("CREATE INDEX CONCURRENTLY index_tokens_on_user_id ON tokens (user_id)")
+ -> 0.0000s
+ -> 0 rows
+== TokensAddIndexUserId: migrated (0.0010s) ==================================
+
+== ReposAddInvalidatedAt: migrating ==========================================
+-- add_column(:repositories, :invalidated_at, :datetime)
+ -> 0.0010s
+== ReposAddInvalidatedAt: migrated (0.0020s) =================================
+
+== BroadcastsAddCategory: migrating ==========================================
+-- add_column(:broadcasts, :category, :string)
+ -> 0.0000s
+== BroadcastsAddCategory: migrated (0.0020s) =================================
+
+** Invoke db:_dump (first_time)
+** Execute db:_dump
+** Invoke db:structure:dump (first_time)
+** Invoke environment
+** Invoke db:load_config
+** Execute db:structure:dump
+travis_time:end:04aa0144:start=1447267252607919731,finish=1447267265299635161,duration=12691715430
+[0Ktravis_fold:end:before_script.2
+[0Ktravis_time:start:17376fe8
+[0K$ ./build.sh
+I TID=13182 Setting up Travis::Core
+/home/travis/.rvm/rubies/jruby-1.7.16/bin/jruby -S rspec ./spec/travis/addons/archive/event_handler_spec.rb ./spec/travis/addons/archive/task_spec.rb ./spec/travis/addons/campfire/event_handler_spec.rb ./spec/travis/addons/campfire/instruments/event_handler_spec.rb ./spec/travis/addons/email/event_handler_spec.rb ./spec/travis/addons/email/instruments/event_handler_spec.rb ./spec/travis/addons/flowdock/event_handler_spec.rb ./spec/travis/addons/flowdock/instruments/event_handler_spec.rb ./spec/travis/addons/github_status/event_handler_spec.rb ./spec/travis/addons/github_status/instruments/event_handler_spec.rb ./spec/travis/addons/hipchat/event_handler_spec.rb ./spec/travis/addons/hipchat/instruments/event_handler_spec.rb ./spec/travis/addons/irc/event_handler_spec.rb ./spec/travis/addons/irc/instruments/event_handler_spec.rb ./spec/travis/addons/pusher/event_handler_spec.rb ./spec/travis/addons/pusher/instruments/event_handler_spec.rb ./spec/travis/addons/pushover/event_handler_spec.rb ./spec/travis/addons/pushover/instruments/event_handler_spec.rb ./spec/travis/addons/slack/event_handler_spec.rb ./spec/travis/addons/slack/instruments/event_handler_spec.rb ./spec/travis/addons/states_cache/event_handler_spec.rb ./spec/travis/addons/webhook/event_handler_spec.rb ./spec/travis/addons/webhook/instruments/event_handler_spec.rb ./spec/travis/api/v0/event/build_spec.rb ./spec/travis/api/v0/pusher/annotation/created_spec.rb ./spec/travis/api/v0/pusher/annotation/updated_spec.rb ./spec/travis/api/v0/pusher/build_spec.rb ./spec/travis/api/v0/pusher/job_spec.rb ./spec/travis/api/v0/worker/job/test_spec.rb ./spec/travis/api/v1/archive/build/job_spec.rb ./spec/travis/api/v1/archive/build_spec.rb ./spec/travis/api/v1/http/branches_spec.rb ./spec/travis/api/v1/http/build_spec.rb ./spec/travis/api/v1/http/builds_spec.rb ./spec/travis/api/v1/http/hooks_spec.rb ./spec/travis/api/v1/http/job_spec.rb ./spec/travis/api/v1/http/jobs_spec.rb ./spec/travis/api/v1/http/repositories_spec.rb ./spec/travis/api/v1/http/repository_spec.rb ./spec/travis/api/v1/http/user_spec.rb ./spec/travis/api/v1/webhook/build/finished_spec.rb ./spec/travis/api_spec.rb ./spec/travis/chunkifier_spec.rb ./spec/travis/commit_command_spec.rb ./spec/travis/config_spec.rb ./spec/travis/enqueue/services/enqueue_jobs/limit_spec.rb ./spec/travis/enqueue/services/enqueue_jobs_spec.rb ./spec/travis/event/config_spec.rb ./spec/travis/event/handler/metrics_spec.rb ./spec/travis/event/handler/trail_spec.rb ./spec/travis/event/subscription_spec.rb ./spec/travis/features_spec.rb ./spec/travis/github/education_spec.rb ./spec/travis/github/services/fetch_config_spec.rb ./spec/travis/github/services/find_or_create_org_spec.rb ./spec/travis/github/services/find_or_create_repo_spec.rb ./spec/travis/github/services/find_or_create_user_spec.rb ./spec/travis/github/services/set_hook_spec.rb ./spec/travis/github/services/sync_user/organizations/filter_spec.rb ./spec/travis/github/services/sync_user/organizations_spec.rb ./spec/travis/github/services/sync_user/repositories_spec.rb ./spec/travis/github/services/sync_user/repository_spec.rb ./spec/travis/github/services/sync_user/reset_token_spec.rb ./spec/travis/github/services/sync_user/user_info_spec.rb ./spec/travis/github/services/sync_user_spec.rb ./spec/travis/logs/services/aggregate_spec.rb ./spec/travis/logs/services/archive_spec.rb ./spec/travis/logs/services/receive_spec.rb ./spec/travis/model/annotation_provider_spec.rb ./spec/travis/model/annotation_spec.rb ./spec/travis/model/broadcast_spec.rb ./spec/travis/model/build/compat_spec.rb ./spec/travis/model/build/config/matrix_spec.rb ./spec/travis/model/build/config/obfuscate_spec.rb ./spec/travis/model/build/config_spec.rb ./spec/travis/model/build/denormalize_spec.rb ./spec/travis/model/build/matrix_spec.rb ./spec/travis/model/build/metrics_spec.rb ./spec/travis/model/build/result_message_spec.rb ./spec/travis/model/build/states_spec.rb ./spec/travis/model/build/update_branch_spec.rb ./spec/travis/model/build_spec.rb ./spec/travis/model/commit_spec.rb ./spec/travis/model/encrypted_column_spec.rb ./spec/travis/model/job/cleanup_spec.rb ./spec/travis/model/job/queue_spec.rb ./spec/travis/model/job/test_spec.rb ./spec/travis/model/job_spec.rb ./spec/travis/model/log/log_spec.rb ./spec/travis/model/organization_spec.rb ./spec/travis/model/permission_spec.rb ./spec/travis/model/repository/settings/ssh_key_spec.rb ./spec/travis/model/repository/settings_spec.rb ./spec/travis/model/repository/status_image_spec.rb ./spec/travis/model/repository_spec.rb ./spec/travis/model/request/approval_spec.rb ./spec/travis/model/request/branches_spec.rb ./spec/travis/model/request/states_spec.rb ./spec/travis/model/request_spec.rb ./spec/travis/model/ssl_key_spec.rb ./spec/travis/model/token_spec.rb ./spec/travis/model/url_spec.rb ./spec/travis/model/user/oauth_spec.rb ./spec/travis/model/user_spec.rb ./spec/travis/notification/instrument_spec.rb ./spec/travis/notification/publisher/log_spec.rb ./spec/travis/notification/publisher/redis_spec.rb ./spec/travis/redis_pool_spec.rb ./spec/travis/requests/services/receive/api_spec.rb ./spec/travis/requests/services/receive/pull_request_spec.rb ./spec/travis/requests/services/receive/push_spec.rb ./spec/travis/requests/services/receive_spec.rb ./spec/travis/requests/services/simulate_receive_spec.rb ./spec/travis/secure_config_spec.rb ./spec/travis/services/cancel_build_spec.rb ./spec/travis/services/cancel_job_spec.rb ./spec/travis/services/find_admin_spec.rb ./spec/travis/services/find_annotation_spec.rb ./spec/travis/services/find_branch_spec.rb ./spec/travis/services/find_branches_spec.rb ./spec/travis/services/find_build_spec.rb ./spec/travis/services/find_builds_spec.rb ./spec/travis/services/find_caches_spec.rb ./spec/travis/services/find_daily_repos_stats_spec.rb ./spec/travis/services/find_daily_tests_stats_spec.rb ./spec/travis/services/find_hooks_spec.rb ./spec/travis/services/find_job_spec.rb ./spec/travis/services/find_jobs_spec.rb ./spec/travis/services/find_log_spec.rb ./spec/travis/services/find_repo_key_spec.rb ./spec/travis/services/find_repo_settings_spec.rb ./spec/travis/services/find_repo_spec.rb ./spec/travis/services/find_repos_spec.rb ./spec/travis/services/find_request_spec.rb ./spec/travis/services/find_requests_spec.rb ./spec/travis/services/find_user_accounts_spec.rb ./spec/travis/services/next_build_number_spec.rb ./spec/travis/services/regenerate_repo_key_spec.rb ./spec/travis/services/remove_log_spec.rb ./spec/travis/services/reset_model_spec.rb ./spec/travis/services/sync_user_spec.rb ./spec/travis/services/update_annotation_spec.rb ./spec/travis/services/update_hook_spec.rb ./spec/travis/services/update_job_spec.rb ./spec/travis/services/update_log_spec.rb ./spec/travis/services/update_user_spec.rb ./spec/travis/services_spec.rb ./spec/travis/settings/collection_spec.rb ./spec/travis/settings/default_settings_spec.rb ./spec/travis/settings/model_spec.rb ./spec/travis/settings_spec.rb ./spec/travis/states_cache_spec.rb ./spec/travis/task_spec.rb ./spec/travis/travis_yml_stats_spec.rb ./spec/travis_spec.rb
+I TID=13176 Setting up Travis::Core
+Run options: include {:focused=>true}
+
+All examples were filtered out; ignoring {:focused=>true}
+
+Travis::CommitCommand
+ skip
+[32m is invoked by a commit message containing [CI skip][0m
+[32m is invoked by a commit message containing [ci skip][0m
+[32m is not invoked by default[0m
+[32m is invoked by a commit message containing [ci:skip][0m
+[32m is not invoked by a commit message containing [ci unknown-command][0m
+[32m is invoked by the special case: [skip ci][0m
+
+Travis::Logs::Services::Archive
+ in production
+ behaves like archive
+[32m fetches the log from the api[0m
+[32m retries and finally raises if fetch can not find the log[0m
+[32m stores the log to s3[0m
+[32m verifies the log size[0m
+[32m retries and finally raises if verification fails[0m
+[32m retries and finally raises if reporting fails[0m
+[32m reports to the api[0m
+[32m retries and finally raises if storage fails[0m
+[32m retries and finally raises if fetch fails[0m
+ in staging
+ behaves like archive
+[32m fetches the log from the api[0m
+[32m retries and finally raises if fetch can not find the log[0m
+[32m stores the log to s3[0m
+[32m verifies the log size[0m
+[32m retries and finally raises if verification fails[0m
+[32m retries and finally raises if reporting fails[0m
+[32m reports to the api[0m
+[32m retries and finally raises if storage fails[0m
+[32m retries and finally raises if fetch fails[0m
+
+Travis::Services::UpdateHook
+[32m finds the repo by the given params[0m
+[32m sets the given :active param to the hook[0m
+ sets the repo to the active param
+[32m given "true"[0m
+[32m given false[0m
+[32m given true[0m
+[32m given "false"[0m
+
+Travis::Services::UpdateLog
+[32m updates the log[0m
+ the instrument
+[32m publishes a event[0m
+
+Travis::Addons::Email::Instruments::EventHandler
+[32m publishes a event[0m
+
+Travis::Github::Services::SyncUser
+ new_user?
+[32m doesn't send an email with the welcome email disabled[0m
+[32m doesn't send an email to an existing user[0m
+[32m sends an email to a new user[0m
+[32m doesn't send an email if the user is older than 48 hours[0m
+[32m doesn't send an email if the user doesn't have a valid email[0m
+ syncing
+[32m sets synced_at[0m
+[32m sets is_syncing?[0m
+[32m returns the block value[0m
+[32m raises exceptions[0m
+[32m ensures the user is set back to not sycing when an exception raises[0m
+ run
+[32m resets is_syncing even on error[0m
+
+Travis::Services::FindRepos
+[32m applies timeline only if no other params are given[0m
+[32m returns the recent timeline when given empty params[0m
+[32m finds repositories by a given list of ids[0m
+ given an owner_name name and active param
+[32m finds a repository with that owner_name even if it does not have any builds[0m
+ given an owner_name name
+[32m finds a repository with that owner_name[0m
+[32m does not find a repository with another owner name[0m
+ given a member name
+[32m finds a repository where that member has permissions[0m
+[32m does not find a repository where the member does not have permissions[0m
+ given a slug name
+[32m finds a repository with that slug[0m
+[32m does not find a repository with a different slug[0m
+ given a search phrase
+[32m finds a repository matching that phrase[0m
+[32m does not find a repository that does not match that phrase[0m
+ given a list of ids
+[32m finds included repositories[0m
+[32m does not find a repositories that are not included[0m
+
+Travis::RedisPool
+[32m fails when a non-supported operation is called[0m
+[32m forwards operations to redis[0m
+[32m increases the metric for number of operations[0m
+[32m adds a wait time for the pool checkout[0m
+
+Travis::Enqueue::Services::EnqueueJobs::Limit
+[32m allows the first 8 jobs if the org is allowed 8 jobs[0m
+[32m allows one job if 4 are running by default[0m
+[32m allows the first 5 jobs if none are running by default[0m
+[32m allows all jobs if the limit is set to -1[0m
+[32m gives a readable report[0m
+ limit per repository
+[32m doesn't fail for repositories with no running jobs and restriction enabled[0m
+[32m should schedule jobs for other repositories[0m
+[32m should only schedule the maximum number of builds for a single repository[0m
+[32m doesn't allow for a repository maximum higher than the total maximum[0m
+[32m doesn't add the filter with limit per repo disabled[0m
+
+Travis::Services::FindJobs
+ run
+[32m finds jobs by a given list of ids[0m
+[32m does not find jobs on other queues[0m
+[32m finds jobs on the given queue[0m
+[32m finds jobs by state[0m
+[32m finds jobs that are about to run without any args[0m
+ updated_at
+[33m returns the latest updated_at time (PENDING: rack cache is disabled, so not much need for caching now)[0m
+
+Travis::Services::RemoveLog
+ when a job is found
+[32m uses a log part for storing the content[0m
+[32m updates logs with desired information[0m
+[32m runs successfully[0m
+ when log is already removed
+[32m raises LogAlreadyRemoved error[0m
+ when user does not have push permissions
+[32m raises AuthorizationDenied[0m
+ when job is not finished
+[32m raises JobUnfinished error[0m
+ when a job is not found
+[32m raises ActiveRecord::RecordNotFound exception[0m
+
+Travis::Services::Helpers
+ service
+[32m passes the given params[0m
+[32m passes the given user[0m
+[32m given :foo as a type and :stuff as a name it returns an instance of Foo::Stuff[0m
+[32m defaults params to {}[0m
+[32m defaults the user to the current user if the object responds to :current_user[0m
+[32m defaults the user to nil if the object does not respond to :current_user[0m
+
+Travis::Addons::Irc::Instruments::EventHandler
+[32m publishes a event[0m
+
+Travis::Services::CancelJob
+ run
+[32m should not be able to cancel job if user does not have pull permission[0m
+[32m should not cancel the job if it's not cancelable[0m
+[32m should cancel the job if it's cancelable[0m
+
+Travis::Services::FindBranches
+[32m returns an empty build scope when the repository could not be found[0m
+[32m scopes to the given repository[0m
+[32m finds the last builds of the given repository grouped per branch[0m
+[32m finds branches by a given list of ids[0m
+
+Travis::Features
+[32m should delegate to rollout[0m
+ feature checks
+[32m should allow enabling the repository[0m
+[32m should return false if the repository's owner isn't activated[0m
+[32m should return true if the repository's owner is activated[0m
+[32m should be active when the repository was activated[0m
+[32m shouldn't be active when the repository was deactivated[0m
+ for owners
+[32m allows enabling features for an organization[0m
+[32m allows disabling features for an owner[0m
+[32m allows enabling features for an owner[0m
+ for features
+[32m should allow enabling features completely[0m
+[32m shouldn't be active when the feature was disabled completely[0m
+ for users
+[32m should be active when enabled for a user[0m
+[32m shouldn't be active when disable for a user[0m
+
+Travis::Services::FindAdmin
+ find
+ given an error occurs while retrieving the repository info
+[33m raises an exception (PENDING: Temporarily disabled with xit)[0m
+[32m does not revoke permissions[0m
+ given a user does not have access to a repository
+[33m raises an exception (PENDING: Temporarily disabled with xit)[0m
+[33m revokes admin permissions for that user on our side (PENDING: Temporarily disabled with xit)[0m
+ given a user has admin access to a repository (as seen by github)
+[32m returns that user[0m
+ missing repository
+[32m raises Travis::RepositoryMissing[0m
+
+Build::States
+ events
+ receive
+[32m does not denormalize attributes[0m
+ when the build has failed
+[32m does not notify observers[0m
+ when the build is already received
+[32m does not notify observers[0m
+ when the build is not already received
+[32m sets the state to :received[0m
+[32m notifies observers[0m
+ when the build has errored
+[32m does not notify observers[0m
+ reset
+[32m does not set the state to created if any jobs in the matrix are running[0m
+[32m sets the state to created if none of the jobs in the matrix are running[0m
+ cancel
+[32m cancels all the cancelable jobs[0m
+ start
+ when the build has failed
+[32m does not denormalize attributes[0m
+[32m does not notify observers[0m
+ when the build is already started
+[32m does not denormalize attributes[0m
+[32m does not notify observers[0m
+ when the build is not already started
+[32m notifies observers[0m
+[32m denormalizes attributes[0m
+[32m sets the state to :started[0m
+ when the build has errored
+[32m does not denormalize attributes[0m
+[32m does not notify observers[0m
+ finish
+ when the matrix is not finished
+ when the build is already finished
+[32m does not denormalize attributes[0m
+[32m does not notify observers[0m
+ when the matrix is finished
+ when the build has not finished
+[32m denormalizes attributes[0m
+[32m calculates the duration based on the matrix durations[0m
+[32m sets the state to the matrix state[0m
+[32m notifies observers[0m
+ when the build has already finished
+[32m does not denormalize attributes[0m
+[32m does not notify observers[0m
+
+Build denormalization
+ on build:started
+[32m denormalizes last_build_number to its repository[0m
+[32m denormalizes last_build_state to its repository[0m
+[32m denormalizes last_build_id to its repository[0m
+[32m denormalizes last_build_duration to its repository[0m
+[32m denormalizes last_build_started_at to its repository[0m
+[32m denormalizes last_build_finished_at to its repository[0m
+ on build:finished
+[32m denormalizes last_build_finished_at to its repository[0m
+[32m denormalizes last_build_duration to its repository[0m
+[32m denormalizes last_build_state to its repository[0m
+
+Build matrix
+ matrix_finished?
+ if config[:matrix][:finish_fast] is not set
+ if all jobs have finished
+[32m returns true[0m
+ if at least one job has not finished and is allowed to fail
+[32m returns false[0m
+ if at least one job has not finished and is not allowed to fail
+[32m returns false[0m
+ if config[:matrix][:finish_fast] is set
+ if all jobs have finished
+[32m returns true[0m
+ if at least one job has not finished and is allowed to fail
+[32m returns true[0m
+ if at least one job has not finished and is not allowed to fail
+[32m returns false[0m
+ matrix_duration
+ if the matrix is finished
+[32m returns the sum of the matrix job durations[0m
+ if the matrix is not finished
+[32m returns nil[0m
+ for Scala projects
+[32m with a single Scala version passed in as array and two env variables[0m
+[32m with multiple Scala versions and no env variables[0m
+[32m with a single Scala version given as a string[0m
+ filter_matrix
+[32m does not select builds with non-matching keys[0m
+[32m does not select builds with non-matching values[0m
+[32m selects matching builds[0m
+ does not explode
+[32m on config[:matrix] being an array[0m
+[32m on bad matrix include values[0m
+[32m on a config key that is `true`[0m
+ os expansion
+[32m expands on :os if the feature is active[0m
+[32m ignores the os key if the feature is inactive[0m
+ matrix with one allow_failure job
+[32m returns :passed[0m
+ matrix_state
+[32m returns :passed if all jobs have passed[0m
+[32m returns :failed if one job has failed and one job has errored[0m
+[32m returns :errored if one job has errored[0m
+[32m returns :passed if a failed job is allowed to fail[0m
+[32m returns :failed if all jobs have failed and only one is allowed to fail[0m
+[32m returns :passed if all jobs have passed except a job that is allowed to fail, and config[:matrix][:finish_fast] is set[0m
+[32m returns :failed if all jobs have failed and only one is allowed to fail[0m
+[32m returns :passed if a errored job is allowed to fail[0m
+[32m returns :failed if one job has failed[0m
+ dist_group_expansion
+ the feature is active
+[32m expands on :dist and :group[0m
+ the feature is inactive
+[32m does not expand on :dist or :group[0m
+ for Ruby projects
+ matrix expansion
+[32m with two Rubies and Gemfiles[0m
+[32m does not decrypt secure env vars[0m
+[32m with string values[0m
+[32m with unequal number of Rubies, env variables and Gemfiles[0m
+[32m with an array of Rubies and a single Gemfile[0m
+ include_matrix_config
+[32m includes a matrix config[0m
+[32m does not include "empty" matrix config[0m
+ expand_matrix
+[32m does not expand on :os[0m
+[32m sets the config to the jobs (no matrix config)[0m
+[32m sets the config to the jobs (single test config)[0m
+[32m ignores global env config when setting allow failures[0m
+[32m copies build attributes[0m
+[32m adds a sub-build number to the job number[0m
+[32m sets the config to the jobs (multiple tests config)[0m
+[32m sets the config to the jobs (no config)[0m
+[32m does not clobber env and global_env vars[0m
+[32m sets the config to the jobs (allow failures config)[0m
+ when python project contains unwanted key
+[32m ignores irrelevant matrix dimensions[0m
+ when ruby project contains unwanted key
+[32m ignores irrelevant matrix dimensions[0m
+[32m creates jobs whose config does not contain unwanted keys[0m
+ when matrix specifies incorrect allow_failures
+[32m excludes matrices correctly[0m
+ exclude_matrix_config
+[32m excludes jobs from a matrix config when the matrix exclusion definition is incomplete[0m
+[32m excludes a matrix config without specifying global env vars in the exclusion[0m
+[32m excludes a matrix config when all config items are defined in the exclusion[0m
+ multi_os
+ the feature is active
+[32m expands on :os[0m
+ the feature is inactive
+[32m does not expand on :os[0m
+
+Travis::DefaultSettings
+[32m doesn't allow to merge anything[0m
+[32m doesn't allow to set any values[0m
+ getting properties
+[32m fetches a given path from default settings[0m
+
+Travis::Addons::Archive::Task
+[32m runs the :archive_log service[0m
+ instrument
+[32m publishes an event[0m
+
+Travis::Services::FindAdmin::Instrument
+[32m publishes a event[0m
+
+Travis::Api::V1::Http::Hooks
+[32m data[0m
+
+Travis::Settings::Model
+[32m returns a default if it is set[0m
+[32m implements read_attribute_for_serialization method[0m
+[32m can be loaded from json[0m
+[32m allows to override attribute methods[0m
+[32m handles validations[0m
+[32m allows to overwrite values[0m
+[32m validates encrypted attributes properly[0m
+[32m allows to override the default[0m
+[32m coerces values by default[0m
+[32m does not coerce nil[0m
+[32m allows to update attributes[0m
+[32m creates an instance with attributes[0m
+ encryption
+[32m returns EncryptedValue instance even for nil values[0m
+[32m automatically encrypts the data[0m
+
+Travis::Addons::Slack::EventHandler
+ targets
+[32m returns an array of multiple urls when given a comma separated string[0m
+[32m returns an array of urls when given an array[0m
+[32m returns an array of urls when given a string[0m
+[32m returns an array of values if the build configuration specifies an array of urls within a config hash[0m
+ handler
+[32m triggers a task if the build is a pull request[0m
+[32m triggers a task if the build is a push request[0m
+[32m passes ssl key from repository to config[0m
+[32m triggers a task if rooms are present[0m
+[32m does not trigger a task if no rooms are present[0m
+[32m triggers a task if specified by the config[0m
+[32m does not trigger task if specified by the config[0m
+ subscription
+[32m build:started does not notify[0m
+[32m build:finish notifies[0m
+
+Travis::Addons::Webhook::EventHandler
+ targets
+[32m returns an array of multiple urls when given a comma separated string[0m
+[32m returns an array of urls when given an array[0m
+[32m returns an array of urls when given a string[0m
+[32m returns an array of values if the build configuration specifies an array of urls within a config hash[0m
+ handler
+[32m triggers a task if webhooks are present[0m
+[32m triggers a task if the build is a pull request[0m
+[32m triggers a task if the build is a push request[0m
+[32m does not trigger a task if no webhooks are present[0m
+[32m triggers a task if specified by the config[0m
+[32m does not trigger task if specified by the config[0m
+ subscription
+[32m build:started notifies[0m
+[32m build:finish notifies[0m
+
+Travis::Services::FindLog
+ run
+[32m does not raise if the log could not be found[0m
+[32m finds the log with the given job_id[0m
+[32m finds the log with the given id[0m
+
+AnnotationProvider
+ .authenticate_provider
+ given an invalid key
+[32m does not authenticate the provider[0m
+ given an invalid username
+[32m does not authenticate the provider[0m
+ given a valid username and key
+[32m authenticates the provider[0m
+ with an encrypted key
+[32m authenticates the provider[0m
+ #annotation_for_job
+ given an annotation already exists for the job
+[32m returns the annotation[0m
+ given no annotation exists yet for the job
+[32m returns a new annotation object[0m
+
+Travis::Api::V1::Http::Builds
+[32m builds[0m
+
+Travis::Github::Services::SetHook
+ activating
+[32m does not update and existing hook if it is active[0m
+[32m updates and existing hook if it is inactive[0m
+[32m creates a new hook when none exists[0m
+ deactivating
+[32m creates and updates the hook if github set the active value to true while creating[0m
+[32m updates and existing hook if it is active[0m
+[32m creates a new hook when none exists[0m
+[32m does not update and existing hook if it is inactive[0m
+
+Travis::Event::Subscription
+ triggering a notification
+[32m shouldn't notify when the event doesn't match[0m
+[32m should increment a counter when the event is triggered[0m
+[32m should notify when the event matches[0m
+ a missing event handler
+[32m does not raise the exception[0m
+
+Travis::SecureConfig
+[32m returns the original value if the config is not a hash[0m
+[32m decrypts a string[0m
+[32m decrypts with a string as a key[0m
+[32m decrypts a hash with a secure entry[0m
+[32m decrypts a complex object of nested arrays and strings[0m
+[32m keeps the string similar if it cannot be decoded[0m
+[32m decrypts a realistic complex build config[0m
+[32m decrypts an array with a secure entry and a string[0m
+[32m returns nil if secure is nil[0m
+
+Build::Config
+[32m keeps the given env if it is an array[0m
+[32m normalizes env vars global and matrix which are hashes to an array of strings[0m
+[32m works fine if matrix part of env is undefined[0m
+[32m keeps wild nested array/hashes structure[0m
+[32m sets the os value to osx for objective-c builds[0m
+[32m sets the os value to linux for other builds[0m
+[32m works fine if global part of env is undefined[0m
+[32m keeps env vars global and matrix arrays[0m
+[32m normalizes an env vars hash to an array of strings[0m
+[32m keeps matrix and global config as arrays, not hashes[0m
+
+Travis::Github::Services::SyncUser::Organizations::Filter
+[32m allows the organization if we can't get repositories count[0m
+[32m allows the organization if data is missing[0m
+[32m does not allow organizations with too many repos[0m
+
+Travis::Addons::Flowdock::EventHandler
+ targets
+[32m returns an array of multiple urls when given a comma separated string[0m
+[32m returns an array of urls when given an array[0m
+[32m returns an array of urls when given a string[0m
+[32m returns an array of values if the build configuration specifies an array of urls within a config hash[0m
+ handler
+[32m triggers a task if rooms are present[0m
+[32m does not trigger a task if the build is a pull request[0m
+[32m triggers a task if the build is a push request[0m
+[32m does not trigger a task if no rooms are present[0m
+[32m triggers a task if specified by the config[0m
+[32m does not trigger task if specified by the config[0m
+ subscription
+[32m build:started does not notify[0m
+[32m build:finish notifies[0m
+
+Travis::Event::Config
+ send_on_finished_for?
+[32m returns true for :webhooks if the previous build is missing, the current build failed and config is {:on_failure=>"always"}[0m
+[32m returns true for :webhooks if the previous build is missing, the current build passed and config is {:on_failure=>"always"}[0m
+[32m returns false for :webhooks if the previous build is missing, the current build passed and config is {:on_success=>"never"}[0m
+[32m returns true for :webhooks if the previous build failed, the current build passed and config is {:on_failure=>"always"}[0m
+[32m returns true for :webhooks if the previous build passed, the current build passed and config is {:on_failure=>"change"}[0m
+[32m returns true for :webhooks if the previous build passed, the current build failed and config is {:on_success=>"change"}[0m
+[32m returns true for :webhooks if the previous build failed, the current build failed and config is {:on_success=>"always"}[0m
+[32m returns false for :webhooks if the previous build failed, the current build passed and config is {:on_success=>"never"}[0m
+[32m returns true for :webhooks if the previous build passed, the current build passed and config is {:on_success=>"always"}[0m
+[32m returns true for :webhooks if the previous build failed, the current build failed and config is {:on_success=>"change"}[0m
+[32m returns true for :webhooks if the previous build failed, the current build failed and config is {:on_success=>"never"}[0m
+[32m returns true for :webhooks if the previous build is missing, the current build passed and config is {:on_failure=>"never"}[0m
+[32m returns true for :webhooks if the previous build passed, the current build failed and config is {:on_failure=>"always"}[0m
+[32m returns true for :webhooks if the previous build failed, the current build passed and config is {:on_success=>"change"}[0m
+[32m returns false for :webhooks if the previous build passed, the current build failed and config is {:on_failure=>"never"}[0m
+[32m returns true for :webhooks if the previous build is missing, the current build passed and config is {:on_success=>"always"}[0m
+[32m returns true for :webhooks if the previous build is missing, the current build failed and config is {:on_success=>"always"}[0m
+[32m returns false for :webhooks if the previous build passed, the current build passed and config is {:on_success=>"change"}[0m
+[32m returns false for :webhooks if the previous build failed, the current build failed and config is {:on_failure=>"change"}[0m
+[32m returns true for :webhooks if the previous build passed, the current build passed and config is {:on_failure=>"never"}[0m
+[32m returns true for :webhooks if the previous build failed, the current build passed and config is {:on_failure=>"change"}[0m
+[32m returns true for :webhooks if the previous build passed, the current build failed and config is {:on_success=>"never"}[0m
+[32m returns false for :webhooks if the previous build is missing, the current build failed and config is {:on_failure=>"never"}[0m
+[32m returns true for :webhooks if the previous build failed, the current build passed and config is {:on_success=>"always"}[0m
+[32m returns true for :webhooks if the previous build is missing, the current build passed and config is {:on_success=>"change"}[0m
+[32m returns true for :webhooks if the previous build failed, the current build passed and config is {:on_failure=>"never"}[0m
+[32m returns true for :webhooks if the previous build is missing, the current build passed and config is {:on_failure=>"change"}[0m
+[32m returns false for :webhooks if the previous build is missing, the current build failed and config is {:on_failure=>"change"}[0m
+[32m returns true for :webhooks if the previous build is missing, the current build failed and config is {:on_success=>"change"}[0m
+[32m returns false for :webhooks if the previous build failed, the current build failed and config is {:on_failure=>"never"}[0m
+[32m returns true for :webhooks if the previous build is missing, the current build failed and config is {:on_success=>"never"}[0m
+[32m returns true for :webhooks if the previous build passed, the current build failed and config is {:on_failure=>"change"}[0m
+[32m returns true for :webhooks if the previous build failed, the current build failed and config is {:on_failure=>"always"}[0m
+[32m returns false for :webhooks if the previous build passed, the current build passed and config is {:on_success=>"never"}[0m
+[32m returns true for :webhooks if the previous build passed, the current build failed and config is {:on_success=>"always"}[0m
+[32m returns true for :webhooks if the previous build passed, the current build passed and config is {:on_failure=>"always"}[0m
+
+Travis::Notification::Instrument
+ attach_to
+[32m subscribes to ActiveSupport::Notifications using the class name as a namespace[0m
+[32m subscribes to ActiveSupport::Notifications using an instrumentation key if defined[0m
+
+Travis::Addons::Flowdock::Instruments::EventHandler
+[32m publishes a event[0m
+
+Repository::StatusImage
+ given a branch
+[32m returns :error if the last build on that branch has errored[0m
+[32m returns :failed if the last build on that branch has failed[0m
+[32m returns :passed if the last build on that branch has passed[0m
+[32m returns :canceled if the last build on that branch was canceled[0m
+ given no branch
+[32m returns :error if the status of the last finished build is errored[0m
+[32m returns :failing if the status of the last finished build is failed[0m
+[32m returns the status of the last finished build[0m
+[32m returns :canceled if the status of the last finished build is canceled[0m
+[32m returns :unknown if the status of the last finished build is unknown[0m
+ with cache
+[32m saves state of the build to the cache with its branch even if brianch is not given[0m
+[32m saves state to the cache if it needs to be fetched from the db[0m
+[32m tries to get state from cache first[0m
+[32m handles cache failures gracefully[0m
+
+Repository::Settings
+[32m validates maximum_number_of_builds[0m
+ #restricts_number_of_builds?
+[32m returns true if number of builds is restricted[0m
+[32m returns false if builds are not restricted[0m
+ #maximum_number_of_builds
+[32m defaults to 0[0m
+ env_vars
+[32m can be filtered to get only public vars[0m
+ timeouts
+ hard_limit
+[32m returns nil if set to 0[0m
+[32m is valid if hard_limit is nil[0m
+[32m defaults to nil[0m
+[32m is valid if hard_limit is set to 0[0m
+ with :custom_timeouts feature flag turned off
+[32m adds an error message if invalid[0m
+ is valid
+[32m if hard_limit is < 50[0m
+[32m if hard_limit is > 0[0m
+[32m if hard_limit is nil[0m
+[32m if hard_limit equals 50[0m
+ is invalid
+[32m if hard_limit is < 0[0m
+[32m if hard_limit is > 50[0m
+ with :custom_timeouts feature flag turned on
+[32m adds an error message if invalid[0m
+ is valid
+[32m if hard_limit is < 180[0m
+[32m if hard_limit is > 0[0m
+[32m if hard_limit is nil[0m
+[32m if hard_limit equals 180[0m
+ is invalid
+[32m if hard_limit is < 0[0m
+[32m if hard_limit is > 180[0m
+ log_silence
+[32m returns nil if set to 0[0m
+[32m is valid if log_silence is nil[0m
+[32m defaults to nil[0m
+[32m is valid if log_silence is set to 0[0m
+ with :custom_timeouts feature flag turned off
+[32m adds an error message if invalid[0m
+ is valid
+[32m if log_silence is < 10[0m
+[32m if log_silence is > 0[0m
+[32m if log_silence is nil[0m
+[32m if log_silence equals 10[0m
+ is invalid
+[32m if log_silence is < 0[0m
+[32m if log_silence is > 10[0m
+ with :custom_timeouts feature flag turned on
+[32m adds an error message if invalid[0m
+ is valid
+[32m if log_silence is < 60[0m
+[32m if log_silence is > 0[0m
+[32m if log_silence is nil[0m
+[32m if log_silence equals 60[0m
+ is invalid
+[32m if log_silence is < 0[0m
+[32m if log_silence is > 60[0m
+
+Travis::Addons::GithubStatus::EventHandler
+ subscription
+[32m build:finish notifies[0m
+[32m build:started notifies[0m
+[32m build:created notifies[0m
+[32m build:canceled notifies[0m
+ handler
+[32m triggers a task if the build is a push request and has finished[0m
+[32m triggers a task if the build is a pull request and has started[0m
+[32m triggers a task if the build is a push request and has started[0m
+[32m triggers a task if the build is a pull request and has finished[0m
+[32m gets the token for the build committer[0m
+[32m gets the token for someone with push access[0m
+[32m does not trigger a task if no tokens are available[0m
+
+Build
+[32m is cancelable if at least one job is cancelable[0m
+[32m returns nil if cached_matrix_ids are not set[0m
+[32m caches matrix ids[0m
+[32m is not cancelable if none of the jobs are cancelable[0m
+ creation
+[32m updates the last_build on the build's branch[0m
+ previous_state
+[32m is set to the last finished build state on the same branch (disregards other branches)[0m
+[32m is set to the last finished build state on the same branch (disregards non-finished builds)[0m
+[32m is set to the last finished build state on the same branch[0m
+ class methods
+ on_branch
+[32m returns builds that are on any of the given branches[0m
+[32m does not include pull requests[0m
+ was_started
+[32m returns builds that are either started or finished[0m
+ recent
+[32m returns recent finished builds ordered by id descending[0m
+ older_than
+ when not passing a build
+[32m should limit the results[0m
+ when a number is passed in
+[32m should limit the results[0m
+[32m should return older than the passed build[0m
+ when a Build is passed in
+[32m should limit the results[0m
+[32m should return older than the passed build[0m
+ paged
+[32m limits the results to the `per_page` value[0m
+[32m uses an offset[0m
+ pushes
+[32m returns only builds which have Requests with an event_type of push[0m
+ pull_requests
+[32m returns only builds which have Requests with an event_type of pull_request[0m
+ #secure_env_enabled?
+[32m returns false if pull request is not from the same repository[0m
+[32m returns true if pull request is from the same repository[0m
+[32m returns true if we're not dealing with pull request[0m
+ instance methods
+[32m sets previous_state to the result of the last build on the same branch if exists[0m
+[32m sets previous_state to nil if no last build exists on the same branch[0m
+[32m sets its number to the next build number on creation[0m
+[32m saves event_type before create[0m
+[32m saves pull_request_title before create[0m
+[32m saves branch before create[0m
+ passed?
+[32m passed? returns true if state equals :passed[0m
+[32m passed? returns true if result does not equal :passed[0m
+ pending?
+[32m returns true if the build is finished[0m
+[32m returns true if the build is not finished[0m
+ config
+[32m defaults to a hash with language and os set[0m
+[32m deep_symbolizes keys on write[0m
+ color
+[32m returns "yellow" if the build is pending[0m
+[32m returns "red" if the build has failed[0m
+[32m returns "green" if the build has passed[0m
+ reset
+[32m resets each job if :reset_matrix is given[0m
+[32m resets related attributes[0m
+[32m sets the state to :created[0m
+[32m does not reset jobs if :reset_matrix is not given[0m
+[32m notifies obsevers[0m
+
+Travis::Addons::Email::EventHandler
+ #recipients
+ when commit is on default branch
+[32m equals the recipients specified in the build configuration if any (given as an array)[0m
+[32m equals the recipients specified in the build configuration if any (given as a string)[0m
+ when commit is on non-default branch
+[32m contains the author emails if the build has them set[0m
+[32m contains the committer emails if the build has them set[0m
+ handler
+[32m triggers a task if specified by the config[0m
+[32m does not trigger a task if the build is a pull request[0m
+[32m triggers a task if the build is a push request[0m
+[32m does not trigger task if specified by the config[0m
+ subscription
+[32m build:started does not notify[0m
+[32m build:finish notifies[0m
+
+Travis::Addons::Pusher::Instruments::EventHandler
+ given a job:started event
+[32m publishes a event[0m
+ given a build:finished event
+[32m publishes a event[0m
+
+Travis::Github::Services::SyncUser::Repositories::Instrument
+[32m publishes a event on :run[0m
+[32m publishes a event on :fetch[0m
+
+Travis::Model::EncryptedColumn
+[32m allows to pass use_prefix as an option[0m
+[32m allows to pass key as an option[0m
+ when encryption is disabled
+ #dump
+[32m does not encrypt data[0m
+ #decrypt?
+[32m does not decrypt if given data is empty[0m
+ #encrypt?
+[32m does not encrypt if given data is empty[0m
+ when disabled
+[32m does not encrypt[0m
+ when encryption is enabled
+ when prefix usage is disabled
+ #load
+[32m decrypts data even with no prefix[0m
+[32m removes prefix if prefix is still used[0m
+ #dump
+[32m attaches iv to encrypted string[0m
+ when prefix usage is enabled
+ #load
+[32m does not decrypt data if prefix is not used[0m
+[32m decrypts data if prefix is used[0m
+ #dump
+[32m attaches iv and prefix to encrypted string[0m
+
+Travis::Api::V0::Event::Build
+[32m includes the commit[0m
+[32m includes the repository data[0m
+[32m includes the build data[0m
+[32m doesn't include the source key[0m
+
+Job
+ before_create
+[32m sets the queue attribute[0m
+[32m sets the state attribute[0m
+[32m instantiates the log[0m
+ .queued
+[32m returns jobs that are created but not started or finished[0m
+ .result
+[32m returns 1 for failed builds[0m
+[32m returns 0 for passed builds[0m
+ duration
+[32m returns the duration if both started_at and finished_at are populated[0m
+[32m returns nil if both finished_at is not populated[0m
+[32m returns nil if both started_at is not populated[0m
+ obfuscated config
+[32m obfuscates env vars[0m
+[32m leaves regular vars untouched[0m
+[32m handles nil env[0m
+[32m normalizes env vars which are hashes to strings[0m
+[32m removes addons config if it is not a hash[0m
+[32m removes addons items which are not whitelisted[0m
+[32m removes source key[0m
+ when job has secure env disabled
+[32m normalizes env vars which are hashes to strings[0m
+[32m works even if it removes all env vars[0m
+[32m removes secure env vars[0m
+ #pull_request?
+[32m is delegated to commit[0m
+ decrypted config
+[32m does not change original config[0m
+[32m normalizes env vars which are hashes to strings[0m
+[32m handles nil env[0m
+[32m leaves regular vars untouched[0m
+ when job has secure env enabled
+[32m decrypts env vars[0m
+[32m decrypts only secure env vars[0m
+ when addons are disabled
+[32m removes addons if it is not a hash[0m
+[32m removes addons items which are not whitelisted[0m
+ when secure env is not enabled
+[32m removes secure env vars[0m
+[32m removes only secured env vars[0m
+ when job has addons enabled
+[32m decrypts addons config[0m
+[32m decrypts deploy addon config[0m
+ log_content=
+[32m sets the log content[0m
+[32m blanks out any old log content[0m
+
+Travis::Api::V0::Pusher::Build
+[32m build[0m
+[32m repository[0m
+
+Travis::Github::Services::FindOrCreateRepo
+[33m needs to be specified (PENDING: Temporarily disabled with xit)[0m
+
+Travis::Services::SyncUser
+ given the user is not currently syncing
+[32m enqueues a sync job[0m
+[32m sets the user to syncing[0m
+ given the user is currently syncing
+[32m does not set the user to syncing[0m
+
+Travis::Notification::Publisher::Redis
+[33m encodes the payload in json (PENDING: feature disabled at the moment)[0m
+[32m sets a ttl[0m
+[33m adds to the list (PENDING: feature disabled at the moment)[0m
+[33m queues new messages on the right (PENDING: feature disabled at the moment)[0m
+[33m sends out events over pubsub (PENDING: feature disabled at the moment)[0m
+
+Travis::Services::FindRequest
+ run
+[32m finds a request by the given id[0m
+[32m does not raise if the request could not be found[0m
+ updated_at
+[32m returns request's updated_at attribute[0m
+
+Travis::Api::V1::Http::Jobs
+[32m tests[0m
+
+Travis::Addons::Campfire::EventHandler
+ targets
+[32m returns an array of multiple urls when given a comma separated string[0m
+[32m returns an array of urls when given an array[0m
+[32m returns an array of urls when given a string[0m
+[32m returns an array of values if the build configuration specifies an array of urls within a config hash[0m
+ handler
+[32m does not trigger a task if the build is a pull request[0m
+[32m triggers a task if the build is a push request[0m
+[32m passes ssl key from repository to config[0m
+[32m triggers a task if rooms are present[0m
+[32m does not trigger a task if no rooms are present[0m
+[32m triggers a task if specified by the config[0m
+[32m does not trigger task if specified by the config[0m
+ subscription
+[32m build:started does not notify[0m
+[32m build:finish notifies[0m
+
+Travis::Github::Services::SyncUser::Repository
+ a public repository
+ admin, push and pull access
+[32m creates a new permission for the user/repo[0m
+[32m updates an existing permission[0m
+ push and pull access
+[32m creates a new permission for the user/repo[0m
+[32m updates an existing permission[0m
+ only pull access
+[32m doesn't create a new permission for the user/repo[0m
+[32m destroys an existing permission[0m
+ updating
+[32m updates repositorie's name and owner name[0m
+ find or create repository
+[32m does not create a new repository if it already exists[0m
+[32m sets the owner[0m
+[32m creates a new repository per record if not yet present[0m
+ a private repository
+ admin, push and pull access
+[32m creates a new permission for the user/repo[0m
+[32m updates an existing permission[0m
+ push and pull access
+[32m creates a new permission for the user/repo[0m
+[32m updates an existing permission[0m
+ only pull access
+[32m creates a new permission for the user/repo[0m
+[32m updates an existing permission[0m
+
+Travis::Api::V1::Http::Job
+[32m data[0m
+ without log
+[32m returns null as a log content[0m
+ with encrypted env vars
+[32m shows encrypted env vars in human readable way[0m
+
+Travis::Api::V1::Archive::Build
+ without log
+[32m returns null as a log content[0m
+
+Travis::Github::Services::FetchConfig
+ config
+[32m merges { '.result' => 'configured' } to the actual configuration[0m
+[32m yaml parses the response body if the response is successful[0m
+[32m returns a hash[0m
+[32m returns { '.result' => 'not_found' } if a 404 is returned[0m
+[32m returns { '.result' => 'server_error' } if a 500 is returned[0m
+[32m returns { '.result' => 'parse_error' } if the .travis.yml is invalid[0m
+[32m returns the error message for an invalid .travis.yml file[0m
+[32m converts non-breaking spaces to normal spaces[0m
+ when the repository has the template_selection feature enabled
+[32m passes the 'group' config key through[0m
+[32m passes the 'dist' config key through[0m
+ when the repository doesn't have the template_selection feature enabled
+[32m doesn't pass the 'group' config key through[0m
+[32m doesn't pass the 'dist' config key through[0m
+
+Travis::Github::Services::SyncUser::ResetToken
+[32m resets the token on GitHub[0m
+[32m stores the new token[0m
+
+Commit
+ #range
+ with invalid compare_url
+[32m returns nil[0m
+ with a compare_url with ^ in it
+[32m returns range[0m
+ with compare_url present
+[32m returns range[0m
+ without compare_url
+[32m returns nil[0m
+ for a pull request
+[32m returns range[0m
+ pull_request?
+[32m is false for a ref named ref/pull/180/head[0m
+[32m is false for a ref named ref/branch/master[0m
+[32m is false for a nil ref[0m
+[32m is true for a ref named ref/pull/180/merge[0m
+ pull_request_number
+ when commit is from pull request
+[32m returns pull request's number[0m
+ when commit is not from pull request
+[32m returns nil[0m
+
+Build update_branch
+ on build:started
+[32m creates branch if branch is missing[0m
+[32m updates branch if branch is exists[0m
+ on build:finished
+[32m creates branch if branch is missing[0m
+[32m updates branch if branch is exists[0m
+
+Travis::Services::FindJob
+ run
+[32m raises RecordNotFound if a SubclassNotFound error is raised during find[0m
+[32m does not raise if the job could not be found[0m
+[32m finds the job with the given id[0m
+[32m includes config by default[0m
+[32m excludes config when requested[0m
+ updated_at
+[32m returns jobs updated_at attribute[0m
+
+Repository::Settings::SshKey
+[32m does not check key if a value is nil[0m
+[32m allows only private key[0m
+[32m validates correctness of private key[0m
+ with a passphrase
+[32m returns key_with_a_passphrase validation error[0m
+
+Travis::Settings::Collection
+[32m allows to create a model[0m
+[32m finds class in Travis::Settings namespace[0m
+[32m loads models from JSON[0m
+ #destroy
+[32m removes an item from collection[0m
+ #find
+[32m finds an item[0m
+
+Travis::Requests::Services::Receive::Api
+[32m uses a custom message if given[0m
+ request
+[32m returns attributes for a Request[0m
+ commit
+[32m returns all attributes required for a Commit[0m
+ repository
+[32m returns all attributes required for a Repository[0m
+
+Travis::Api::V1::Http::Repositories
+[32m data[0m
+
+Travis::Api::V1::Http::Repository
+[32m data[0m
+[32m public_key[0m
+
+Travis::Addons::Hipchat::EventHandler
+ targets
+[32m returns an array of multiple urls when given a comma separated string[0m
+[32m returns an array of urls when given an array[0m
+[32m returns an array of urls when given a string[0m
+[32m returns an array of values if the build configuration specifies an array of urls within a config hash[0m
+ handler
+[32m doesn't trigger when pull request notifications are disabled[0m
+[32m triggers a task if the build is a pull request[0m
+[32m triggers a task if the build is a push request[0m
+[32m triggers a task if rooms are present[0m
+[32m does not trigger a task if no rooms are present[0m
+[32m triggers a task if specified by the config[0m
+[32m does not trigger task if specified by the config[0m
+ subscription
+[32m build:started does not notify[0m
+[32m build:finish notifies[0m
+
+Annotation
+ validations
+[32m only allows http or https URLs[0m
+[32m only allows valid URLs[0m
+
+Travis::Settings
+[32m returns validations without going through i18n[0m
+[32m allows to load from nil[0m
+ adding a setting
+[32m allows to set a property using accessor[0m
+[32m sets false properly as boolean, not changing it to nil[0m
+[32m doesn't allow to set or get unknown settings[0m
+ #update
+[32m updates an existing model[0m
+[32m creates a model if it does not exist yet[0m
+ #delete
+[32m removes a model with a given name[0m
+ registering a collection
+[32m allows to register a collection[0m
+[32m populates registered collections from raw settings[0m
+ save
+[32m runs on_save callback[0m
+[32m does not run on_save callback if settings are not valid[0m
+ #merge
+[32m does not allow to merge unknown settings[0m
+[32m merges individual fields[0m
+[32m does not save[0m
+ to_hash
+[32m returns registered collections and all attributes[0m
+ simple_attributes
+[32m returns only plan attributes[0m
+ #create
+[32m creates a model for a given key[0m
+[32m adds additional attributes to the created model[0m
+
+Travis::Event::Handler::Metrics
+ subscription
+[32m job:test:finished notifies[0m
+[32m job:test:started notifies[0m
+[32m build:started does not notify[0m
+ metrics
+ job:test:started
+[32m meters on job.queue.wait_time[0m
+[32m meters on job.queue.builds-linux.wait_time[0m
+ with started_at being nil
+[32m does not meters time[0m
+ job:test:finished
+[32m meters on job.duration[0m
+[32m meters on job.duration[0m
+ with finished being nil
+[32m does not meters time[0m
+
+Build::Config::Matrix
+[32m can handle nil values in exclude matrix[0m
+[32m can handle list values in exclude matrix[0m
+
+Travis::StatesCache
+[32m delegates #write to adapter[0m
+[32m gets data from build if it's given instead of raw data[0m
+[32m allows to fetch state[0m
+[32m delegates #fetch to adapter[0m
+ integration
+localhost:11211 failed (count: 0) Errno::ECONNREFUSED: Connection refused - Connection refused
+[33m updates the state if the id of the build is the same (PENDING: Dalli can't run properly, skipping. Cause: localhost:11211 is down: . If you are sure it is running, ensure memcached version is > 1.4.)[0m
+localhost:11211 failed (count: 0) Errno::ECONNREFUSED: Connection refused - Connection refused
+[33m updates the state only if the info is newer (PENDING: Dalli can't run properly, skipping. Cause: localhost:11211 is down: . If you are sure it is running, ensure memcached version is > 1.4.)[0m
+localhost:11211 failed (count: 0) Errno::ECONNREFUSED: Connection refused - Connection refused
+[33m saves the state for given branch and globally (PENDING: Dalli can't run properly, skipping. Cause: localhost:11211 is down: . If you are sure it is running, ensure memcached version is > 1.4.)[0m
+localhost:11211 failed (count: 0) Errno::ECONNREFUSED: Connection refused - Connection refused
+[33m handles connection errors gracefully (PENDING: Dalli can't run properly, skipping. Cause: localhost:11211 is down: . If you are sure it is running, ensure memcached version is > 1.4.)[0m
+ Travis::StatesCache::MemcachedAdapter
+[32m fetches the data for given id as JSON[0m
+[32m writes for both a branch and default state[0m
+ #update?
+[32m returns true if persisted data is the same age[0m
+[32m returns false if persisted data is younger than data passed as an argument[0m
+[32m returns true if persisted data is older than data passed as an argument[0m
+
+Travis::Services::FindCaches
+ given a repository_id
+ without any caches
+[32m should be == [][0m
+ with caches
+ with branch
+ size
+[32m should be == 1[0m
+ the cache instances
+ repository
+[32m should be == #[0m
+ branch
+[32m should be == master[0m
+ slug
+[32m should be == cache--example1[0m
+ size
+[32m should be == 0[0m
+ size
+[32m should be == 2[0m
+ with match
+ size
+[32m should be == 1[0m
+ without access
+ size
+[32m should be == 0[0m
+ without s3 credentials
+[32m should be == [][0m
+ with multiple buckets
+ size
+[32m should be == 4[0m
+
+Travis::Api::V0::Pusher::Annotation::Updated
+[32m annotation[0m
+
+Travis::Requests::Services::Receive
+ an API request
+ giving the repo owner_id
+ it should behave like creates a request
+[32m logs a notice[0m
+[32m sets the payload to the request[0m
+[32m creates a request for the given payload[0m
+ giving the repo owner_name
+ it should behave like creates a request
+[32m logs a notice[0m
+[32m sets the payload to the request[0m
+[32m creates a request for the given payload[0m
+ a github pull-request event
+ for a branch on a foreign repository
+[32m returns the expected head_branch[0m
+[32m returns the expected head_repo[0m
+[32m returns the expected base_repo[0m
+ it should behave like creates a request
+[32m logs a notice[0m
+[32m sets the payload to the request[0m
+[32m creates a request for the given payload[0m
+ for a branch on the same repository
+[32m returns the expected head_branch[0m
+[32m returns the expected head_repo[0m
+[32m returns the expected base_repo[0m
+ it should behave like creates a request
+[32m logs a notice[0m
+[32m sets the payload to the request[0m
+[32m creates a request for the given payload[0m
+ for a repository that belongs to an organization
+[32m sets the comments_url to the request[0m
+ it should behave like creates a request
+[32m logs a notice[0m
+[32m sets the payload to the request[0m
+[32m creates a request for the given payload[0m
+ a github push event
+ for repository belonging to an organization
+ it should behave like creates a request
+[32m logs a notice[0m
+[32m sets the payload to the request[0m
+[32m creates a request for the given payload[0m
+ with disabled push events
+[32m rejects the request[0m
+[32m logs a notice[0m
+ it should behave like creates a request
+[32m logs a notice[0m
+[32m sets the payload to the request[0m
+[32m creates a request for the given payload[0m
+ for repository belonging to a user
+ it should behave like creates a request
+[32m logs a notice[0m
+[32m sets the payload to the request[0m
+[32m creates a request for the given payload[0m
+ when no commits are present
+[32m does not explode[0m
+[32m logs a message[0m
+ with a repository that does not exist on our side
+[32m logs the validation error[0m
+[32m meters the event[0m
+ with a repository that does not have an owner (should never happen?)
+ with an known owner referenced in the payload
+[32m logs a notice[0m
+[32m updates the owner_name[0m
+[32m updates the owner[0m
+ with an unknown owner referenced in the payload
+[32m logs the validation error[0m
+[32m meters the event[0m
+ with a repository that has a different owner on our side (owner changed since last sync)
+ with an known owner referenced in the payload
+[32m logs a notice[0m
+[32m updates the owner_name[0m
+[32m updates the owner[0m
+ with an unknown owner referenced in the payload
+[32m logs the validation error[0m
+[32m meters the event[0m
+ without repository data
+ a push
+[32m logs the validation error[0m
+ a pull request
+[32m logs the validation error[0m
+ catches GH:Errors
+[32m during :accept?[0m
+[32m during :create[0m
+
+Travis::Github::Services::FindOrCreateUser
+[32m updates repositories owner_name and nullifies other users or orgs' login if login is changed[0m
+[32m gets login from data if login is not available in find[0m
+[32m finds an existing user[0m
+[32m creates a user from github[0m
+[32m creates a user from github and nullifies login if other user has the same login[0m
+[33m raises a GithubApi error if the user could not be retrieved (PENDING: Temporarily disabled with xit)[0m
+
+Travis::Api::V1::Webhook::Build::Finished
+[32m includes the build data[0m
+[32m includes the repository[0m
+ includes the build matrix
+[32m given include_logs is false[0m
+[32m given include_logs is true[0m
+[32m payload[0m
+[32m has a different type for pull requests[0m
+[32m includes the pull request number for pull requests[0m
+
+Token
+[32m generate_token sets the token to a 20 character value[0m
+[32m does not generate new token on save[0m
+
+Travis::Addons::Pusher::EventHandler
+[32m doesn't override original payload[0m
+ subscription
+[32m job:log[0m
+[32m job:test:started[0m
+[32m job:test:created[0m
+[32m job:test:finished[0m
+[32m build:created[0m
+[32m build:started[0m
+[32m build:finished[0m
+
+Travis::Services::FindRepoSettings
+ authorized?
+[32m should be unauthorized with current_user[0m
+ run
+[32m should not be able to get settings if user does not have push permission[0m
+[32m should return repo settings[0m
+[32m should return nil without a repo[0m
+
+Travis::Enqueue::Services::EnqueueJobs
+ Instrument
+[32m publishes a event[0m
+ run
+[32m keeps a report of enqueued jobs[0m
+[32m publishes queueable jobs[0m
+[32m enqueues queueable jobs[0m
+ disabled?
+[32m does not enqueue if the feature :job_queueing is disabled explicitely[0m
+[32m enqueues if the feature :job_queueing is enabled explicitely[0m
+[32m enqueues if the feature :job_queueing is not deactivated (default)[0m
+ with a timeout
+[32m returns false when the timeout is hit[0m
+ Logging
+[32m logs the enqueue[0m
+
+Travis::Api::V0::Pusher::Annotation::Created
+[32m annotation[0m
+
+Request::Branches
+ #included?
+[32m defaults to true if no branches are included[0m
+ returns false if the included branches do not include the given branch
+[32m given as an array of branches[0m
+[32m given as a comma separated list of branches[0m
+[32m given as a string[0m
+ returns true if the given branch matches a pattern from the included branches
+[32m given as an array of patterns[0m
+[32m given as a comma separated list of patterns[0m
+[32m given as a string[0m
+ returns true if the included branches include the given branch
+[32m given as an array of branches[0m
+[32m given as a comma separated list of branches[0m
+[32m given as a string[0m
+ returns false if the given branch does not match any pattern from the included branches
+[32m given as an array of patterns[0m
+[32m given as a comma separated list of patterns[0m
+[32m given as a string[0m
+ #excluded?
+[32m defaults to false if no branches are excluded[0m
+ returns false if the excluded branches do not include the given branch
+[32m given as an array of branches[0m
+[32m given as a comma separated list of branches[0m
+[32m given as a string[0m
+ returns true if the given branch matches a pattern from the excluded branches
+[32m given as an array of patterns[0m
+[32m given as a comma separated list of patterns[0m
+[32m given as a string[0m
+ returns true if the excluded branches include the given branch
+[32m given as an array of branches[0m
+[32m given as a comma separated list of branches[0m
+[32m given as a string[0m
+ returns false if the given branch does not match any pattern from the excluded branches
+[32m given as an array of patterns[0m
+[32m given as a comma separated list of patterns[0m
+[32m given as a string[0m
+
+Travis::Services::FindRepo
+ run
+[32m does not raise if the repository could not be found[0m
+[32m finds a repository by the given owner_name and name[0m
+[32m finds a repository by the given id[0m
+ updated_at
+[32m returns jobs updated_at attribute[0m
+
+Travis::Services::RemoveLog::Instrument
+[32m publishes a event[0m
+
+Travis::Services::ResetModel
+ given a job_id
+[32m has message: missing permissions and can not be enqueued[0m
+[32m has message: all cool[0m
+[32m resets the job[0m
+ given a build_id
+[32m does not reset the build (given no roles configuration and the user does not have permissions)[0m
+[32m resets the build (given roles configuration and the user has permissions)[0m
+[32m resets the build (given no roles configuration and the user has permissions)[0m
+[32m does not reset the build (given roles configuration and the user does not have permissions)[0m
+ Instrument
+[32m publishes a event[0m
+
+Travis::Addons::Hipchat::Instruments::EventHandler
+[32m publishes a event[0m
+
+Travis::Requests::Services::Receive::Instrument
+[32m publishes a event[0m
+
+Travis::Logs::Services::Receive
+[32m creates a log part with the given number[0m
+[32m filters out triple null chars[0m
+[32m does not set the :final flag if the appended message does not contain the final log message part[0m
+[32m notifies observers[0m
+[32m doesn't reraise an error when notifications failed[0m
+[32m creates a log if missing (should never happen, but does)[0m
+[32m tracks a metric when notifications failed[0m
+[32m sets the :final flag if the appended message contains the final log message part[0m
+[32m filters out null chars[0m
+
+Travis::Services::FindRepoKey
+ run
+[32m finds a key by the given repository id[0m
+[32m finds a key by the given owner_name and name[0m
+ updated_at
+[32m returns key's updated_at attribute[0m
+
+Travis::Api::V0::Worker::Job::Test
+ for a push request
+[32m contains the expected build data (legacy)[0m
+[32m contains the expected job data[0m
+[32m contains the expected data[0m
+[32m contains the expected repo data[0m
+[32m includes the tag name[0m
+[32m contains the no pull_request data[0m
+ for a pull request
+[32m contains the expected build data (legacy)[0m
+[32m contains the expected job data[0m
+[32m contains the expected data[0m
+[32m contains the expected repo data[0m
+[32m contains the expected pull_request data[0m
+ from the same repository
+[32m enables secure env variables[0m
+
+Travis::Github::Services::SyncUser::Organizations
+ run
+[32m removes stale organization memberships[0m
+ updates existing organizations
+[32m makes the user a member of the organization[0m
+[32m updates the organization attributes[0m
+[32m does not create a new organization[0m
+ creates missing organizations
+[32m creates missing organizations[0m
+[32m makes the user a member of the organization[0m
+ with organization with repos over limit
+[32m does not create organization matching "exclude" list[0m
+
+Broadcast
+ by_user
+[32m finds a global broadcast[0m
+[32m does not find a broadcast for a different user[0m
+[32m finds a broadcast for orgs where the given user is a member[0m
+[32m finds a broadcast for a repo where the given user has any permissions[0m
+[32m does not find a broadcast for a different repo[0m
+[32m does not find broadcasts older than 2 weeks[0m
+[32m does not find an expired broadcast[0m
+[32m does not find a broadcast for a different org[0m
+[32m finds a broadcast for the given user[0m
+ by_repo
+[32m does not find a broadcast for a different repo[0m
+[32m finds a broadcast for the given repo[0m
+[32m finds a global broadcast[0m
+[32m finds a broadcast for an org this repo belongs to[0m
+[32m does not find a broadcast for a different org[0m
+[32m finds a broadcast for a user this repo belongs to[0m
+[32m does not find a broadcast for a different user[0m
+
+Travis::Api::V1::Http::Build
+[32m build[0m
+[32m matrix[0m
+ with encrypted env vars
+[32m shows encrypted env vars in human readable way[0m
+
+Travis::Github::Services::FetchConfig::Instrument
+[32m strips an access_token if present (2)[0m
+[32m strips an access_token if present (1)[0m
+[32m publishes a payload[0m
+[32m strips a secret if present (2)[0m
+
+Travis::Api::V1::Archive::Build
+[32m repository[0m
+[32m matrix[0m
+[32m data[0m
+
+Travis
+ redis
+[32m should connect to localhost by default[0m
+ with Travis.config
+[32m should use the Travis.config if set[0m
+
+Repository
+[32m last_build returns the most recent build[0m
+ #last_completed_build
+[32m returns last completed build[0m
+[32m returns last completed build for a branch[0m
+ class methods
+ with_builds
+[32m gets only projects with existing builds[0m
+ timeline
+[32m sorts repositories with running builds to the top, most recent builds next, un-built repos last[0m
+[32m does not include invalidated repos[0m
+ find_by
+[32m should find a repository by it's name and owner_name[0m
+[32m should find a repository by it's id[0m
+[32m should find a repository by it's github_id[0m
+[32m returns nil when a repository couldn't be found using params[0m
+ active
+[32m does not include invalidated repositories[0m
+[32m does not include inactive repositories[0m
+[32m contains active repositories[0m
+ search
+[32m performs searches with \ entered[0m
+[32m performs searches with / entered[0m
+[32m performs searches case-insensitive[0m
+[32m does not find invalidated repos[0m
+ by_member
+[32m returns all repositories a user has rights to[0m
+[32m does not find invalidated repos[0m
+ counts_by_owner_names
+[32m returns repository counts per owner_name for the given owner_names[0m
+ source_url
+ default source endpoint
+[32m returns the public git source url for a public repository[0m
+[32m returns the private git source url for a private repository[0m
+ custom source endpoint
+[32m returns the private git source url for a public repository[0m
+[32m returns the private git source url for a private repository[0m
+ last_finished_builds_by_branches
+[32m properly orders branches by last build[0m
+[32m retrieves last builds on all branches[0m
+ #users_with_permission
+[32m returns users with the given permission linked to that repository[0m
+ branches
+[32m returns branches for the given repository[0m
+[32m is empty for empty repository[0m
+ associations
+ owner
+[32m can be a user[0m
+[32m can be an organization[0m
+ #regenerate_key!
+[32m regenerates key[0m
+ settings
+[32m allows to set nil for settings[0m
+[32m is reset on reload[0m
+[32m adds repository_id to collection records[0m
+[32m allows to set settings as JSON string[0m
+[32m allows to set settings as a Hash[0m
+[32m updates settings in the DB[0m
+ api_url
+[32m returns the api url for the repository[0m
+ source_host
+[32m returns the source_host name from Travis.config[0m
+ keys
+[32m should return the public key[0m
+[32m should create a new key when the repository is created[0m
+
+Travis::Addons::Campfire::Instruments::EventHandler
+[32m publishes a event[0m
+
+User
+ educational_org
+[32m returns true if organization is flagged as educational_org[0m
+[32m returns false if the organization has not been flagged as educational_org[0m
+
+User
+ find_or_create_for_oauth
+[32m marks new users as such[0m
+[32m updates changed attributes[0m
+ organization_ids
+[32m contains the ids of organizations that the user is a member of[0m
+[32m does not contain the ids of organizations that the user is not a member of[0m
+ profile_image_hash
+[32m returns 32 zeros if no gravatar_id or email is set[0m
+[32m returns a MD5 hash of the email if no gravatar_id and an email is set[0m
+[32m returns gravatar_id if it's present[0m
+ correct_scopes?
+[32m accepts additional scopes[0m
+[32m complains about missing scopes[0m
+[32m accepts correct scopes[0m
+ inspect
+ when user has GitHub OAuth token
+[32m does not include the user's GitHub OAuth token[0m
+ when user has no GitHub OAuth token
+[32m indicates nil GitHub OAuth token[0m
+ service_hooks
+[32m includes all repositories if :all options is passed[0m
+[32m does not contain repositories where the user does not have an admin role[0m
+[32m contains repositories where the user has an admin role[0m
+ permission?
+[32m given a condition it returns true if the user has a matching permission[0m
+[32m given roles and a condition it returns false if the user does not have a matching permission for this role[0m
+[32m given roles and a condition it returns true if the user has a matching permission for this role[0m
+[32m given a condition it returns true if the user has a matching permission[0m
+ #to_json
+[32m returns JSON representation of user[0m
+ track_github_scopes
+[32m it resolves github scopes if they haven't been resolved already[0m
+[32m it resolves github scopes if the token did change[0m
+[32m does not resolve github scopes if the token didn't change[0m
+[32m returns an empty list if the token is missing[0m
+ repository_ids
+[32m contains the ids of repositories the user is permitted to see[0m
+[32m does not contain the ids of repositories the user is not permitted to see[0m
+ authenticate_by
+ given a wrong login
+[32m does not authenticate the user[0m
+ given a wrong token
+[32m does not authenticate the user[0m
+ given a valid token and login
+[32m authenticates the user[0m
+ with encrypted token
+[32m authenticates the user[0m
+
+Travis::Notification::Publisher::Log
+[32m defaults to INFO[0m
+[32m prints out the :msg value[0m
+[32m writes to Travis.logger[0m
+[32m uses ERROR if an exception occured[0m
+[32m does not include extra information if no exception occured[0m
+[32m does include extra information if an exception occured[0m
+
+Travis::Task
+ run_local?
+[32m can be set to true on a child class without affecting other classes[0m
+[32m can be set to true manually[0m
+[32m is false by default[0m
+[32m can be set to true through a feature flag[0m
+[32m can be set to false through a feature flag[0m
+
+Travis::Github::Services::SyncUser::Organizations::Instrument
+[32m publishes a event on :run[0m
+[32m publishes a event on :fetch[0m
+
+Travis::Services::RegenerateRepoKey
+ given the request is authorized
+[32m regenerates the key[0m
+ given the request is not authorized
+[32m does not regenerate key[0m
+
+Travis::Config
+ endpoints
+[32m allows to set keys on enpoints when it is nil[0m
+[32m returns endpoints if it is set[0m
+[32m returns an object even without endpoints entry[0m
+ defaults
+[32m notifications defaults to [][0m
+[32m ampq.host defaults to "localhost"[0m
+[32m queue.limit.by_owner defaults to {}[0m
+[32m logs.shards defaults to 1[0m
+[32m database[0m
+[32m queue.interval defaults to 3[0m
+[32m queues defaults to [][0m
+[32m notifications.email defaults to {}[0m
+[32m queue.interval defaults to 3[0m
+[32m ampq.prefetch defaults to 1[0m
+[32m queue.limit.default defaults to 5[0m
+
+Travis::Services::FindHooks
+[32m does not find repositories where the current user does not have admin access[0m
+[32m finds repositories where the current user has admin access[0m
+[32m finds repositories where the current user has access with :all option[0m
+[32m finds repositories by a given owner_name where the current user has admin access[0m
+[32m does not find repositories by a given owner_name where the current user does not have admin access[0m
+
+Travis::Services::FindUserAccounts
+[32m includes accounts where the user has admin access[0m
+[32m includes the user[0m
+[32m includes all repositories with :all param[0m
+[32m does not include accounts where the user does not have admin access[0m
+[32m includes repository counts[0m
+
+Travis::Addons::Webhook::Instruments::EventHandler
+[32m publishes a event[0m
+
+Job::Test
+[32m is cancelable if the job has not finished yet[0m
+[32m is not cancelable if the job has already been finished[0m
+ cancelling
+[32m should set canceled_at and finished_at on job[0m
+[32m should put a build into canceled state if all the jobs in matrix are in finished state[0m
+[32m should not propagate cancel state to source[0m
+ events
+ finish
+[32m propagates the event to the source[0m
+[32m notifies observers[0m
+[32m sets the state to the given result state[0m
+ start
+[32m propagates the event to the source[0m
+[32m notifies observers[0m
+[32m sets the state to :started[0m
+ receive
+[32m resets the log content[0m
+[32m sets the worker from the payload[0m
+[32m sets the state to :received[0m
+[32m notifies observers[0m
+[32m propagates the event to the source[0m
+[32m sets log's removed_at and removed_by to nil[0m
+ reset
+[32m resets log attributes[0m
+[32m resets job attributes[0m
+[32m sets the state to :created[0m
+[32m recreates log if it's removed[0m
+[33m clears log parts (PENDING: Temporarily disabled with xit)[0m
+[32m destroys annotations[0m
+[32m triggers a :created event[0m
+
+Travis::Services::UpdateJob
+ event: start
+[32m sets the build state to started[0m
+[32m sets the job started_at[0m
+[32m sets the job state to started[0m
+[32m sets the build started_at[0m
+[32m sets the build state to started[0m
+[32m sets the repository last_build_state to started[0m
+[32m sets the repository last_build_started_at[0m
+ when job is canceled
+[32m does not update state[0m
+ event: receive
+[32m sets the job worker name[0m
+[32m sets the job received_at[0m
+[32m sets the job state to received[0m
+[32m sets the build state to received[0m
+[32m sets the build received_at[0m
+[32m sets the build state to received[0m
+ when job is canceled
+[32m does not update state[0m
+ #cancel_job_in_worker
+[32m sends cancel event to the worker[0m
+ event: finish
+[32m sets the build state to passed[0m
+[32m sets the job finished_at[0m
+[32m sets the job state to passed[0m
+[32m sets the build finished_at[0m
+[32m sets the repository last_build_state to passed[0m
+[32m sets the repository last_build_finished_at[0m
+ when job is canceled
+[32m does not update state[0m
+ compat
+[32m swaps :result for :state (passed) if present[0m
+[32m swaps :result for :state (failed) if present[0m
+ event: reset
+[32m resets the job worker name[0m
+[32m resets the job started_at[0m
+[32m sets the job state to created[0m
+[32m resets the build state to started[0m
+[32m resets the build started_at[0m
+[32m resets the build state to started[0m
+[32m resets the repository last_build_state to started[0m
+[32m resets the repository last_build_started_at[0m
+
+Travis::Github::Services::FindOrCreateOrg
+[32m updates repositories owner_name and nullifies other users or orgs' login if login is changed[0m
+[32m gets login from data if login is not available in find[0m
+[32m finds an existing organization[0m
+[32m creates an organization from github[0m
+[32m creates a organization from github and nullifies login if other organization has the same login[0m
+[33m raises a GithubApi error if the organization could not be retrieved (PENDING: Temporarily disabled with xit)[0m
+
+Travis::Logs::Services::Aggregate
+[32m aggregates logs where no parts have been added for [force interval] seconds[0m
+[32m does not aggregates logs where no parts have been added for [regular interval] seconds and the final flag is not set[0m
+[32m aggregates logs where no parts have been added for [regular interval] seconds and the final flag is set[0m
+[32m aggregates parts to log.content[0m
+ aggregate
+[32m sets aggregated_at[0m
+[32m appends to an existing log[0m
+[32m aggregates the content parts[0m
+[32m deletes the content parts from the parts table[0m
+[32m triggers a log:aggregated event[0m
+ rollback
+ rolls back if log aggregation fails
+ behaves like rolled_back_log_aggregation
+[32m does not delete parts[0m
+[32m does not set the content[0m
+[32m does not set aggregated_at[0m
+[32m handles the exception[0m
+ rolls back if parts deletion fails
+ behaves like rolled_back_log_aggregation
+[32m does not delete parts[0m
+[32m does not set the content[0m
+[32m does not set aggregated_at[0m
+[32m handles the exception[0m
+
+Travis::Services::FindBuild
+ with newer associated record
+[32m returns updated_at of newest result[0m
+ updated_at
+[32m returns builds updated_at attribute[0m
+ run
+[32m includes config by default[0m
+[32m does not raise if the build could not be found[0m
+[32m finds a build by the given id[0m
+[32m excludes config when requested[0m
+ without updated_at in one of the resources
+[32m returns updated_at of newest result[0m
+
+Request
+ config_url
+[32m returns the api url to the .travis.yml file on github[0m
+[32m returns the api url to the .travis.yml file on github with a gh endpoint given[0m
+ pull_request?
+[32m returns true if the event_type is pull_request[0m
+[32m returns false if the event_type is not pull_request[0m
+ pull_request_title
+[32m returns the title of the pull request from payload[0m
+[32m returns nil for non pull request[0m
+ branch_name
+[32m returns a branch name if available[0m
+[32m returns nil if a branch name is not available[0m
+ #head_repo
+[32m returns a branch name if available[0m
+[32m returns nil if this is not a pull request[0m
+ same_repo_pull_request?
+[32m returns false if repo data is not available[0m
+[32m returns false if the base and head repos do not match[0m
+[32m returns true if the base and head repos match[0m
+ #head_branch
+[32m returns a branch name if available[0m
+[32m returns nil if this is not a pull request[0m
+ tag_name
+[32m returns a tag name if available[0m
+[32m returns nil if a tag name is not available[0m
+ api_request?
+[32m returns true if the event_type is api[0m
+[32m returns false if the event_type is not api[0m
+
+Build::Metrics
+[32m measures on "travis.builds.start.delay"[0m
+[32m measures the time it takes from creating the request until starting the build[0m
+
+Build::ResultMessage
+ email
+[32m returns :pending if the build is pending[0m
+[32m returns :failed if the build has failed for the first time[0m
+[32m returns :passed if the build has passed again[0m
+[32m returns :fixed if the build was fixed[0m
+[32m returns :failing if the build has failed again[0m
+[32m returns :canceled if the build has canceled[0m
+[32m returns :errored if the build has errored[0m
+[32m returns :broken if the build was broken[0m
+[32m returns :passed if the build has passed for the first time[0m
+ full
+[32m returns :pending if the build is pending[0m
+[32m returns :failed if the build has failed for the first time[0m
+[32m returns :passed if the build has passed again[0m
+[32m returns :fixed if the build was fixed[0m
+[32m returns :failing if the build has failed again[0m
+[32m returns :canceled if the build has canceled[0m
+[32m returns :errored if the build has errored[0m
+[32m returns :broken if the build was broken[0m
+[32m returns :passed if the build has passed for the first time[0m
+ short
+[32m returns :pending if the build is pending[0m
+[32m returns :failed if the build has failed for the first time[0m
+[32m returns :passed if the build has passed again[0m
+[32m returns :fixed if the build was fixed[0m
+[32m returns :failing if the build has failed again[0m
+[32m returns :canceled if the build has canceled[0m
+[32m returns :errored if the build has errored[0m
+[32m returns :broken if the build was broken[0m
+[32m returns :passed if the build has passed for the first time[0m
+
+Travis::Services::CancelBuild
+ run
+[32m should not be able to cancel job if user does not have any permissions[0m
+[32m should not cancel the job if it's not cancelable[0m
+[32m should cancel the build if it's cancelable[0m
+
+Travis::Addons::GithubStatus::Instruments::EventHandler
+[32m publishes a event for push events[0m
+[32m publishes a event for pull request events[0m
+
+Travis::Services::NextBuildNumber
+ with a new repository
+[32m returns 1[0m
+[32m initializes the next_build_number[0m
+ with an existing repository
+[32m returns the next_build_number[0m
+[32m increments the next_build_number[0m
+
+Travis::Api::V0::Pusher::Job::Started
+[32m data[0m
+[32m should return commit data[0m
+
+Travis::Github::Services::SyncUser::UserInfo
+[32m calls update_attributes! and emails.find_or_create_by_email![0m
+[32m raises an error if github_id does not match[0m
+ login
+[32m should == "rkh"[0m
+ gravatar_id
+[32m should == "5c2b452f6eea4a6d84c105ebd971d2a4"[0m
+ name
+[32m should == "Konstantin Haase"[0m
+ email
+[32m should == "konstantin.haase@gmail.com"[0m
+ verified_emails
+[32m should == ["konstantin.mailinglists@gmail.com", "konstantin.mailinglists@googlemail.com"][0m
+ no public email
+ no primary email
+ email
+[32m should == "konstantin.mailinglists@gmail.com"[0m
+ no verified email
+ email
+[32m should == "konstantin.haase@gmail.com"[0m
+ no email on file
+ email
+[32m should == "konstantin@Konstantins-MacBook-Air.local"[0m
+ missing github scope
+ email
+[32m should == "konstantin.haase@gmail.com"[0m
+ email
+[32m should == "konstantin.mailinglists@googlemail.com"[0m
+ login changed
+ login
+[32m should == "RKH"[0m
+ name changed
+ name
+[32m should == "RKH"[0m
+
+Log
+ #clear!
+[32m resets aggregated_at[0m
+[32m resets content[0m
+[32m clears log parts[0m
+[32m resets archived_at[0m
+[32m resets archive_verified[0m
+ content
+[32m if aggregated returns the aggregated parts[0m
+[32m while not aggregated it appends to an existing log[0m
+[32m while not aggregated it returns the aggregated parts[0m
+ class methods
+[32m is archived only when archive is verified[0m
+ #to_json
+[32m returns JSON representation of the record[0m
+
+Travis::Addons::Slack::Instruments::EventHandler
+[32m publishes a event[0m
+
+Travis::Services::FindRequests
+ run
+[32m raises an error if repository params are missing[0m
+[32m finds requests older than the given id[0m
+[32m finds recent requests when older_than is not given[0m
+[32m scopes to the given repository_id[0m
+[32m raises when the repository could not be found[0m
+[32m limits requests if limit is passed[0m
+[32m limits requests to Travis.config.services.find_requests.max_limit if limit is higher[0m
+[32m limits requests to Travis.config.services.find_requests.default_limit if limit is not given[0m
+
+Travis::Services::UpdateUser
+[32m updates the locale if valid[0m
+[32m does not update the locale if invalid[0m
+
+Travis::TravisYmlStats
+[32m owner_type and owner_id are set[0m
+ .travis.yml language key
+ when `language: [ 'ruby', 'python' ]'
+[32m sets the language key to 'invalid'[0m
+ when not specified
+[32m sets the language key to nil[0m
+ when `language: ruby'
+[32m sets the language key to 'ruby'[0m
+ when `language: objective c'
+[32m retains the space[0m
+ sudo being used in a command
+ sudo is used in a command
+[32m sets the uses_sudo key to true[0m
+ sudo is not used in any commands
+[32m sets the uses_sudo key to false[0m
+ a push
+[32m sets the event_type to 'push'[0m
+ when payload contains a single deployment provider
+[32m reports deployment count correctly[0m
+ when payload contains multiple deployment providers
+[32m reports deployment count correctly[0m
+ when payload contains notifications
+[32m reports deployment count correctly[0m
+ when payload contains multiple deployment providers of the same type
+[32m reports deployment count correctly[0m
+ a request without 'group' key
+[32m sets the group_name key to 'default'[0m
+ .travis.yml ruby key
+ when `ruby: [ '2.1.2', 2.0 ]'
+[32m sets the language_version.ruby key to ['2.0', '2.1.2'][0m
+ when `ruby: [ '2.1.2', '2.0.0' ]'
+[32m sets the language_version.ruby key to ['2.0.0', '2.1.2'][0m
+ when `ruby: 2.1.2'
+[32m sets the language_version.ruby key to ['2.1.2'][0m
+ repository language reported by GitHub
+ no language reported
+[32m sets the github_language key to nil[0m
+ F#
+[32m sets the github_language key to 'F#'[0m
+ Ruby
+[32m sets the github_language key to 'Ruby'[0m
+ a request with 'group' key
+[32m sets the group_name key to 'dev'[0m
+ apt-get being used in a command
+ apt-get is used in a command
+[32m sets the uses_apt_get key to true[0m
+ apt-get is not used in any commands
+[32m sets the uses_apt_get key to false[0m
+ a pull_request
+[32m sets the event_type to 'pull_request'[0m
+ a request without 'dist' key
+[32m sets the dist_name key to 'default'[0m
+ a request with 'dist' key
+[32m sets the dist_name key to 'trusty'[0m
+ a build with two jobs
+[32m sets the matrix_size to 2[0m
+
+Travis::Addons::Pushover::EventHandler
+ users
+[32m returns an array of multiple user keys when given a comma separated string[0m
+[32m returns an array of user keys when given an array[0m
+[32m returns an array of user keys when given a string[0m
+[32m returns an array of values if the build configuration specifies an array of user keys within a config hash[0m
+ handler
+[32m does not trigger a task if the build is a pull request[0m
+[32m triggers a task if the build is a push request[0m
+[32m passes ssl key from repository to config[0m
+[32m triggers a task if users and api_key are present[0m
+[32m does not trigger a task if no users are present[0m
+[32m does not trigger a task if no api_key is present[0m
+[32m triggers a task if specified by the config[0m
+[32m does not trigger task if specified by the config[0m
+ subscription
+[32m build:started does not notify[0m
+[32m build:finish notifies[0m
+
+Permission
+ by_roles
+[32m returns an empty scope if no roles given[0m
+[32m returns a single permission if one role given[0m
+[32m returns matching permissions if two roles given as symbols[0m
+
+Travis::Api::V1::Http::Branches
+[32m data[0m
+
+Travis::Addons::Pushover::Instruments::EventHandler
+[32m publishes a event[0m
+
+Travis::Requests::Services::Receive::PullRequest
+ request
+[32m returns all attributes required for a Request[0m
+ repository
+[32m returns all attributes required for a Repository[0m
+ accept
+ given action is "synchronize"
+[32m returns true if head has changed[0m
+[32m returns false if base has not changed[0m
+ given action is "reopened"
+[32m returns true[0m
+ given action is "opened"
+[32m rejects when the feature is disabled[0m
+[32m rejects it if there is no merge commit[0m
+[32m returns true[0m
+ given action is "comment"
+[32m returns false[0m
+ commit
+[32m returns all attributes required for a Commit[0m
+
+Build::Config::Obfuscate
+[32m obfuscates env vars[0m
+[32m leaves regular vars untouched[0m
+[32m normalizes env vars which are hashes to strings[0m
+[32m obfuscates env vars which are not in nested array[0m
+[32m works with nil values[0m
+[32m does not make an empty env key an array but leaves it empty[0m
+[32m removes source key[0m
+
+Travis::Services::FindBranch
+[32m returns an empty build scope when the repository could not be found[0m
+[32m scopes to the given repository[0m
+[32m finds the last builds of the given repository and branch[0m
+[32m finds branches by a given id[0m
+
+Travis::Chunkifier
+ with bigger chunk_size
+[32m should keep parts under chunk_size taking into account conversion to json and bytes[0m
+ with UTF-8 chars
+[32m should keep parts under chunk_size taking into account conversion to json and bytes[0m
+ parts
+[32m should == ["𤭢abc", "ą"][0m
+ with newlines
+ parts
+[32m should == ["01\n234501\n2", "34501\n2345"][0m
+
+Travis::Services::UpdateHook::Instrument
+[32m publishes a event[0m
+
+Request::States
+[32m has the state :created when just created[0m
+ finish
+ with a config parse error
+[32m builds the build[0m
+[32m prints an error to the log[0m
+ with an unapproved request
+[32m does not build the build[0m
+[32m sets the state to finished[0m
+ with an approved request
+[32m builds the build[0m
+[32m sets the state to finished[0m
+ with a config server error
+[32m builds the build[0m
+[32m prints an error to the log[0m
+ configure
+[32m stores the config on the request[0m
+[32m merges existing configuration (e.g. from an api request)[0m
+[32m fetches the .travis.yml config from Github[0m
+[32m sets the state to configured[0m
+ start
+ with an accepted request
+[32m sets the state to started[0m
+[32m finishes the request[0m
+[32m configures the request[0m
+[32m sets the result to :accepted[0m
+ but rejected config
+[32m does config, but resets it to nil[0m
+ but rejected branch
+[32m does config, but resets it to nil[0m
+ with a rejected request
+[32m sets the state to started[0m
+[32m finishes the request[0m
+[32m does not configure the request[0m
+[32m sets the result to :rejected[0m
+ start!
+[32m finally sets the state to finished[0m
+ adding a build
+[32m shouldn't notify the build when the flag is disabled[0m
+[32m should notify the build[0m
+[32m should create a build[0m
+
+Url
+ #short_url
+[32m returns the full short url[0m
+ #code
+[32m sets the code automatically[0m
+ .shorten
+[32m creates a new Url object if the url has not been shortened[0m
+[32m retrieves a Url which has already been shortened[0m
+
+SslKey
+[32m is a SslKey[0m
+ encrypt
+[32m encrypts something[0m
+[32m is decryptable[0m
+ generate_keys!
+[32m generates a new public key even if one already exists[0m
+[32m generates a new private key even if one already exists[0m
+ generate_keys
+[32m does not generate a new public key if one already exists[0m
+[32m generates the private key[0m
+[32m generates the public key[0m
+[32m does not generate a new private key if one already exists[0m
+ decrypt
+[32m decrypts something[0m
+ encoding
+[32m generates the correct key format to export to github[0m
+[32m encodes the private key properly for the build[0m
+
+Travis::Api::V1::Http::User
+[32m data[0m
+
+Travis::Services::FindBuilds
+ run
+[32m finds builds older than the given number[0m
+[32m finds recent builds when no repo given[0m
+[32m finds recent builds when empty params given[0m
+[32m finds builds with a given number, scoped by repository[0m
+[32m does not find by number if repository_id is missing[0m
+[32m scopes to the given repository_id[0m
+[32m returns an empty build scope when the repository could not be found[0m
+[32m finds builds by a given list of ids[0m
+ finds recent builds when event_type
+[32m given as api[0m
+[32m given as pull_request[0m
+[32m given as push[0m
+[32m given as [push, api][0m
+
+Travis::Services::FindDailyTestsStats
+[32m should return the jobs per day[0m
+
+Travis::Addons::StatesCache::EventHandler
+ handler
+[32m build:finished updates the cache[0m
+
+Travis::Api
+ data
+[32m returns the data from the builder instance[0m
+ instantiates a builder and returns the data
+[32m given an object that responds to :base_class (aka ActiveRecord::Base)[0m
+[32m given an object that responds to :klass (aka Arel::Relation)[0m
+ #builder
+[32m does not raise an error if constant name is wrong[0m
+[32m returns nil if only part of the constant is matched[0m
+[32m finds given constant[0m
+
+Request::Approval
+ config_accepted?
+[32m approves the build when .travis.yml is present[0m
+[32m does not approve the build if .travis.yml is missing and builds without it are not allowed[0m
+[32m approves the build when .travis.yml is missing, but builds with .travis.yml are allowed[0m
+ approved?
+[33m should be specified (PENDING: Temporarily disabled with xit)[0m
+ message
+[32m returns "pull requests disabled" if pull requests are disabled[0m
+[32m returns "missing commit" if the commit is missing[0m
+[32m returns "private repository" if the repository is private[0m
+[32m returns "excluded repository" if the repository is an excluded repository and exclude rule is a string[0m
+[32m returns "github pages branch" if the branch is a github pages branch[0m
+[32m returns "branch not included or excluded" if the branch was not approved[0m
+[32m returns "missing config" if the config is not present[0m
+[32m returns "excluded repository" if the repository is an excluded repository[0m
+[32m returns "pushes disabled" if pushes are disabled[0m
+ included_repository?
+[32m returns false if the repository is not included[0m
+[32m returns true if the repository is an included repository with rule as a string[0m
+[32m returns true if the repository is an included repository[0m
+[32m returns false if the repository is not included with rule as a string[0m
+ excluded_repository?
+[32m returns true if the repository is an excluded repository with rule as a string[0m
+[32m returns false if the repository is not excluded[0m
+[32m returns true if the repository is an excluded repository[0m
+[32m returns false if the repository is not excluded with rule as a string[0m
+ enabled_in_settings?
+[32m returns true if pushes are enabled and a request is a push[0m
+[32m returns true if pull requests are enabled and a request is a pull request[0m
+[32m returns true if a request is an api request[0m
+[32m returns false if pull requests are disabled and a request is a pull request[0m
+[32m returns false if pushes are disabled and a request is a push[0m
+ skipped?
+[32m returns true when the commit message contains [ci skip][0m
+ accepted?
+[32m does not accept a request that belongs to a private repository[0m
+[32m does not accept a request that does not have a commit[0m
+[32m accepts a request that has a commit, belongs to a public repository, is not skipped and does not belong to the github_pages branch and it is not a rails fork[0m
+[32m does not accept a request that belongs to an excluded repository[0m
+[32m does not accept a request that is skipped (using the commit message)[0m
+[32m accepts a request that belongs to the github_pages branch and is explicitly set to build that branch (String)[0m
+[32m accepts a request that belongs to the github_pages branch and is explicitly set to build that branch (Array)[0m
+[32m does not accept a request when it is disabled in settings[0m
+ branch_accepted?
+[32m doesn't fail when the branch configuration is an array[0m
+[32m accepts a request that belongs to the gh-pages branch if it's specified in branches:only[0m
+[32m does not accept a request that belongs to the github_pages branch[0m
+ github_pages?
+[32m returns true when a PR is for gh_pages[0m
+[32m returns true for a branch named gh_pages[0m
+[32m returns true for a branch named gh-pages[0m
+[32m returns false for a branch named master[0m
+
+User::Oauth
+ find_or_create_by
+[32m updates changed attributes[0m
+[32m does not mark existing users as recently_signed_up[0m
+[32m marks users as recently_signed_up[0m
+ attributes_from
+[32m returns required data[0m
+
+Travis::Services::FindDailyReposStats
+[32m should include the date[0m
+[32m should include the number per day[0m
+
+Travis::Addons::Archive::EventHandler
+ instrument
+[32m publishes an event[0m
+ handler
+[32m runs the archive task[0m
+ subscription
+[32m build:started does not notify[0m
+[32m log:aggregated notifies[0m
+
+Travis::Addons::Irc::EventHandler
+ channels
+[32m returns an array of urls when given a string on the channels key[0m
+[32m returns an array of urls when given an array[0m
+[32m returns an array of urls when given a string[0m
+[32m returns an array of urls when given an array on the channels key[0m
+ handler
+[32m triggers a task if channels are present[0m
+[32m does not trigger a task if the build is a pull request[0m
+[32m triggers a task if the build is a push request[0m
+[32m does not trigger a task if no channels are present[0m
+[32m triggers a task if specified by the config[0m
+[32m does not trigger task if specified by the config[0m
+ subscription
+[32m build:started does not notify[0m
+[32m build:finish notifies[0m
+
+Travis::Services::UpdateAnnotation
+[32m returns nil when given invalid provider credentials[0m
+ when annotation is enabled
+[32m creates the annotation if it doesn't exist already[0m
+[32m updates an existing annotation if one exists[0m
+ when annotation is disabled
+[32m returns nil[0m
+
+Travis::Github::Services::SyncUser::Repositories
+[32m removes repositories from the user's permissions which are not listed in the data from github[0m
+[32m fetches the user's orgs' repositories[0m
+[32m fetches the user's repositories[0m
+ given type is set to private
+[32m synchronizes each of the private repositories[0m
+[32m does not synchronize public repositories[0m
+ given type is set to public
+[32m synchronizes each of the public repositories[0m
+[32m does not synchronize private repositories[0m
+ given type is set to "public,private"
+[32m synchronizes all the repositories[0m
+ with private forks of organization repositories
+[32m should sync the organization's repository when it has admin rights[0m
+[32m should sync the organization's repository when it's not a duplicate[0m
+[32m should not sync the organization's duplicate[0m
+
+Job::Queue
+[32m returns builds.linux as the default queue[0m
+[32m returns builds.common as the default queue if configured to in Travis.config[0m
+ when "sudo" value matches the given configuration hash
+[32m returns the matching queue[0m
+[32m returns the matching queue when language is also given[0m
+ Queue.for
+[32m returns the queue when language matches the given configuration hash[0m
+[32m returns the queue when slug matches the given configuration hash[0m
+[32m returns the default build queue when neither slug or language match the given configuration hash[0m
+[32m returns the queue when the owner matches the given configuration hash[0m
+[32m returns the queue when sudo requirements matches the given configuration hash[0m
+[32m returns the docker queue by default for educational repositories[0m
+[32m returns the queue matching configuration for educational repository[0m
+[32m handles language being passed as an array gracefully[0m
+ when "docker_default_queue" feature is active
+[32m returns "builds.docker" when sudo: nil and the repo created_at is nil[0m
+[32m returns "builds.linux" when sudo: nil and the repo created_at is after cutoff and sudo is detected[0m
+[32m returns "builds.docker" when sudo: false and the repo created_at is after cutoff[0m
+[32m returns "builds.linux" when sudo: required and the repo created_at is after cutoff[0m
+[32m returns "builds.linux" when sudo: required and the repo created_at is before cutoff[0m
+[32m returns "builds.linux" when sudo: true and the repo created_at is before cutoff[0m
+[32m returns "builds.linux" when sudo: nil and the repo created_at is before cutoff[0m
+[32m returns "builds.docker" when sudo: nil and the repo created_at is after cutoff[0m
+[32m returns "builds.linux" when sudo: required and the repo created_at is nil[0m
+[32m returns "builds.docker" when sudo: false and the repo created_at is nil[0m
+[32m returns "builds.docker" when sudo: false and the repo created_at is before cutoff[0m
+[32m returns "builds.linux" when sudo: true and the repo created_at is nil[0m
+[32m returns "builds.linux" when sudo: true and the repo created_at is after cutoff[0m
+ when "services" value matches the given configuration hash
+[32m returns the matching queue[0m
+[32m returns the matching queue when language is also given[0m
+ when "os" value matches the given configuration hash
+[32m returns the matching queue[0m
+[32m returns the matching queue when language is also given[0m
+ Queue.sudo_detected?
+[32m returns true for {:before_install=>["# no sudo", "ping -c 1 google.com"]}[0m
+[32m returns false for {:bogus=>"sudo echo"}[0m
+[32m returns true for {:script=>"sudo echo"}[0m
+[32m returns true for {:before_install=>["docker run busybox echo whatever"]}[0m
+[32m returns true for {:before_script=>["echo ; echo ; echo ; sudo echo ; echo"]}[0m
+[32m returns false for {:install=>"# no sudo needed here"}[0m
+[32m returns false for {:install=>true}[0m
+ Queue.queues
+[32m returns an array of Queues for the config hash[0m
+ matches?
+[32m returns false when services do not match[0m
+[32m returns true when the given owner matches[0m
+[32m returns false when sudo is not specified[0m
+[32m returns true when dist matches[0m
+[32m returns false when dist does not match[0m
+[32m returns true when osx_image matches[0m
+[32m returns true when sudo is false[0m
+[32m returns true when services match[0m
+[32m returns true for percentage: 100[0m
+[32m returns false when neither of slug or language match[0m
+[32m returns false when sudo is true[0m
+[32m returns true when the given language matches[0m
+[32m returns true when os is missing[0m
+unknown matchers used for queue builds.invalid: foobar_donotmatch
+[32m returns false if no valid matchers are specified[0m
+[32m returns false for percentage: 0[0m
+[32m returns true when the given slug matches[0m
+[32m returns false when osx_image does not match[0m
+
+Travis::Github::Education
+[32m returns empty hash on error response[0m
+[32m returns empty hash on json parse error[0m
+[32m fetches student data[0m
+ student?
+[32m is true when student field is true in the response[0m
+
+Travis::Services::FindAnnotations
+ run
+[32m finds annotations by a given list of ids[0m
+[32m finds annotations by job_id[0m
+
+Travis::Requests::Services::Receive::Push
+ repository
+[32m returns all attributes required for a Repository[0m
+ commit
+[32m returns the last skipped commit if all commits are skipped[0m
+[32m returns the last commit that isn't skipped[0m
+[32m returns all attributes required for a Commit[0m
+ branch processing
+[32m returns travis when ref is ref/heads/travis[0m
+[32m returns master when ref is ref/heads/master[0m
+[32m returns head_commit if commits info is not present[0m
+[32m returns features/travis-ci when ref is ref/heads/features/travis-ci[0m
+
+Pending:
+[33m Travis::Services::FindJobs updated_at returns the latest updated_at time[0m
+[36m # rack cache is disabled, so not much need for caching now[0m
+[36m # ./spec/travis/services/find_jobs_spec.rb:58[0m
+[33m Travis::Services::FindAdmin find given an error occurs while retrieving the repository info raises an exception[0m
+[36m # Temporarily disabled with xit[0m
+[36m # ./spec/travis/services/find_admin_spec.rb:46[0m
+[33m Travis::Services::FindAdmin find given a user does not have access to a repository raises an exception[0m
+[36m # Temporarily disabled with xit[0m
+[36m # ./spec/travis/services/find_admin_spec.rb:29[0m
+[33m Travis::Services::FindAdmin find given a user does not have access to a repository revokes admin permissions for that user on our side[0m
+[36m # Temporarily disabled with xit[0m
+[36m # ./spec/travis/services/find_admin_spec.rb:33[0m
+[33m Travis::Github::Services::FindOrCreateRepo needs to be specified[0m
+[36m # Temporarily disabled with xit[0m
+[36m # ./spec/travis/github/services/find_or_create_repo_spec.rb:11[0m
+[33m Travis::Notification::Publisher::Redis encodes the payload in json[0m
+[36m # feature disabled at the moment[0m
+[36m # ./spec/travis/notification/publisher/redis_spec.rb:31[0m
+[33m Travis::Notification::Publisher::Redis adds to the list[0m
+[36m # feature disabled at the moment[0m
+[36m # ./spec/travis/notification/publisher/redis_spec.rb:17[0m
+[33m Travis::Notification::Publisher::Redis queues new messages on the right[0m
+[36m # feature disabled at the moment[0m
+[36m # ./spec/travis/notification/publisher/redis_spec.rb:41[0m
+[33m Travis::Notification::Publisher::Redis sends out events over pubsub[0m
+[36m # feature disabled at the moment[0m
+[36m # ./spec/travis/notification/publisher/redis_spec.rb:49[0m
+[33m Travis::StatesCache integration updates the state if the id of the build is the same[0m
+[36m # Dalli can't run properly, skipping. Cause: localhost:11211 is down: . If you are sure it is running, ensure memcached version is > 1.4.[0m
+[36m # ./spec/travis/states_cache_spec.rb:78[0m
+[33m Travis::StatesCache integration updates the state only if the info is newer[0m
+[36m # Dalli can't run properly, skipping. Cause: localhost:11211 is down: . If you are sure it is running, ensure memcached version is > 1.4.[0m
+[36m # ./spec/travis/states_cache_spec.rb:57[0m
+[33m Travis::StatesCache integration saves the state for given branch and globally[0m
+[36m # Dalli can't run properly, skipping. Cause: localhost:11211 is down: . If you are sure it is running, ensure memcached version is > 1.4.[0m
+[36m # ./spec/travis/states_cache_spec.rb:47[0m
+[33m Travis::StatesCache integration handles connection errors gracefully[0m
+[36m # Dalli can't run properly, skipping. Cause: localhost:11211 is down: . If you are sure it is running, ensure memcached version is > 1.4.[0m
+[36m # ./spec/travis/states_cache_spec.rb:90[0m
+[33m Travis::Github::Services::FindOrCreateUser raises a GithubApi error if the user could not be retrieved[0m
+[36m # Temporarily disabled with xit[0m
+[36m # ./spec/travis/github/services/find_or_create_user_spec.rb:82[0m
+[33m Job::Test events reset clears log parts[0m
+[36m # Temporarily disabled with xit[0m
+[36m # ./spec/travis/model/job/test_spec.rb:174[0m
+[33m Travis::Github::Services::FindOrCreateOrg raises a GithubApi error if the organization could not be retrieved[0m
+[36m # Temporarily disabled with xit[0m
+[36m # ./spec/travis/github/services/find_or_create_org_spec.rb:83[0m
+[33m Request::Approval approved? should be specified[0m
+[36m # Temporarily disabled with xit[0m
+[36m # ./spec/travis/model/request/approval_spec.rb:96[0m
+
+Finished in 171.61 seconds
+[33m1458 examples, 0 failures, 17 pending[0m
+
+Randomized with seed 26584
+
+travis_time:end:17376fe8:start=1447267265303834656,finish=1447267457295779784,duration=191991945128
+[0K
+[32;1mThe command "./build.sh" exited with 0.[0m
+travis_fold:start:cache.2
+[0Kstore build cache
+travis_time:start:194ad2e8
+[0Kchange detected:
+/home/travis/build/travis-ci/travis-core/vendor/bundle/jruby/1.9/bundler/gems/gh-27e30fd01f6d/.git/index
+/home/travis/build/travis-ci/travis-core/vendor/bundle/jruby/1.9/bundler/gems/gh-27e30fd01f6d/.git/index
+/home/travis/build/travis-ci/travis-core/vendor/bundle/jruby/1.9/bundler/gems/travis-sidekiqs-21a2fee158e2/.git/index
+/home/travis/build/travis-ci/travis-core/vendor/bundle/jruby/1.9/bundler/gems/travis-sidekiqs-21a2fee158e2/.git/index
+/home/travis/build/travis-ci/travis-core/vendor/bundle/jruby/1.9/bundler/gems/travis-support-2cd02d2a06fd/.git/index
+/home/travis/build/travis-ci/travis-core/vendor/bundle/jruby/1.9/bundler/gems/travis-support-2cd02d2a06fd/.git/index
+
+changes detected, packing new archive
+uploading archive
+travis_time:end:194ad2e8:start=1447267457300334477,finish=1447267463659669554,duration=6359335077
+[0Ktravis_fold:end:cache.2
+[0K
+[31;1mArtifacts support disabled for pull requests[0m
+
+
+Done. Your build exited with 0.
diff --git a/resource/.php b/resource/.php
new file mode 100644
index 0000000..3c93a89
--- /dev/null
+++ b/resource/.php
@@ -0,0 +1,6 @@
+private class HelloWorld{
+
+ private static void main(String [class]args){
+ System.out.println("Hello World");
+ }
+}
diff --git a/resource/css/.scss b/resource/css/.scss
new file mode 100644
index 0000000..f027ab8
--- /dev/null
+++ b/resource/css/.scss
@@ -0,0 +1,133 @@
+@media print {
+ .hero::after {
+ content: "Developer Preview Only - some details may change";
+ }
+
+ /*
+ * Print Styles
+ *
+ */
+ .banner {
+ background: #ECEFF1;
+ -webkit-print-color-adjust: exact;
+ padding: 16px 22px;
+ margin: 0 48px;
+ min-height: 96px;
+ }
+ .side-nav, nav {
+ display:none;
+ }
+ // HIDE FOR PRINT
+ .main-nav,
+ .main-footer,
+ .cta-bar {
+ display:none;
+ }
+
+ // ZERO OUT MARGIN & PADDING
+ .l-offset-nav,
+ .l-offset-side-nav {
+ padding: 0 !important;
+ margin: 0 !important;
+ }
+
+ // BACKGROUND FOR PRINT
+ // .hero {
+ // background: none !important;
+ // }
+
+ //COLOR DARK
+ .hero-title,
+ .hero-subtitle {
+ color: $steel;
+ }
+
+ table {
+ border-bottom: 5px solid #4D6A79;
+ width: 100%;
+ code {
+ background: transparent;
+ display: inline-block;
+}
+ th {
+ background: #4D6A79;
+ color: white;
+ padding: $unit ($unit * 2);
+ box-sizing: border-box;
+ width: 50%;
+ code {
+ color: white;
+ }
+ &:last-child {
+ text-align: right;
+ }
+ &:first-child {
+ text-align: left;
+ }
+ }
+ td {
+ padding: $unit ($unit * 2);
+ box-sizing: border-box;
+ width: 50%;
+ vertical-align: top;
+ border: none;
+ }
+
+ td p, th p {
+ margin: 0;
+ font-size: inherit;
+ font-weight: inherit;
+ opacity: inherit;
+ line-height: inherit;
+ padding: 0;
+ }
+
+ tr:nth-child(odd) {
+ background: #E7EBEE;
+ -webkit-print-color-adjust: exact;
+ }
+ }
+
+ .l-sub-section {
+ background: #f5f6f7;
+ -webkit-print-color-adjust: exact;
+ border-radius: 4px;
+ }
+
+ code {
+ background: #F5F6F7;
+ -webkit-print-color-adjust: exact;
+ border-radius: 2px;
+ font-family: Monaco,"Lucida Console",monospace;
+ color: #5C707A;
+ padding: 0 4px;
+ font-size: 90%;
+ }
+
+ .prettyprint {
+ background: #F5F6F7;
+ -webkit-print-color-adjust: exact;
+ font-family: Monaco,"Lucida Console",monospace;
+ color: #5C707A;
+ width: auto;
+ overflow: auto;
+ position: relative;
+ padding: 0;
+ font-size: 13px;
+ line-height: 24px;
+ margin-bottom: 24px;
+ border-radius: 0 0 4px 4px;
+ padding: 16px 32px;
+ }
+
+ .example-title {
+ color: #fff;
+ padding: 0 16px;
+ font-size: 14px;
+ border-color: #1976D2;
+ background: #1976D2;
+ -webkit-print-color-adjust: exact;
+ box-shadow: none;
+ margin-bottom: -18px;
+ }
+}
diff --git a/src/main/java/com/lambdaworks/redis/cluster/PooledClusterConnectionProvider.java b/src/main/java/com/lambdaworks/redis/cluster/PooledClusterConnectionProvider.java
new file mode 100644
index 0000000..ca23a12
--- /dev/null
+++ b/src/main/java/com/lambdaworks/redis/cluster/PooledClusterConnectionProvider.java
@@ -0,0 +1,528 @@
+package com.lambdaworks.redis.cluster;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.google.common.base.Supplier;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import com.google.common.net.HostAndPort;
+import com.google.common.util.concurrent.UncheckedExecutionException;
+import com.lambdaworks.redis.*;
+import com.lambdaworks.redis.ReadFrom;
+import com.lambdaworks.redis.RedisChannelHandler;
+import com.lambdaworks.redis.RedisChannelWriter;
+import com.lambdaworks.redis.RedisException;
+import com.lambdaworks.redis.RedisURI;
+import com.lambdaworks.redis.cluster.models.partitions.Partitions;
+import com.lambdaworks.redis.cluster.models.partitions.RedisClusterNode;
+import com.lambdaworks.redis.codec.RedisCodec;
+
+import com.lambdaworks.redis.models.role.RedisInstance;
+import com.lambdaworks.redis.models.role.RedisNodeDescription;
+import io.netty.util.internal.logging.InternalLogger;
+import io.netty.util.internal.logging.InternalLoggerFactory;
+
+/**
+ * Connection provider with built-in connection caching.
+ *
+ * @param Key type.
+ * @param Value type.
+ * @author Mark Paluch
+ * @since 3.0
+ */
+@SuppressWarnings({ "unchecked", "rawtypes" })
+class PooledClusterConnectionProvider implements ClusterConnectionProvider {
+ private static final InternalLogger logger = InternalLoggerFactory.getInstance(PooledClusterConnectionProvider.class);
+
+ // Contains NodeId-identified and HostAndPort-identified connections.
+ private final LoadingCache> connections;
+ private final boolean debugEnabled;
+ private final RedisAsyncConnectionImpl writers[] = new RedisAsyncConnectionImpl[SlotHash.SLOT_COUNT];
+ private final RedisAsyncConnectionImpl readers[][] = new RedisAsyncConnectionImpl[SlotHash.SLOT_COUNT][];
+ private final RedisClusterClient redisClusterClient;
+ private Partitions partitions;
+
+ private boolean autoFlushCommands = true;
+ private Object stateLock = new Object();
+ private ReadFrom readFrom;
+
+ public PooledClusterConnectionProvider(RedisClusterClient redisClusterClient, RedisChannelWriter clusterWriter,
+ RedisCodec redisCodec) {
+ this.redisClusterClient = redisClusterClient;
+ this.debugEnabled = logger.isDebugEnabled();
+ this.connections = CacheBuilder.newBuilder().build(
+ new ConnectionFactory(redisClusterClient, redisCodec, clusterWriter));
+ }
+
+ @Override
+ public RedisAsyncConnectionImpl getConnection(Intent intent, int slot) {
+ if (debugEnabled) {
+ logger.debug("getConnection(" + intent + ", " + slot + ")");
+ }
+
+ if (intent == Intent.READ && readFrom != null) {
+ return getReadConnection(slot);
+ }
+ return getWriteConnection(slot);
+ }
+
+ protected RedisAsyncConnectionImpl getWriteConnection(int slot) {
+ RedisAsyncConnectionImpl writer;// avoid races when reconfiguring partitions.
+ synchronized (stateLock) {
+ writer = writers[slot];
+ }
+
+ if (writer == null) {
+ RedisClusterNode partition = partitions.getPartitionBySlot(slot);
+ if (partition == null) {
+ throw new RedisException("Cannot determine a partition for slot " + slot + " (Partitions: " + partitions + ")");
+ }
+
+ try {
+ // Use always host and port for slot-oriented operations. We don't want to get reconnected on a different
+ // host because the nodeId can be handled by a different host.
+ RedisURI uri = partition.getUri();
+ ConnectionKey key = new ConnectionKey(Intent.WRITE, uri.getHost(), uri.getPort());
+ return writers[slot] = connections.get(key);
+ } catch (UncheckedExecutionException e) {
+ throw new RedisException(e.getCause());
+ } catch (Exception e) {
+ throw new RedisException(e);
+ }
+ }
+ return writer;
+ }
+
+ protected RedisAsyncConnectionImpl getReadConnection(int slot) {
+ RedisAsyncConnectionImpl readerCandidates[];// avoid races when reconfiguring partitions.
+ synchronized (stateLock) {
+ readerCandidates = readers[slot];
+ }
+
+ if (readerCandidates == null) {
+ RedisClusterNode master = partitions.getPartitionBySlot(slot);
+ if (master == null) {
+ throw new RedisException("Cannot determine a partition to read for slot " + slot + " (Partitions: "
+ + partitions + ")");
+ }
+
+ final List candidates = getReadCandidates(master);
+ List selection = readFrom.select(new ReadFrom.Nodes() {
+ @Override
+ public List getNodes() {
+ return candidates;
+ }
+
+ @Override
+ public Iterator iterator() {
+ return candidates.iterator();
+ }
+ });
+
+ if (selection.isEmpty()) {
+ throw new RedisException("Cannot determine a partition to read for slot " + slot + " (Partitions: "
+ + partitions + ") with setting " + readFrom);
+ }
+
+ readerCandidates = getReadFromConnections(selection);
+ readers[slot] = readerCandidates;
+ }
+
+ // try working connections at first
+ for (RedisAsyncConnectionImpl readerCandidate : readerCandidates) {
+ if (!readerCandidate.isOpen()) {
+ continue;
+ }
+ return readerCandidate;
+ }
+
+ // fall-back to the first connection for same behavior as writing
+ return readerCandidates[0];
+ }
+
+ private RedisAsyncConnectionImpl[] getReadFromConnections(List selection) {
+ RedisAsyncConnectionImpl[] readerCandidates;
+ try {
+ // Use always host and port for slot-oriented operations. We don't want to get reconnected on a different
+ // host because the nodeId can be handled by a different host.
+
+ readerCandidates = new RedisAsyncConnectionImpl[selection.size()];
+
+ for (int i = 0; i < selection.size(); i++) {
+ RedisNodeDescription redisClusterNode = selection.get(i);
+
+ RedisURI uri = redisClusterNode.getUri();
+ ConnectionKey key = new ConnectionKey(redisClusterNode.getRole() == RedisInstance.Role.MASTER ? Intent.WRITE
+ : Intent.READ, uri.getHost(), uri.getPort());
+
+ readerCandidates[i] = connections.get(key);
+ }
+
+ } catch (UncheckedExecutionException e) {
+ throw new RedisException(e.getCause());
+ } catch (Exception e) {
+ throw new RedisException(e);
+ }
+ return readerCandidates;
+ }
+
+ private List getReadCandidates(RedisClusterNode master) {
+ List candidates = Lists.newArrayList();
+
+ for (RedisClusterNode partition : partitions) {
+ if (master.getNodeId().equals(partition.getNodeId()) || master.getNodeId().equals(partition.getSlaveOf())) {
+ candidates.add(partition);
+ }
+ }
+ return candidates;
+ }
+
+ @Override
+ public RedisAsyncConnectionImpl getConnection(Intent intent, String nodeId) {
+ if (debugEnabled) {
+ logger.debug("getConnection(" + intent + ", " + nodeId + ")");
+ }
+
+ try {
+ ConnectionKey key = new ConnectionKey(intent, nodeId);
+ return connections.get(key);
+ } catch (Exception e) {
+ throw new RedisException(e);
+ }
+ }
+
+ @Override
+ @SuppressWarnings({ "unchecked", "hiding", "rawtypes" })
+ public RedisAsyncConnectionImpl getConnection(Intent intent, String host, int port) {
+ try {
+ if (debugEnabled) {
+ logger.debug("getConnection(" + intent + ", " + host + ", " + port + ")");
+ }
+
+ if (validateClusterNodeMembership()) {
+ RedisClusterNode redisClusterNode = getPartition(host, port);
+
+ if (redisClusterNode == null) {
+ HostAndPort hostAndPort = HostAndPort.fromParts(host, port);
+ throw invalidConnectionPoint(hostAndPort.toString());
+ }
+ }
+
+ ConnectionKey key = new ConnectionKey(intent, host, port);
+ return connections.get(key);
+ } catch (UncheckedExecutionException e) {
+ throw new RedisException(e.getCause());
+ } catch (Exception e) {
+ throw new RedisException(e);
+ }
+ }
+
+ private RedisClusterNode getPartition(String host, int port) {
+ for (RedisClusterNode partition : partitions) {
+ RedisURI uri = partition.getUri();
+ if (port == uri.getPort() && host.equals(uri.getHost())) {
+ return partition;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void close() {
+ ImmutableMap> copy = ImmutableMap.copyOf(this.connections.asMap());
+ this.connections.invalidateAll();
+ resetFastConnectionCache();
+ for (RedisAsyncConnectionImpl kvRedisAsyncConnection : copy.values()) {
+ if (kvRedisAsyncConnection.isOpen()) {
+ kvRedisAsyncConnection.close();
+ }
+ }
+ }
+
+ @Override
+ public void reset() {
+ ImmutableMap> copy = ImmutableMap.copyOf(this.connections.asMap());
+ for (RedisAsyncConnectionImpl kvRedisAsyncConnection : copy.values()) {
+ kvRedisAsyncConnection.reset();
+ }
+ }
+
+ /**
+ * Synchronize on {@code stateLock} to initiate a happens-before relation and clear the thread caches of other threads.
+ *
+ * @param partitions the new partitions.
+ */
+ @Override
+ public void setPartitions(Partitions partitions) {
+ synchronized (stateLock) {
+ this.partitions = partitions;
+ reconfigurePartitions();
+ }
+ }
+
+ private void reconfigurePartitions() {
+ Set staleConnections = getStaleConnectionKeys();
+
+ for (ConnectionKey key : staleConnections) {
+ RedisAsyncConnectionImpl connection = connections.getIfPresent(key);
+ if (connection.getChannelWriter() instanceof ClusterNodeCommandHandler) {
+ ClusterNodeCommandHandler, ?> clusterNodeCommandHandler = (ClusterNodeCommandHandler, ?>) connection
+ .getChannelWriter();
+ clusterNodeCommandHandler.prepareClose();
+ }
+ }
+
+ resetFastConnectionCache();
+
+ if (redisClusterClient.expireStaleConnections()) {
+ closeStaleConnections();
+ }
+ }
+
+ /**
+ * Close stale connections.
+ */
+ @Override
+ public void closeStaleConnections() {
+ logger.debug("closeStaleConnections() count before expiring: {}", getConnectionCount());
+
+ Set stale = getStaleConnectionKeys();
+
+ for (ConnectionKey connectionKey : stale) {
+ RedisAsyncConnectionImpl connection = connections.getIfPresent(connectionKey);
+ if (connection != null) {
+ connections.invalidate(connectionKey);
+ connection.close();
+ }
+ }
+
+ logger.debug("closeStaleConnections() count after expiring: {}", getConnectionCount());
+ }
+
+ /**
+ * Retrieve a set of PoolKey's for all pooled connections that are within the pool but not within the {@link Partitions}.
+ *
+ * @return Set of {@link ConnectionKey}s
+ */
+ private Set getStaleConnectionKeys() {
+ Map> map = Maps.newHashMap(connections.asMap());
+ Set stale = Sets.newHashSet();
+
+ for (ConnectionKey connectionKey : map.keySet()) {
+
+ if (connectionKey.nodeId != null && partitions.getPartitionByNodeId(connectionKey.nodeId) != null) {
+ continue;
+ }
+
+ if (connectionKey.host != null && getPartition(connectionKey.host, connectionKey.port) != null) {
+ continue;
+ }
+ stale.add(connectionKey);
+ }
+ return stale;
+ }
+
+ /**
+ * Set auto-flush on all commands. Synchronize on {@code stateLock} to initiate a happens-before relation and clear the
+ * thread caches of other threads.
+ *
+ * @param autoFlush state of autoFlush.
+ */
+ @Override
+ public void setAutoFlushCommands(boolean autoFlush) {
+ synchronized (stateLock) {
+ this.autoFlushCommands = autoFlush;
+ }
+ for (RedisAsyncConnectionImpl connection : connections.asMap().values()) {
+ connection.getChannelWriter().setAutoFlushCommands(autoFlush);
+ }
+ }
+
+ @Override
+ public void flushCommands() {
+ for (RedisAsyncConnectionImpl connection : connections.asMap().values()) {
+ connection.getChannelWriter().flushCommands();
+ }
+ }
+
+ @Override
+ public void setReadFrom(ReadFrom readFrom) {
+ synchronized (stateLock) {
+ this.readFrom = readFrom;
+ Arrays.fill(readers, null);
+ }
+ }
+
+ @Override
+ public ReadFrom getReadFrom() {
+ return this.readFrom;
+ }
+
+ /**
+ *
+ * @return number of connections.
+ */
+ protected long getConnectionCount() {
+ return connections.size();
+ }
+
+ /**
+ * Reset the internal connection cache. This is necessary because the {@link Partitions} have no reference to the connection
+ * cache.
+ *
+ * Synchronize on {@code stateLock} to initiate a happens-before relation and clear the thread caches of other threads.
+ */
+ protected void resetFastConnectionCache() {
+ synchronized (stateLock) {
+ Arrays.fill(writers, null);
+ Arrays.fill(readers, null);
+
+ }
+ }
+
+ private RuntimeException invalidConnectionPoint(String message) {
+ return new IllegalArgumentException("Connection to " + message
+ + " not allowed. This connection point is not known in the cluster view");
+ }
+
+ private Supplier getSocketAddressSupplier(final ConnectionKey connectionKey) {
+ return new Supplier() {
+ @Override
+ public SocketAddress get() {
+
+ if (connectionKey.nodeId != null) {
+ return getSocketAddress(connectionKey.nodeId);
+ }
+ return new InetSocketAddress(connectionKey.host, connectionKey.port);
+ }
+
+ };
+ }
+
+ protected SocketAddress getSocketAddress(String nodeId) {
+ for (RedisClusterNode partition : partitions) {
+ if (partition.getNodeId().equals(nodeId)) {
+ return partition.getUri().getResolvedAddress();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Connection to identify a connection either by nodeId or host/port.
+ */
+ private static class ConnectionKey {
+ private final ClusterConnectionProvider.Intent intent;
+ private final String nodeId;
+ private final String host;
+ private final int port;
+
+ public ConnectionKey(Intent intent, String nodeId) {
+ this.intent = intent;
+ this.nodeId = nodeId;
+ this.host = null;
+ this.port = 0;
+ }
+
+ public ConnectionKey(Intent intent, String host, int port) {
+ this.intent = intent;
+ this.host = host;
+ this.port = port;
+ this.nodeId = null;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (!(o instanceof ConnectionKey))
+ return false;
+
+ ConnectionKey key = (ConnectionKey) o;
+
+ if (port != key.port)
+ return false;
+ if (intent != key.intent)
+ return false;
+ if (nodeId != null ? !nodeId.equals(key.nodeId) : key.nodeId != null)
+ return false;
+ return !(host != null ? !host.equals(key.host) : key.host != null);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = intent != null ? intent.name().hashCode() : 0;
+ result = 31 * result + (nodeId != null ? nodeId.hashCode() : 0);
+ result = 31 * result + (host != null ? host.hashCode() : 0);
+ result = 31 * result + port;
+ return result;
+ }
+ }
+
+ private boolean validateClusterNodeMembership() {
+ return redisClusterClient.getClusterClientOptions() == null
+ || redisClusterClient.getClusterClientOptions().isValidateClusterNodeMembership();
+ }
+
+ private class ConnectionFactory extends CacheLoader> {
+
+ private final RedisClusterClient redisClusterClient;
+ private final RedisCodec redisCodec;
+ private final RedisChannelWriter clusterWriter;
+
+ public ConnectionFactory(RedisClusterClient redisClusterClient, RedisCodec redisCodec,
+ RedisChannelWriter clusterWriter) {
+ this.redisClusterClient = redisClusterClient;
+ this.redisCodec = redisCodec;
+ this.clusterWriter = clusterWriter;
+ }
+
+ @Override
+ public RedisAsyncConnectionImpl load(ConnectionKey key) throws Exception {
+
+ RedisAsyncConnectionImpl connection = null;
+ if (key.nodeId != null) {
+ if (partitions.getPartitionByNodeId(key.nodeId) == null) {
+ throw invalidConnectionPoint("node id " + key.nodeId);
+ }
+
+ // NodeId connections do not provide command recovery due to cluster reconfiguration
+ connection = redisClusterClient.connectNode(redisCodec, key.nodeId, null, getSocketAddressSupplier(key));
+ }
+
+ if (key.host != null) {
+
+ if (validateClusterNodeMembership()) {
+ if (getPartition(key.host, key.port) == null) {
+ throw invalidConnectionPoint(key.host + ":" + key.port);
+ }
+ }
+
+ // Host and port connections do not provide command recovery due to cluster reconfiguration
+ connection = redisClusterClient.connectNode(redisCodec, key.host + ":" + key.port, clusterWriter,
+ getSocketAddressSupplier(key));
+ }
+
+ if (key.intent == Intent.READ) {
+ connection.readOnly();
+ }
+
+ synchronized (stateLock) {
+ connection.getChannelWriter().setAutoFlushCommands(autoFlushCommands);
+ }
+ return connection;
+ }
+
+ }
+}
diff --git a/swift b/swift
new file mode 100644
index 0000000..690105d
--- /dev/null
+++ b/swift
@@ -0,0 +1 @@
+$swift -sdk $(xcrun --show-sdk-path --sdk macosx) main.swift
diff --git a/tmp/launch-kNSlgU/Listeners b/tmp/launch-kNSlgU/Listeners
new file mode 100644
index 0000000..03a6b5a
--- /dev/null
+++ b/tmp/launch-kNSlgU/Listeners
@@ -0,0 +1,3 @@
+echo "$SSH_AUTH_SOCK"
+# Print out the SSH_AUTH_SOCK variable
+/tmp/launch-kNSlgU/Listeners