���� JFIF  XX �� �� �     $.' ",#(7),01444'9=82<.342  2!!22222222222222222222222222222222222222222222222222�� ��" �� 4     ��   �� �,�PG"Z_�4�˷����kjز�Z�,F+��_z�,�© �����zh6�٨�ic�fu��� #ډb���_�N� ?� �wQ���5-�~�I���8��� �TK<5o�Iv-� ����k�_U_����� ~b�M��d��� �Ӝ�U�Hh��?]��E�w��Q���k�{��_}qFW7HTՑ��Y��F� ?_�'ϔ��_�Ջt� �=||I �� 6�έ"�����D���/[�k�9�� �Y�8 ds|\���Ҿp6�Ҵ���]��.����6� z<�v��@]�i% �� $j��~ �g��J>��no����pM[me�i$[�� �� s�o�ᘨ�˸ nɜG-�ĨU�ycP� 3.DB�li�;� �hj���x 7Z^�N�h��� ���N3u{�:j �x�힞��#M &��jL P@ _���� P�� &��o8 ������9 �����@Sz 6�t7#O�ߋ � s}Yf�T� ��lmr����Z)'N��k�۞p ����w\�T ȯ?�8` �O��i{wﭹW�[�r�� ��Q4F�׊�� �3m&L�=��h3� ���z~��#� \�l :�F,j@�� ʱ�wQT����8�"kJO��� 6�֚l���� }��� R�>ډK���]��y����&����p�}b�� ;N�1�m�r$� |��7�>e�@ B�TM*-i H��g�D�)� E�m�|�ؘbҗ�a ��Ҿ���� t4��� o���G��*oCN�rP���Q��@z,|?W[0 �����:�n,j WiE��W� �$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S�� ��VN;� }�s?.����� w �9��˟<���Mq4�Wv' ��{)0�1mB ��V����W[� ����8�/<� �%���wT^�5���b��)iM� p g�N�&ݝ� �VO~� q���u���9� ����!��J27��� �$ O-���! �: �%H��� ـ ����y�ΠM=t{!S�� oK8������ t<����è :a�� ����[���� �ա�H���~��w��Qz`�p o�^ �� ��Q��n�  �,uu�C� $ ^���,� �����8�#��:�6��e�|~� ��!�3� 3.�\0�� q��o�4`.|� ����y�Q�`~;�d�ׯ,��O�Zw�������`73�v�܋�< ���Ȏ�� ـ4k��5�K�a�u�=9Yd��$>x�A�&�� j0� ���vF��� Y� |�y��� ~�6�@c��1vOp �Ig�� ��4��l�OD� ��L����� R���c���j�_�uX 6��3?nk��Wy�f;^*B� ��@ �~a�`��Eu������ +� �� 6�L��.ü>��}y���}_�O�6�͐�:�Yr G�X��kG�� ���l^w�� �~㒶sy� �Iu�!� W ��X��N�7BV��O��!X�2����wvG�R�f�T#�����t�/?���%8�^�W�aT ��G�cL�M���I��(J����1~�8�?aT ���]����AS�E��(��*E}� 2�� #I/�׍qz��^t�̔��� b�Yz4x ���t�){ OH� �+(E��A&�N�������XT��o��"�XC�� '���)}�J�z�p� ��~5�}�^����+�6����w��c��Q�| Lp�d�H��}�(�.|����k��c4^� "�����Z?ȕ ��a< �L�!0 39C� �Eu� C�F�Ew�ç ;�n?�*o���B�8�bʝ���'#Rqf�� �M}7����]��� �s2tcS{�\icTx;�\��7K���P ���ʇ Z O-��~�� c>"��?�� �����P ��E��O�8��@�8��G��Q�g�a�Վ���󁶠 �䧘��_%#r�>� 1�z�a�� eb��qcP ѵ��n���#L��� =��׀t� L�7�` ��V��� A{�C:�g���e@ �w1 Xp 3�c3�ġ���� p��M"'-�@n4���fG� �B3�DJ�8[Jo�ߐ���gK)ƛ��$���� � ��8�3�����+���� �����6�ʻ���� ���S�kI�*KZlT _`�� �?��K� ���QK�d ����B`�s}�>���` ��*�>��,*@J�d�oF*� ���弝��O}�k��s��]��y�ߘ ��c1G�V���<=�7��7����6 �q�PT��tXԀ�!9*4�4Tހ 3XΛex�46�� �Y��D ����� �BdemDa����\�_l,� �G�/���֌7���Y�](�xTt^%�GE�����4�}bT ���ڹ�����; Y)���B�Q��u��>J/J � ⮶.�XԄ��j�ݳ� +E��d ��r�5�_D �1 �� o�� �B�x�΢�#� ��<��W�����8���R6�@ g�M�.��� dr�D��>(otU��@ x=��~v���2� ӣ�d�oBd ��3�eO�6�㣷�� ���ݜ 6��6Y��Qz`�� S��{���\P �~z m5{J/L��1������<�e�ͅPu� b�]�ϔ ���'�� ����f�b� Zpw��c`"��i���BD@:)ִ�:�]��h v�E� w���T�l ��P� ��"Ju�}��وV J��G6��. J/�Qgl߭�e�����@�z�Zev2u� )]կ��� ��7x�� �s�M�-<ɯ�c��r� v�����@��$�ޮ}lk���a�� �'����>x��O\�Z Fu>��� ��ck#��&:��`�$ �ai�>2Δ����l���oF[h� �lE�ܺ�Π k:)���` �� $[6�����9�����kOw�\|��� 8}������ބ:��񶐕� �I�A1/� =�2[�,�!��.}gN#�u����b ��� ~� �݊��}34q��� �d�E��L c��$ ��"�[q�U�硬g^��%B � z���r�p J�ru%v\h 1Y�ne` ǥ:g�� �pQM~�^� Xi� ��`S�:V2 9.�P���V� ?B�k�� AEvw%�_�9C�Q����wKekP ؠ�\� ;Io d�{ ߞo�c1eP��� �\� `����E=���@K<�Y�� �eڼ�J ���w����{av�F�'�M�@ /J��+9p ���|]���� �Iw &` ��8���& M�hg ��[�{ ��Xj�� %��Ӓ� $��(��� �ʹN��� <>�I���RY� ��K2�NPlL�ɀ )��&e� ���B+ь����( � �JTx ���_?EZ� }@ 6�U���뙢ط�z��dWI� n` D����噥�[��uV��"�G& Ú����2 g�}&m� �?ċ �"����Om#� ������� � ��{� ON��"S�X ��Ne��ysQ���@ Fn��Vg��� dX�~nj� ]J�<�K]: ��FW�� b�������62 �=��5f����JKw� �bf�X� 55��~J �%^� ���:�-�QIE��P��v�nZum� z � ~ə ���� ���ة����;�f��\v��� g�8�1��f2 4;�V���ǔ�)��� �9���1\�� c��v�/'Ƞ�w����� ��$�4�R-��t�� �� e�6�/�ġ �̕Ecy�J���u�B���<�W�ַ~�w[B1L۲�-JS΂�{���΃���� ��A��20�c# �� @    0!1@AP"#2Q`$3V�%45a6�FRUq���   � ���^7ׅ,$n� ������+��F�`��2X'��0vM��p�L=������ 5��8������u�p~���.�`r�����\��� O��,ư�0oS ��_�M�����l���4�kv\JSd���x���SW�<��Ae�IX����������$I���w�:S���y���›R��9�Q[���,�5�;�@]�%���u�@ *ro�lbI �� ��+���%m:�͇ZV�����u�̉����θau<�fc�.����{�4Ա� �Q����*�Sm��8\ujqs]{kN���)qO�y�_*dJ�b�7���yQqI&9�ԌK!�M}�R�;�� ����S�T���1���i[U�ɵz�]��U)V�S6���3$K{� ߊ<�(� E]Զ[ǼENg�����'�\?#)Dkf��J���o��v���'�%ƞ�&K�u� !��b�35LX�Ϸ��63$K�a�;�9>,R��W��3�3� d�JeTYE.Mϧ��-�o�j3+y��y^�c�������VO�9NV\nd�1 ��!͕_)a�v;����թ�M�lWR1��)El��P;��yوÏ�u 3�k�5Pr6<�⒲l�!˞*��u־�n�!�l:����UNW ��%��Chx8vL'��X�@��*��)���̮��ˍ��� � ��D-M�+J�U�kvK����+�x8��cY������?�Ԡ��~3mo��|�u@[XeY�C�\Kp�x8�oC�C�&����N�~3-H���� ��MX�s�u<`���~"WL��$8ξ��3���a�)|:@�m�\���^�`�@ҷ)�5p+��6���p�%i)P M���ngc�����#0Aruz���RL+xSS?���ʮ}()#�t��mˇ!��0}}y����<�e� �-ή�Ԩ��X������ MF���ԙ~l L.3���}�V뽺�v��� ��멬��Nl�)�2����^�Iq��a��M��qG��T�����c3#������3U�Ǎ���}��לS�|qa��ڃ�+���-��2�f����/��bz��ڐ�� �ݼ[2�ç����k�X�2�* �Z�d���J�G����M*9W���s{��w���T��x��y,�in�O�v��]���n����P�$� JB@=4�OTI�n��e�22a\����q�d���%�$��(���:���: /*�K[PR�fr\nڙdN���F�n�$�4� [�� U�zƶ����� �mʋ���,�ao�u 3�z� �x��Kn����\[��VFmbE;�_U��&V�Gg�]L�۪&#n%�$ɯ� dG���D�TI=�%+AB�Ru#��b4�1�»x�cs�YzڙJG��f��Il� �d�eF'T� iA��T���uC�$����Y��H?����[!G`}���ͪ� �纤Hv\������j�Ex�K���!���OiƸ�Yj�+u-<���'q����uN�*�r\��+�]���<�wOZ.fp�ێ��,-*)V?j-kÊ#�`�r��dV����(�ݽBk�����G�ƛk�QmUڗe��Z���f}|����8�8��a���i��3'J�����~G_�^���d�8w������ R�`(�~�.��u���l�s+g�bv���W���lGc}��u���afE~1�Ue������Z�0�8�=e�� f@/�jqEKQQ�J� �oN��J���W5~M>$6�Lt�;$ʳ{���^��6�{����v6���ķܰg�V�cnn �~z�x�«�,2�u�?cE+Ș�H؎�%�Za�)���X>uW�Tz�Nyo����s���FQƤ��$��*�&�LLXL)�1�" L��eO��ɟ�9=���:t��Z���c��Ž���Y?�ӭV�wv�~,Y��r�ۗ�|�y��GaF�����C�����.�+� ���v1���fήJ�����]�S��T��B��n5sW}y�$��~z�'�c ��8 ��� ,! �p��VN�S��N�N�q��y8z˱�A��4��*��'������2n<�s���^ǧ˭P�Jޮɏ�U�G�L�J�*#��<�V��t7�8����TĜ>��i}K%,���)[��z�21z ?�N�i�n1?T�I�R#��m-�����������������1����lA�`��fT5+��ܐ�c�q՝��ʐ��,���3�f2U�եmab��#ŠdQ�y>\��)�SLY����w#��.���ʑ�f��� ,"+�w�~�N�'�c�O�3F�������N<���)j��&��,-� �љ���֊�_�zS���TǦ����w�>��?�������n��U仆�V���e�����0���$�C�d���rP �m�׈e�Xm�Vu� �L��.�bֹ��� �[Դaզ���*��\y�8�Է:�Ez\�0�Kq�C b��̘��cө���Q��=0Y��s�N��S.��� 3.���O�o:���#���v7�[#߫ ��5�܎�L���Er4���9n��COWlG�^��0k�%<���ZB���aB_���������'=��{i�v�l�$�uC���mƎҝ{�c㱼�y]���W�i ��ߧc��m�H� m�"�"�����;Y�ߝ�Z�Ǔ�����:S#��|}�y�,/k�Ld� TA�(�AI$+I3��;Y*���Z��}|��ӧO��d�v��..#:n��f>�>���ȶI�TX��� 8��y����"d�R�|�)0���=���n4��6ⲑ�+��r<�O�܂~zh�z����7ܓ�HH�Ga롏���nCo�>������a ���~]���R���̲c?�6(�q�;5%� |�uj�~z8R =X��I�V=�|{v�Gj\gc��q����z�؋%M�ߍ����1y��#��@f^���^�>N��� ��#x#۹��6�Y~�?�dfPO��{��P�4��V��u1E1J �*|���%�� �JN��`eWu�zk M6���q t[�� ��g�G���v��WIG��u_ft����5�j�"�Y�:T��ɐ���*�;� e5���4����q$C��2d�}���� _S�L#m�Yp��O�.�C�;��c����Hi#֩%+) �Ӎ��ƲV���SYź��g |���tj��3�8���r|���V��1#;.SQ�A[���S������#���`n�+���$��$ I �P\[�@�s��(�ED�z���P��])8�G#��0B��[ى��X�II�q<��9�~[Z멜�Z�⊔IWU&A>�P~�#��dp<�?����7���c��'~���5 ��+$���lx@�M�dm��n<=e�dyX��?{�|Aef ,|n3�<~z�ƃ�uۧ�����P��Y,�ӥQ�*g�#먙R�\���;T��i,��[9Qi歉����c>]9�� ��"�c��P�� �Md?٥��If�ت�u��k��/����F��9�c*9��Ǎ:�ØF���z�n*�@|I�ށ9����N3{'��[�'ͬ�Ҳ4��#}��!�V� Fu��,�,mTIk���v C�7v���B�6k�T9��1�*l� '~��ƞF��lU��'�M ����][ΩũJ_�{�i�I�n��$�� �L�� j��O�dx�����kza۪��#�E��Cl����x˘�o�����V���ɞ�ljr��)�/,�߬h�L��#��^��L�ф�,íMƁe�̩�NB�L�����iL����q�}��(��q��6IçJ$�W�E$��:������=#����(�K�B����zђ <��K(�N�۫K�w��^O{!����) �H���>x�������lx�?>Պ�+�>�W���,Ly!_�D���Ō�l���Q�!�[ �S����J��1��Ɛ�Y}��b,+�Lo�x�ɓ)����=�y�oh�@�꥟/��I��ѭ=��P�y9��� �ۍYӘ�e+�p�Jnϱ?V\SO%�(�t� ���=?MR�[Ș�����d�/ ��n�l��B�7j� ��!�;ӥ�/�[-���A�>� dN�sLj ��,ɪv��=1c�.SQ�O3�U���ƀ�ܽ�E����������̻��9G�ϷD�7(�}��Ävӌ\� y�_0[w ���<΍>����a_��[0+�L��F.�޺��f�>oN�T����q;���y\��bՃ��y�jH�<|q-eɏ�_?_9+P���Hp$�����[ux�K w�Mw��N�ی'$Y2�=��q���KB��P��~�� ����Yul:�[<����F1�2�O���5=d����]Y�sw:���Ϯ���E��j,_Q��X��z`H1,#II ��d�wr��P˂@�ZJV����y$�\y�{}��^~���[:N����ߌ�U�������O��d�����ؾe��${p>G��3c���Ė�lʌ�� ת��[��`ϱ�-W����dg�I��ig2��� ��}s ��ؤ(%#sS@���~���3�X�nRG�~\jc3�v��ӍL��M[JB�T��s3}��j�Nʖ��W����;7� �ç?=X�F=-�=����q�ߚ���#���='�c��7���ڑW�I(O+=:uxq�������������e2�zi+�kuG�R��������0�&e�n���iT^J����~\jy���p'dtG��s����O��3����9* �b#Ɋ�� p������[Bws�T�>d4�ۧs���nv�n���U���_�~,�v����ƜJ1��s�� �QIz�� )�(lv8M���U=�;����56��G���s#�K���MP�=��LvyGd��}�VwWBF�'�à �?MH�U�g2�� ����!�p�7Q��j��ڴ����=��j�u��� Jn�A s���uM������e��Ɔ�Ҕ�!) '��8Ϣ�ٔ� �ޝ(��Vp���צ֖d=�IC�J�Ǡ{q������kԭ�߸���i��@K����u�|�p=..�*+����x�����z[Aqġ#s2a�Ɗ���RR�)*HRsi�~�a &f��M��P����-K�L@��Z��Xy�'x�{}��Zm+���:�)�) IJ�-i�u���� ���ܒH��'� L(7�y�GӜq���� j��� 6ߌg1�g�o���,kر���tY�?W,���p���e���f�OQS��!K�۟cҒA�|ս�j�>��=⬒��˧L[�� �߿2JaB~R��u�:��Q�] �0H~���]�7��Ƽ�I���( }��cq '�ήET���q�?f�ab���ӥvr� �)o��-Q��_'����ᴎo��K������;��V���o��%���~OK ����*��b�f:���-ťIR��`B�5!RB@���ï�� �u �̯e\�_U�_������� g�ES��3������� QT��a�� ��x����U<~�c?�*�#]�MW,[8O�a�x��]�1bC|踤�P��lw5V%�)�{t�<��d��5���0i�XSU��m:��Z�┵�i�"��1�^B�-��P�hJ��&)O��*�D��c�W��vM��)����}���P��ܗ-q����\mmζZ-l@�}��a��E�6��F�@��&Sg@���ݚ�M����� ȹ 4����#p�\H����dYDo�H���"��\��..R�B�H�z_�/5˘����6��KhJR��P�mƶi�m���3� ,#c�co��q�a)*P t����R�m�k�7x�D�E�\Y�閣_X�<���~�)���c[[�BP����6�Yq���S��0����%_����;��Àv�~�| VS؇ ��'O0��F0��\���U�-�d@�����7�SJ*z��3n��y��P����O��������� m�~�P�3|Y��ʉr#�C�<�G~�.,! ���bqx���h~0=��!ǫ�jy����l� O,�[B��~��|9��ٱ����Xly�#�i�B��g%�S��������tˋ���e���ې��\[d�t)��.+u�|1 ������#�~Oj����hS�%��i.�~X���I�H�m��0n���c�1uE�q��cF�RF�o���7� �O�ꮧ� ���ۛ{��ʛi5�rw?׌#Qn�TW��~?y$��m\�\o����%W� ?=>S�N@�� �Ʈ���R����N�)�r"C�:��:����� �����#��qb��Y�. �6[��2K����2u�Ǧ�HYR��Q�MV��� �G�$��Q+.>�����nNH��q�^��� ����q��mM��V��D�+�-�#*�U�̒ ���p욳��u:�������IB���m� ��PV@O���r[b= �� ��1U�E��_Nm�yKbN�O���U�}�the�`�|6֮P>�\2�P�V���I�D�i�P�O;�9�r�mAHG�W�S]��J*�_�G��+kP�2����Ka�Z���H�'K�x�W�MZ%�O�YD�Rc+o��?�q��Ghm��d�S�oh�\�D�|:W������UA�Qc yT�q� �����~^�H��/��#p�CZ���T�I�1�ӏT����4��"�ČZ�����}��`w�#�*,ʹ�� ��0�i��課�Om�*�da��^gJ݅{���l�e9uF#T�ֲ��̲�ٞC"�q���ߍ ոޑ�o#�XZTp����@ o�8��(jd��xw�]�,f���`~� |,s��^����f�1���t��|��m�򸄭/ctr��5s��7�9Q�4�H1꠲BB@ l9@���C�����+�wp�xu�£Yc�9��?`@#�o�mH�s2��)�=��2�.�l����jg�9$�Y�S�%*L������R�Y������7Z���,*=�䷘$�������arm�o�ϰ���UW.|�r�uf����IGw�t����Zwo��~5 ��YյhO+=8fF�)�W�7�L9lM�̘·Y���֘YLf�큹�pRF���99.A �"wz��=E\Z���'a� 2��Ǚ�#;�'}�G���*��l��^"q��+2FQ� hj��kŦ��${���ޮ-�T�٭cf�|�3#~�RJ����t��$b�(R��(����r���dx� >U b�&9,>���%E\� Ά�e�$��'�q't��*�א���ެ�b��-|d���SB�O�O��$�R+�H�)�܎�K��1m`;�J�2�Y~9��O�g8=vqD`K[�F)k�[���1m޼c��n���]s�k�z$@��)!I �x՝"v��9=�ZA=`Ɠi �:�E��)` 7��vI��}d�YI�_ �o�:ob���o ���3Q��&D&�2=�� �Ά��;>�h����y.*ⅥS������Ӭ�+q&����j|UƧ��� �}���J0��WW< ۋS�)jQR�j���Ư��rN)�Gű�4Ѷ(�S)Ǣ�8��i��W52���No˓� ۍ%�5brOn�L�;�n��\G����=�^U�dI���8$�&���h��'���+�(������cȁ߫k�l��S^���cƗjԌE�ꭔ��gF���Ȓ��@���}O���*;e�v�WV���YJ\�]X'5��ղ�k�F��b 6R�o՜m��i N�i���� >J����?��lPm�U��}>_Z&�KK��q�r��I�D�Չ~�q�3fL�:S�e>���E���-G���{L�6p�e,8��������QI��h��a�Xa��U�A'���ʂ���s�+טIjP�-��y�8ۈZ?J$��W�P� ��R�s�]��|�l(�ԓ��sƊi��o(��S0 ��Y� 8�T97.�����WiL��c�~�dxc�E|�2!�X�K�Ƙਫ਼�$((�6�~|d9u+�qd�^3�89��Y�6L�.I�����?���iI�q���9�)O/뚅����O���X��X�V��ZF[�یgQ�L��K1���RҖr@v�#��X�l��F���Нy�S�8�7�kF!A��sM���^rkp�jP�DyS$N���q�� nxҍ!U�f�!eh�i�2�m ���`�Y�I�9r�6� �TF���C}/�y�^���Η���5d�'��9A-��J��>{�_l+�`��A���[�'��յ�ϛ#w:݅�%��X�}�&�PSt�Q�"�-��\縵�/����$Ɨh�Xb�*�y��BS����;W�ջ_mc�����vt?2}1�;qS�d�d~u:2k5�2�R�~�z+|HE!)�Ǟl��7`��0�<�,�2*���Hl-��x�^����'_TV�gZA�'j� ^�2Ϊ��N7t�����?w�� �x1��f��Iz�C-Ȗ��K�^q�;���-W�DvT�7��8�Z�������� hK�(P:��Q- �8�n�Z���܃e貾�<�1�YT<�,�����"�6{ / �?�͟��|1�:�#g��W�>$����d��J��d�B�� =��jf[��%rE^��il:��B���x���Sּ�1հ��,�=��*�7 fcG��#q� �eh?��2�7�����,�!7x��6�n�LC�4x��},Geǝ�tC.��vS �F�43��zz\��;QYC,6����~;RYS/6���|2���5���v��T��i����������mlv��������&� �nRh^ejR�LG�f���? �ۉҬܦƩ��|��Ȱ����>3����!v��i�ʯ�>�v��オ�X3e���_1z�Kȗ\<������!�8���V��]��?b�k41�Re��T�q��mz��TiOʦ�Z��Xq���L������q"+���2ۨ��8}�&N7XU7Ap�d�X��~�׿��&4e�o�F��� �H�� ��O���č�c�� 懴�6���͉��+)��v;j��ݷ�� �UV�� i��� j���Y9GdÒJ1��詞�����V?h��l�� ��l�cGs�ځ�������y�Ac���� �\V3�? �� ܙg�>qH�S,�E�W�[�㺨�uch�⍸�O�}���a��>�q�6�n6� ���N6�q�� ���� N    ! 1AQaq�0@����"2BRb�#Pr���3C`��Scst���$4D���%Td��  ? � ��N����a��3��m���C���w��������xA�m�q�m��� m������$����4n淿t'��C"w��zU=D�\R+w�p+Y�T�&�պ@��ƃ��3ޯ?�Aﶂ��aŘ���@-�����Q�=���9D��ռ�ѻ@��M�V��P��܅�G5�f�Y<�u=,EC)�<�Fy'�"�&�չ�X~f��l�KԆV��?�� �W�N����=(� �;���{�r����ٌ�Y���h{�١������jW����P���Tc�����X�K�r��}���w�R��%��?���E��m�� �Y�q|����\lEE4� ��r���}�lsI�Y������f�$�=�d�yO����p�����yBj8jU�o�/�S��?�U��*������ˍ�0����� �u�q�m [�?f����a�� )Q�>����6#������� ?����0UQ����,IX���(6ڵ[�DI�MNލ�c&���υ�j\��X�R|,4��� j������T�hA�e��^���d���b<����n�� �즇�=!���3�^�`j�h�ȓr��jẕ�c�,ٞX����-����a�ﶔ���#�$��]w�O��Ӫ�1y%��L�Y<�wg#�ǝ�̗`�x�xa�t�w��»1���o7o5��>�m뭛C���Uƃߜ}�C���y1Xνm�F8�jI���]����H���ۺиE@I�i;r�8ӭ���� V�F�Շ| ��&?�3|x�B�MuS�Ge�=Ӕ�#BE5G�� ���Y!z��_e��q�р/W>|-�Ci߇�t�1ޯќd�R3�u��g�=0 5��[?�#͏��q�cf���H��{ ?u�=?�?ǯ���}Z��z���hmΔ�BFTW�����<�q� (v� ��!��z���iW]*�J�V�z��gX֧A�q�&��/w���u�gYӘa���; �i=����g:��?2�dž6�ى�k�4�>�Pxs����}������G�9� �3 ���)gG�R<>r h�$��'nc�h�P��Bj��J�ҧH� -��N1���N��?��~��}-q!=��_2hc�M��l�vY%UE�@|�v����M2�.Y[|y�"Eï��K�ZF,�ɯ?,q�?v�M 80jx�"�;�9vk�����+ ֧�� �ȺU��?�%�vcV��mA�6��Qg^M��� �A}�3�nl� QRN�l8�kkn�'�����(��M�7m9و�q���%ޟ���*h$Zk"��$�9��: �?U8�Sl��,,|ɒ��xH(ѷ����Gn�/Q�4�P��G�%��Ա8�N��!� �&�7�;���eKM7�4��9R/%����l�c>�x;������>��C�:�����t��h?aKX�bhe�ᜋ^�$�Iհ �hr7%F$�E��Fd���t��5���+�(M6�t����Ü�UU|zW�=a�Ts�Tg������dqP�Q����b'�m���1{|Y����X�N��b �P~��F^F:����k6�"�j!�� �I�r�`��1&�-$�Bevk:y���#y w��I0��x��=D�4��tU���P�ZH��ڠ底taP��6����b>�xa� ���Q�#� WeF��ŮNj�p�J* mQ�N��� �*I�-*�ȩ�F�g�3 �5��V�ʊ�ɮ�a��5F���O@{���NX��?����H�]3��1�Ri_u��������ѕ�� ����0��� F��~��:60�p�͈�S��qX#a�5>���`�o&+�<2�D����: �������ڝ�$�nP���*)�N�|y�Ej�F�5ټ�e���ihy�Z �>���k�bH�a�v��h�-#���!�Po=@k̆IEN��@��}Ll?j�O������߭�ʞ���Q|A07x���wt!xf���I2?Z��<ץ�T���cU�j��]�� 陎Ltl �}5�ϓ��$�,��O�mˊ�;�@O��jE��j(�ا,��LX���LO���Ц�90�O �.����a��nA���7������j4 ��W��_ٓ���zW�jcB������y՗+EM�)d���N�g6�y1_x��p�$Lv :��9�"z��p���ʙ$��^��JԼ*�ϭ����o���=x�Lj�6�J��u82�A�H�3$�ٕ@�=Vv�]�'�qEz�;I˼��)��=��ɯ���x �/�W(V���p�����$ �m�������u�����񶤑Oqˎ�T����r��㠚x�sr�GC��byp�G��1ߠ�w e�8�$⿄����/�M{*}��W�]˷.�CK\�ުx���/$�WP w���r� |i���&�}�{�X� �>��$-��l���?-z���g����lΆ���(F���h�vS*���b���߲ڡn,|)mrH[���a�3�ר�[1��3o_�U�3�TC�$��(�=�)0�kgP���� ��u�^=��4 �WYCҸ:��vQ�ר�X�à��tk�m,�t*��^�,�}D*� �"(�I��9R����>`�`��[~Q]�#af��i6l��8���6�:,s�s�N6�j"�A4���IuQ��6E,�GnH��zS�HO�uk�5$�I�4��ؤ�Q9�@��C����wp �BGv[]�u�Ov��� 0I4���\��y�����Q�Ѹ��~>Z��8�T��a��q�ޣ;z��a���/��S��I:�ܫ_�|������>=Z����8:�S��U�I�J��"IY���8%b8���H��:�QO�6�;7�I�S��J��ҌAά3��>c���E+&jf$eC+�z�;��V����� �r���ʺ������my�e���aQ�f&��6�ND ��.:��NT�vm�<- u���ǝ\MvZY�N�NT��-A�>jr!S��n�O 1�3�Ns�%�3D@���`������ܟ 1�^c<���� �a�ɽ�̲�Xë#�w�|y�cW�=�9I*H8�p�^(4���՗�k��arOcW�tO�\�ƍR��8����'�K���I�Q�����?5�>[�}��yU�ײ -h��=��% q�ThG�2�)���"ו3]�!kB��*p�FDl�A���,�eEi�H�f�Ps�����5�H:�Փ~�H�0Dت�D�I����h�F3�������c��2���E��9�H��5�zԑ�ʚ�i�X�=:m�xg�hd(�v����׊�9iS��O��d@0ڽ���:�p�5�h-��t�&���X�q�ӕ,��ie�|���7A�2���O%P��E��htj��Y1��w�Ѓ!����  ���� ࢽ��My�7�\�a�@�ţ�J �4�Ȼ�F�@o�̒?4�wx��)��]�P��~�����u�����5�����7X ��9��^ܩ�U;Iꭆ 5 �������eK2�7(�{|��Y׎ �V��\"���Z�1� Z�����}��(�Ǝ"�1S���_�vE30>���p;� ΝD��%x�W�?W?v����o�^V�i�d��r[��/&>�~`�9Wh��y�;���R�� � ;;ɮT��?����r$�g1�K����A��C��c��K��l:�'��3 c�ﳯ*"t8�~l��)���m��+U,z��`( �>yJ�?����h>��]��v��ЍG*�{`��;y]��I�T� ;c��NU�fo¾h���/$���|NS���1�S�"�H��V���T���4��uhǜ�]�v;���5�͠x��'C\�SBpl���h}�N����� A�Bx���%��ޭ�l��/����T��w�ʽ]D�=����K���ž�r㻠l4�S�O?=�k �M:� ��c�C�a�#ha���)�ѐxc�s���gP�iG�� {+���x���Q���I= �� z��ԫ+ �8"�k�ñ�j=|����c ��y��CF��/ ��*9ж�h{ �?4�o� ��k�m�Q�N�x��;�Y��4膚�a�w?�6�> e]�����Q�r�:����g�,i"�����ԩA� *M�<�G��b�if��l^M��5� �Ҩ�{����6J��ZJ�����P�*�����Y���ݛu�_4�9�I8�7���������,^ToR���m4�H��?�N�S�ѕw��/S��甍�@�9H�S�T��t�ƻ���ʒU��*{Xs�@����f��� ��֒Li�K{H�w^���������Ϥm�tq���s� ���ք��f:��o~s��g�r��ט� �S�ѱC�e]�x���a��) ���(b-$(�j>�7q�B?ӕ�F��hV25r[7 Y� }L�R��}����*sg+��x�r�2�U=�*'WS��ZDW]�WǞ�<��叓���{�$�9Ou4��y�90-�1�'*D`�c�^o?(�9��u���ݐ��'PI&� f�Jݮ�������:wS����jfP1F:X �H�9dԯ�� �˝[�_54 �}*;@�ܨ�� ð�yn�T���?�ןd�#���4rG�ͨ��H�1�|-#���Mr�S3��G�3�����)�.᧏3v�z֑��r����$G"�`j �1t��x0<Ɔ�Wh6�y�6��,œ�Ga��gA����y��b��)� �h�D��ß�_�m��ü �gG;��e�v��ݝ�nQ� ��C����-�*��o���y�a��M��I�>�<���]obD��"�:���G�A��-\%LT�8���c�)��+y76���o�Q�#*{�(F�⽕�y����=���rW�\p���۩�c���A���^e6��K������ʐ�cVf5$�'->���ՉN"���F�"�UQ@�f��Gb~��#�&�M=��8�ט�JNu9��D��[̤�s�o�~��� ��� G��9T�tW^g5y$b��Y'��س�Ǵ�=��U-2 #�MC�t(�i� �lj�@Q 5�̣i�*�O����s�x�K�f��}\��M{E�V�{�υ��Ƈ�����);�H����I��fe�Lȣr�2��>��W� I�Ȃ6������i��k�� �5�YOxȺ����>��Y�f5'��|��H+��98pj�n�.O�y�������jY��~��i�w'������l�;�s�2��Y��:'lg�ꥴ)o#'Sa�a�K��Z� �m��}�`169�n���"���x��I ��*+� }F<��cГ���F�P�������ֹ*�PqX�x۩��,� ��N�� �4<-����%����:��7����W���u�`����� $�?�I��&����o��o��`v�>��P��"��l���4��5'�Z�gE���8���?��[�X�7(��.Q�-��*���ތL@̲����v��.5���[��=�t\+�CNܛ��,g�SQnH����}*F�G16���&:�t��4ُ"A��̣��$�b �|����#rs��a�����T�� ]�<�j��B S�('$�ɻ� �wP;�/�n��?�ݜ��x�F��yUn�~mL*-�������Xf�wd^�a�}��f�,=t�׵i�.2/wpN�Ep8�OР���•��R�FJ� 55TZ��T �ɭ�<��]��/�0�r�@�f��V��V����Nz�G��^���7hZi����k��3�,kN�e|�vg�1{9]_i��X5y7� 8e]�U����'�-2,���e"����]ot�I��Y_��n�(JҼ��1�O ]bXc���Nu�No��pS���Q_���_�?i�~�x h5d'�(qw52] ��'ޤ�q��o1�R!���`ywy�A4u���h<קy���\[~�4�\ X�Wt/� 6�����n�F�a8��f���z �3$�t(���q��q�x��^�XWeN'p<-v�!�{�(>ӽDP7��ո0�y)�e$ٕv�Ih'Q�EA�m*�H��RI��=:��� ���4牢) �%_iN�ݧ�l]� �Nt���G��H�L��� ɱ�g<���1V�,�J~�ٹ�"K��Q�� 9�HS�9�?@��k����r�;we݁�]I�!{ �@�G�[�"��`���J:�n]�{�cA�E����V��ʆ���#��U9�6����j�#Y�m\��q�e4h�B�7��C�������d<�?J����1g:ٳ���=Y���D�p�ц� ׈ǔ��1�]26؜oS�'��9�V�FVu�P�h�9�xc�oq�X��p�o�5��Ա5$�9W�V(�[Ak�aY錎qf;�'�[�|���b�6�Ck��)��#a#a˙��8���=äh�4��2��C��4tm^ �n'c� ��]GQ$[Wҿ��i���vN�{Fu ��1�gx��1┷���N�m��{j-,��x�� Ūm�ЧS�[�s���Gna���䑴�� x�p 8<������97�Q���ϴ�v�aϚG��Rt�Һ׈�f^\r��WH�JU�7Z���y)�vg=����n��4�_)y��D'y�6�]�c�5̪ �\� �PF�k����&�c;��cq�$~T�7j ���nç]�<�g ":�to�t}�159�<�/�8������m�b�K#g'I'.W����� 6��I/��>v��\�MN��g���m�A�yQL�4u�Lj�j9��#44�t��l^�}L����n��R��!��t��±]��r��h6ٍ>�yҏ�N��fU�� ���� Fm@�8}�/u��jb9������he:A�y�ծw��GpΧh�5����l}�3p468��)U��d��c����;Us/�֔�YX�1�O2��uq�s��`hwg�r~�{ R��mhN��؎*q 42�*th��>�#���E����#��Hv�O����q�}����� 6�e��\�,Wk�#���X��b>��p}�դ��3���T5��†��6��[��@ �P�y*n��|'f�֧>�lư΂�̺����SU�'*�q�p�_S�����M�� '��c�6��� ��m�� ySʨ;M��r���Ƌ�m�Kxo,���Gm�P��A�G�:��i��w�9�}M(�^�V��$ǒ�ѽ�9���|���� �a����J�SQ�a���r�B;����}���ٻ֢�2�%U���c�#�g���N�a�ݕ�'�v�[�OY'��3L�3�;,p�]@�S��{ls��X�'���c�jw� k'a�.��}�}&�� �dP�*�bK=ɍ!����;3n�gΊU�ߴmt�'*{,=SzfD� A��ko~�G�aoq�_mi}#�m�������P�Xhύ��� �mxǍ�΂���巿zf��Q���c���|kc�����?���W��Y�$���_Lv����l߶��c���`?����l�j�ݲˏ!V��6����U�Ђ(A���4y)H���p�Z_�x��>���e�� R��$�/�`^'3qˏ�-&Q�=?��CFVR �D�fV�9��{�8g�������n�h�(P"��6�[�D���< E�����~0<@�`�G�6����Hг�cc�� �c�K.5��D��d�B���`?�XQ��2��ٿyqo&+�1^� DW�0�ꊩ���G�#��Q�nL3��c���������/��x ��1�1 [y�x�პCW��C�c�UĨ80�m�e�4.{�m��u���I=��f�����0QRls9���f���������9���~f�����Ǩ��a�"@�8���ȁ�Q����#c�ic������G��$���G���r/$W�(��W���V�"��m�7�[m�A�m����bo��D� j����۳� l���^�k�h׽����� ��#� iXn�v��eT�k�a�^Y�4�BN�� ĕ�� 0    !01@Q"2AaPq3BR������ ? � ��@4�Q�����T3,���㺠�W�[=JK�Ϟ���2�r^7��vc�:�9 �E�ߴ�w�S#d���Ix��u��:��Hp��9E!�� V 2;73|F��9Y���*ʬ�F��D����u&���y؟��^EA��A��(ɩ���^��GV:ݜDy�`��Jr29ܾ�㝉��[���E;Fzx��YG��U�e�Y�C���� ����v-tx����I�sם�Ę�q��Eb�+P\ :>�i�C'�;�����k|z�رn�y]�#ǿb��Q��������w�����(�r|ӹs��[�D��2v-%��@;�8<a���[\o[ϧw��I!��*0�krs)�[�J9^��ʜ��p1)� "��/_>��o��<1����A�E�y^�C��`�x1'ܣn�p��s`l���fQ��):�l����b>�Me�jH^?�kl3(�z:���1ŠK&?Q�~�{�ٺ�h�y���/�[��V�|6��}�KbX����mn[-��7�5q�94�������dm���c^���h� X��5��<�eޘ>G���-�}�دB�ޟ� ��|�rt�M��V+�]�c?�-#ڛ��^ǂ}���Lkr���O��u�>�-D�ry� D?:ޞ�U��ǜ�7�V��?瓮�"�#���r��չģVR;�n���/_� ؉v�ݶe5d�b9��/O��009�G���5n�W����JpA�*�r9�>�1��.[t���s�F���nQ� V 77R�]�ɫ8����_0<՜�IF�u(v��4��F�k�3��E)��N:��yڮe��P�`�1}�$WS��J�SQ�N�j �ٺ��޵�#l���ј(�5=��5�lǏmoW�v-�1����v,W�mn��߀$x�<����v�j(����c]��@#��1������Ǔ���o'��u+����;G�#�޸��v-lη��/(`i⣍Pm^� ��ԯ̾9Z��F��������n��1��� ��]�[��)�'������ :�֪�W��FC����� �B9،!?���]��V��A�Վ�M��b�w��G F>_DȬ0¤�#�QR�[V��kz���m�w�"��9ZG�7'[��=�Q����j8R?�zf�\a�=��O�U����*oB�A�|G���2�54 �p��.w7� �� ��&������ξxGHp� B%��$g�����t�Џ򤵍z���HN�u�Я�-�'4��0�� ;_�� 3     !01"@AQa2Pq#3BR������ ? � �ʩca��en��^��8���<�u#��m*08r��y�N"�<�Ѳ0��@\�p��� �����Kv�D��J8�Fҽ� �f�Y��-m�ybX�NP����}�!*8t(�OqѢ��Q�wW�K��ZD��Δ^e��!� ��B�K��p~�����e*l}z#9ң�k���q#�Ft�o��S�R����-�w�!�S���Ӥß|M�l޶V��!eˈ�8Y���c�ЮM2��tk���� ������J�fS����Ö*i/2�����n]�k�\���|4yX�8��U�P.���Ы[���l��@"�t�<������5�lF���vU�����W��W��;�b�cД^6[#7@vU�xgZv��F�6��Q,K�v��� �+Ъ��n��Ǣ��Ft���8��0��c�@�!�Zq s�v�t�;#](B��-�nῃ~���3g������5�J�%���O������n�kB�ĺ�.r��+���#�N$?�q�/�s�6��p��a����a��J/��M�8��6�ܰ"�*������ɗud"\w���aT(����[��F��U՛����RT�b���n�*��6���O��SJ�.�ij<�v�MT��R\c��5l�sZB>F��<7�;EA��{��E���Ö��1U/�#��d1�a�n.1ě����0�ʾR�h��|�R��Ao�3�m3 ��%�� ���28Q� ��y��φ���H�To�7�lW>����#i`�q���c����a��� �m,B�-j����݋�'mR1Ήt�>��V��p���s�0IbI�C.���1R�ea�����]H�6�������� ��4B>��o��](��$B���m�����a�!=� �?�B� K�Ǿ+�Ծ"�n���K��*��+��[T#�{ E�J�S����Q�����s�5�:�U�\wĐ�f�3����܆&�)��� �I���Ԇw��E T�lrTf6Q|R�h:��[K�� �z��c֧�G�C��%\��_�a �84��HcO�bi��ؖV��7H �)*ģK~Xhչ0��4?�0��� �E<���}3���#���u�?�� ��|g�S�6ꊤ�|�I#Hڛ� �ա��w�X��9��7���Ŀ%�SL��y6č��|�F�a 8���b� �$�sק�h���b9RAu7�˨p�Č�_\*w��묦��F ����4D~�f����|(�"m���NK��i�S�>�$d7SlA��/�²����SL��|6N�}���S�˯���g��]6��; �#�.��<���q'Q�1|KQ$�����񛩶"�$r�b:���N8�w@��8$�� �AjfG|~�9F ���Y��ʺ��Bwؒ������M:I岎�G��`s�YV5����6��A �b:�W���G�q%l�����F��H���7�������Fsv7� �k�� 403WebShell
403Webshell
Server IP : 198.54.126.9  /  Your IP : 216.73.216.190
Web Server : Apache
System : Linux host56.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64
User : ecssenvironment ( 1934)
PHP Version : 8.1.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/imunify360/venv/lib64/python3.11/site-packages/playhouse/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/imunify360/venv/lib64/python3.11/site-packages/playhouse/__pycache__/migrate.cpython-311.pyc
�

��gh������dZddlmZddlZddlZddlZddlTddlmZddlmZddlm	Z	ddlm
Z
dd	lmZdd
lmZddlm
Z
ddlmZdd
lmZddlmZddlmZ	ddlmZn
#e$rdZYnwxYwGd�de��Zd�Zd�ZGd�de��ZGd�de��ZGd�de��ZGd�dedd����ZGd�d e��ZGd!�d"e��Zd#�ZdS)$ah
Lightweight schema migrations.

Example Usage
-------------

Instantiate a migrator:

    # Postgres example:
    my_db = PostgresqlDatabase(...)
    migrator = PostgresqlMigrator(my_db)

    # SQLite example:
    my_db = SqliteDatabase('my_database.db')
    migrator = SqliteMigrator(my_db)

Then you will use the `migrate` function to run various `Operation`s which
are generated by the migrator:

    migrate(
        migrator.add_column('some_table', 'column_name', CharField(default=''))
    )

Migrations are not run inside a transaction, so if you wish the migration to
run in a transaction you will need to wrap the call to `migrate` in a
transaction block, e.g.:

    with my_db.transaction():
        migrate(...)

Supported Operations
--------------------

Add new field(s) to an existing model:

    # Create your field instances. For non-null fields you must specify a
    # default value.
    pubdate_field = DateTimeField(null=True)
    comment_field = TextField(default='')

    # Run the migration, specifying the database table, field name and field.
    migrate(
        migrator.add_column('comment_tbl', 'pub_date', pubdate_field),
        migrator.add_column('comment_tbl', 'comment', comment_field),
    )

Renaming a field:

    # Specify the table, original name of the column, and its new name.
    migrate(
        migrator.rename_column('story', 'pub_date', 'publish_date'),
        migrator.rename_column('story', 'mod_date', 'modified_date'),
    )

Dropping a field:

    migrate(
        migrator.drop_column('story', 'some_old_field'),
    )

Making a field nullable or not nullable:

    # Note that when making a field not null that field must not have any
    # NULL values present.
    migrate(
        # Make `pub_date` allow NULL values.
        migrator.drop_not_null('story', 'pub_date'),

        # Prevent `modified_date` from containing NULL values.
        migrator.add_not_null('story', 'modified_date'),
    )

Renaming a table:

    migrate(
        migrator.rename_table('story', 'stories_tbl'),
    )

Adding an index:

    # Specify the table, column names, and whether the index should be
    # UNIQUE or not.
    migrate(
        # Create an index on the `pub_date` column.
        migrator.add_index('story', ('pub_date',), False),

        # Create a multi-column index on the `pub_date` and `status` fields.
        migrator.add_index('story', ('pub_date', 'status'), False),

        # Create a unique index on the category and title fields.
        migrator.add_index('story', ('category_id', 'title'), True),
    )

Dropping an index:

    # Specify the index name.
    migrate(migrator.drop_index('story', 'story_pub_date_status'))

Adding or dropping table constraints:

.. code-block:: python

    # Add a CHECK() constraint to enforce the price cannot be negative.
    migrate(migrator.add_constraint(
        'products',
        'price_check',
        Check('price >= 0')))

    # Remove the price check constraint.
    migrate(migrator.drop_constraint('products', 'price_check'))

    # Add a UNIQUE constraint on the first and last names.
    migrate(migrator.add_unique('person', 'first_name', 'last_name'))
�)�
namedtupleN)�*)�
CommaNodeList)�EnclosedNodeList��Entity)�
Expression)�Node)�NodeList)�OP)�	callable_)�sort_models)�sqlite3)�_truncate_constraint_name)�CockroachDatabasec�*�eZdZdZd�Zd�Zd�Zd�ZdS)�	Operationz/Encapsulate a single schema altering operation.c�>�||_||_||_||_dS�N)�migrator�method�args�kwargs)�selfrrrrs     �H/opt/imunify360/venv/lib64/python3.11/site-packages/playhouse/migrate.py�__init__zOperation.__init__�s"�� ��
������	������c�D�|jj�|��dSr)r�database�execute)r�nodes  rr zOperation.execute�s!���
��&�&�t�,�,�,�,�,rc�2�t|ttf��r|�|��dSt|t��r|���dSt|ttf��r|D]}|�|���dSdSr)	�
isinstancer
�Contextr r�run�list�tuple�_handle_result)r�result�items   rr(zOperation._handle_result�s����f�t�W�o�.�.�	*��L�L�� � � � � �
��	�
*�
*�	*��J�J�L�L�L�L�L�
���u�
�
.�
.�	*��
*�
*���#�#�D�)�)�)�)�	*�	*�
*�
*rc��|j���}d|d<t|j|j��}|�||ji|����dS)NT�with_context)r�copy�getattrrrr(r)rrrs   rr%z
Operation.run�s]����!�!�#�#��!%��~�������4�4�����F�F�D�I�8��8�8�9�9�9�9�9rN)�__name__�
__module__�__qualname__�__doc__rr r(r%�rrrr�sV������9�9����-�-�-�*�*�*�:�:�:�:�:rrc�F��tj����fd���}|S)Nc�x��|�dd��}|r�|g|�Ri|��St|�jg|�Ri|��S)Nr,F)�poprr/)rrrr,�fns    �r�innerzoperation.<locals>.inner�s`����z�z�.�%�8�8���	-��2�d�,�T�,�,�,�V�,�,�,���r�{�<�T�<�<�<�V�<�<�<r)�	functools�wraps)r7r8s` r�	operationr;�s8����_�R���=�=�=�=���=�
�Lrc��d�|ft|��z��}t|��dkrPtj|�d�������}|dd��d|dd���}|S)N�_�@zutf-8�8�)�joinr'�len�hashlib�md5�encode�	hexdigest)�
table_name�columns�
index_name�
index_hashs    r�make_index_namerK�s������:�-�%��.�.�8�9�9�J�
�:�������[��!2�!2�7�!;�!;�<�<�F�F�H�H�
� *�3�B�3�����B�Q�B���@�
��rc���eZdZdZdZd�Zd�Zed���Ze	d���Z
d�Zd�Ze	d���Z
e	d	���Ze	d
���Ze	d���Zd�Ze			dd���Ze	d���Ze	d���Ze	dd���Ze	d���Ze	d���Ze	d���Ze	d���Ze	d���Ze	dd���Ze	d���Ze	dd���Ze	d���Zd
S) �SchemaMigratorFc��||_dSr)r)rrs  rrzSchemaMigrator.__init__�s
�� ��
�
�
rc�4�|j���Sr)r�get_sql_context�rs r�make_contextzSchemaMigrator.make_context�s���}�,�,�.�.�.rc�T�tr$t|t��rt|��St|t��rt	|��St|t
��rt
|��St|t��rt|��Std|z���)NzUnsupported database: %s)
rr#�CockroachDBMigrator�PostgresqlDatabase�PostgresqlMigrator�
MySQLDatabase�
MySQLMigrator�SqliteDatabase�SqliteMigrator�
ValueError)�clsrs  r�
from_databasezSchemaMigrator.from_database�s����	,��H�6G�!H�!H�	,�&�x�0�0�0�
��"4�
5�
5�	,�%�h�/�/�/�
��-�
0�
0�	,� ��*�*�*�
��.�
1�
1�	,�!�(�+�+�+��3�h�>�?�?�?rc	��|j}t|��r
|��}|����d���t|�����d���t
t|��tj|�	|��d�����S)NzUPDATE z SET T)�flat)
�defaultr
rR�literal�sqlrr	r�EQ�db_value)r�table�column_name�fieldr`s     r�
apply_defaultzSchemaMigrator.apply_default�s����-���W���	 ��g�i�i�G��!�!�#�#����#�#���V�E�]�]�#�#����!�!���Z��;�'�'��E��N�N�7�+�+��	��� � �		!rc�l�|�d���t|����S)N�ALTER TABLE )rarbr)r�ctxres   r�_alter_tablezSchemaMigrator._alter_table�s(���{�{�>�*�*�.�.�v�e�}�}�=�=�=rc��|�||���d���t|����S)N� ALTER COLUMN �rlrarbr�rrkre�columns    r�
_alter_columnzSchemaMigrator._alter_column�s:�����c�5�)�)���)�*�*���V�F�^�^�$�$�	&rc��|���}|jdc}|_|j|kr|x|_|_|�||���d���|�|����||_t|t��r|�
||��|S)NTz ADD COLUMN )rR�nullrf�namerlrarb�ddlr#�ForeignKeyField�add_inline_fk_sql)rrerfrgrk�
field_nulls      r�alter_add_columnzSchemaMigrator.alter_add_column�s������!�!��!&��T��
�E�J����+�+�-8�8�E�J��*�	
�
�,�s�E�
"�
"�
�'�.�
!�
!�

�#�e�i�i��n�n�
�
�
���
��e�_�-�-�	/��"�"�3��.�.�.��
rc��|�|���|���d���t	|�����d���|��S)N� ADD CONSTRAINT � �rlrRrarbr�rreru�
constraints    r�add_constraintzSchemaMigrator.add_constraint�s\�����d�/�/�1�1�5�9�9���+�,�,���V�D�\�\�"�"��������Z���	"rc���dd�|��z}ttd��td�|D����f��}|�|||��S)Nzuniq_%sr=�UNIQUEc�,�g|]}t|����Sr3r��.0rqs  r�
<listcomp>z-SchemaMigrator.add_unique.<locals>.<listcomp>	s��H�H�H��f�V�n�n�H�H�Hr)rAr�SQLrr�)rre�column_names�constraint_namer�s     r�
add_uniquezSchemaMigrator.add_uniquesl��#�c�h�h�|�&<�&<�<�����M�M��H�H�<�H�H�H�I�I�K�L�L�
��"�"�5�/�:�F�F�Frc��|�|���|���d���t	|����S)Nz DROP CONSTRAINT r~�rrerus   r�drop_constraintzSchemaMigrator.drop_constraintsF�����d�/�/�1�1�5�9�9���,�-�-���V�D�\�\�"�"�	$rc��|�d���t|jjj�����d���t
t|jj��f����}|j	�|�d|j	z��}|j
�|�d|j
z��}|S)N� REFERENCES r}�
 ON DELETE %s�
 ON UPDATE %s)rarbr�	rel_model�_metarGr�	rel_fieldrf�	on_delete�	on_update�rrkrgs   rrxz SchemaMigrator.add_inline_fk_sqls�������'�'���F�5�?�0�;�<�<�=�=��������$�f�U�_�-H�&I�&I�%K�L�L�M�M�		�
�?�&��+�+�o���?�@�@�C��?�&��+�+�o���?�@�@�C��
rNc�
�|p
d|�d|�d|��}|����d���t|�����d���tt	|�������d���tt|��f�����d���t|�����d���t|�����d	��}	|�|	�d
|z��}	|�|	�d|z��}	|	S)N�fk_r=�_refs_rjr|z
 FOREIGN KEY r�� (�)r�r�)rRrarbrrr)
rrerf�rel�
rel_columnr�r�r�r�rks
          r�add_foreign_key_constraintz)SchemaMigrator.add_foreign_key_constraintsD��%�C�C�e�e�e�>I�k�k�>A�c�)C�
���������'�'���F�5�M�M�"�"���*�+�+���F�4�Z�@�@�A�A�B�B����(�(���$�f�[�&9�&9�%;�<�<�=�=����'�'���F�3�K�K� � ����
�
���F�:�&�&�'�'������	�� ��+�+�o�	�9�:�:�C�� ��+�+�o�	�9�:�:�C��
rc
��|js|j�td|z���t|t��}|r|jstd���|�|||��g}|js@|�|�|||��|�	||��g��|rW|j
rP|�|�|||j
jj|jj|j|j����|js|jrBt+|dd��}|�|�||f|j|����|S)Nz!%s is not null but has no defaultz$Foreign keys must specify a `field`.�
index_type)rtr`r[r#rwr�rz�extendrh�add_not_null�explicit_create_foreign_key�appendr�r�r�rGrfr�r��index�uniquer.�	add_index)rrerfrg�is_foreign_key�
operations�usings       r�
add_columnzSchemaMigrator.add_column9s����z�	P�e�m�3��@�;�N�O�O�O�#�E�?�;�;���	E�%�/�	E��C�D�D�D��+�+�E�;��F�F�G�
��z�	8�����"�"�5�+�u�=�=��!�!�%��5�5�7�
8�
8�
8��	&�d�>�	&�����/�/����O�)�4��O�/��O��O�
%�%�
&�
&�
&��;�	C�%�,�	C��E�<��6�6�E����d�n�n�U�[�N�-2�\�5�B�B�
C�
C�
C��rc��t�r��NotImplementedError)rrerfs   r�drop_foreign_key_constraintz*SchemaMigrator.drop_foreign_key_constraint`���!�!rTc�|�|���}|�||���d���t	|����|r|�d��d�|j�|��D��}||vr|jr|�||��|gS|S)N�
 DROP COLUMN � CASCADEc��g|]	}|j��
Sr3�rq)r��foreign_keys  rr�z.SchemaMigrator.drop_column.<locals>.<listcomp>ns1��F�F�F��
��F�F�Fr)	rRrlrarbrr�get_foreign_keys�explicit_delete_foreign_keyr�)rrerf�cascaderk�
fk_columnss      r�drop_columnzSchemaMigrator.drop_columnds������!�!��	
�	�	�3��	&�	&�
�'�/�
"�
"�

�#�f�[�!�!�
"�
"�
"��	$��K�K�
�#�#�#�F�F�#�}�=�=�e�D�D�F�F�F�
��*�$�$��)I�$��4�4�U�K�H�H�#�N�N��
rc��|�|���|���d���t	|�����d���t	|����S)N� RENAME COLUMN � TO r~)rre�old_name�new_names    r�
rename_columnzSchemaMigrator.rename_columnvsh�����d�/�/�1�1�5�9�9���*�+�+���V�H�%�%�&�&��������V�H�%�%�&�&�	(rc�z�|�|���||���d��S)Nz
 SET NOT NULL�rrrRra�rrerqs   rr�zSchemaMigrator.add_not_nulls4�����t�0�0�2�2�E�6�B�B����)�)�	+rc�z�|�|���||���d��S)Nz DROP NOT NULLr�r�s   r�
drop_not_nullzSchemaMigrator.drop_not_null�s5�����t�0�0�2�2�E�6�B�B���)�*�*�	,rc���|�td���t|��r
|��}t|t��r$|�d��rt|��}|�|���|���d���	t|�����d���	|��S)N� `default` must be not None/NULL.�r��'rnz
 SET DEFAULT )r[r
r#�str�endswithr�rlrRrarbr)rrerqr`s    r�add_column_defaultz!SchemaMigrator.add_column_default�s����?��?�@�@�@��W���	 ��g�i�i�G��g�s�#�#�	#��(8�(8��(D�(D�	#��'�l�l�G����d�/�/�1�1�5�9�9���)�*�*���V�F�^�^�$�$����)�)���W���	rc���|�|���|���d���t	|�����d��S)Nrnz
 DROP DEFAULTr~r�s   r�drop_column_defaultz"SchemaMigrator.drop_column_default�sS�����d�/�/�1�1�5�9�9���)�*�*���V�F�^�^�$�$����)�)�		+rc�j�|���}|�|||���d���|�|����}|�Lt|t��st|��}|�d���|��}|S)Nz TYPE z USING )rRrrrarb�ddl_datatyper#r
r��rrerqrg�castrks      r�alter_column_typez SchemaMigrator.alter_column_type�s������!�!����
�c�5�&�1�1����!�!���E�&�&�s�+�+�,�,�	����d�D�)�)�
!��4�y�y���+�+�i�(�(�,�,�T�2�2�C��
rc��|�|���|���d���t	|����S)Nz RENAME TO r~�rr�r�s   r�rename_tablezSchemaMigrator.rename_table�sG�����d�/�/�1�1�8�<�<����'�'���V�H�%�%�&�&�	(rc���	�|���}t||��}t|���	�	fd�|D��}t|�	|||���}|�|��S)Nc�:��g|]}t�j|����Sr3)r.�c)r�rq�	table_objs  �rr�z,SchemaMigrator.add_index.<locals>.<listcomp>�s%���C�C�C���	��V�,�,�C�C�Cr)r�r�)rRrK�Table�Indexrb)
rrerHr�r�rkrI�colsr�r�s
         @rr�zSchemaMigrator.add_index�so������!�!��$�U�G�4�4�
��%�L�L�	�C�C�C�C�7�C�C�C���j�)�T�&��N�N�N���w�w�u�~�~�rc��|����d���t|����S)N�DROP INDEX �rRrarbr�rrerIs   r�
drop_indexzSchemaMigrator.drop_index�s5����������'�'���V�J�'�'�(�(�	*r)NNN)Tr)FN)r/r0r1r�r�rrR�classmethodr]r;rhrlrrrzr�r�r�rxr�r�r�r�r�r�r�r�r�r�r�r�r�r3rrrMrM�s�������"'��"'��!�!�!�/�/�/��	@�	@��[�	@��
!�
!��Y�
!�>�>�>�&�&�&�����Y��(�"�"��Y�"��G�G��Y�G��$�$��Y�$�
�
�
��=A�37�����Y��2�$�$��Y�$�L�"�"��Y�"������Y��"�(�(��Y�(��+�+��Y�+�
�,�,��Y�,�
����Y��"�+�+��Y�+������Y���(�(��Y�(������Y���*�*��Y�*�*�*rrMc�J��eZdZd�Zed���Ze�fd���Z�xZS)rVc�|�d}|j�||z��}d�|���D��S)Nai
            SELECT pg_attribute.attname
            FROM pg_index, pg_class, pg_attribute
            WHERE
                pg_class.oid = '%s'::regclass AND
                indrelid = pg_class.oid AND
                pg_attribute.attrelid = pg_class.oid AND
                pg_attribute.attnum = any(pg_index.indkey) AND
                indisprimary;
        c��g|]
}|d��S�rr3)r��rows  rr�z;PostgresqlMigrator._primary_key_columns.<locals>.<listcomp>�s��4�4�4�3��A��4�4�4r)r�execute_sql�fetchall)r�tbl�query�cursors    r�_primary_key_columnsz'PostgresqlMigrator._primary_key_columns�sB��	����*�*�5�3�;�7�7��4�4�&�/�/�"3�"3�4�4�4�4rc�V�|����d|z��S)NzSET search_path TO %s)rRra)r�schema_names  r�set_search_pathz"PostgresqlMigrator.set_search_path�s'���������0�;�>�?�?�	Arc���|�|��}tt|��}|�||d���g}t	|��dkr�|�d|d�d�}d}|j�||f��}t|�����r7|�d|d�d�}	|�	|�||	����|S)NT)r,�r=r�_seqz�
                SELECT 1
                FROM information_schema.sequences
                WHERE LOWER(sequence_name) = LOWER(%s)
            )
r��superrVr�rBrr��bool�fetchoner�)rr�r��pk_names�ParentClassr��seq_namer�r��new_seq_name�	__class__s          �rr�zPostgresqlMigrator.rename_table�s�����,�,�X�6�6���.��5�5��
�$�$�X�x�d�$�K�K�M�
��x�=�=�A���&.�h�h������<�H��E�
�]�.�.�u�x�k�B�B�F��F�O�O�%�%�&�&�
-�.6�h�h������D���!�!�+�":�":��l�#,�#,�-�-�-��r)r/r0r1r�r;r�r��
__classcell__)r�s@rrVrV�sq�������5�5�5��A�A��Y�A�
������Y�����rrVc�.�eZdZdZd�Zed���ZdS)rTTc��dSrr3r�s   rrxz%CockroachDBMigrator.add_inline_fk_sql�����rc��|����d���t|�����d��S)Nr�r�r�r�s   rr�zCockroachDBMigrator.drop_index�sB����������'�'���V�J�'�'�(�(����$�$�		&rN)r/r0r1r�rxr;r�r3rrrTrT�sD������"&��
�
�
��&�&��Y�&�&�&rrTc�X�eZdZed���Zed���Zed���Zdd�ZdS)�MySQLColumnc��|jdkS)N�PRI��pkrQs r�is_pkzMySQLColumn.is_pk
����w�%��rc��|jdkS)N�UNIr	rQs r�	is_uniquezMySQLColumn.is_uniquerrc��|jdkS)N�YES)rtrQs r�is_nullzMySQLColumn.is_nulls���y�E�!�!rNc��|�|j}|�|j}t|��t|j��g}|jr"|�td����|r#|�td����n"|�td����|jr"|�td����|jr'|�t|j����t|��S)Nr��NULL�NOT NULLzPRIMARY KEY)
rrurr��
definitionrr�r�extrar)rrfr�partss    rrbzMySQLColumn.sqls����?��l�G����)�K��;������ � �"���>�	(��L�L��X���'�'�'��	*��L�L��V���%�%�%�%��L�L��Z���)�)�)��:�	-��L�L��]�+�+�,�,�,��:�	*��L�L��T�Z���)�)�)�����r�NN)r/r0r1�propertyrrrrbr3rrrrsw������
� � ��X� �� � ��X� ��"�"��X�"������rr�_Column)rurrtr
r`rc���eZdZdZdZd�Zed���Zd�Zd�Z	ed���Z
d�Zed���Zed	���Z
ed
���Zedd���Zed
���ZdS)rXTc��|�||���d���t|����S)N� MODIFY rorps    rrrzMySQLMigrator._alter_column/s9�����c�5�)�)����$�$���V�F�^�^�$�$�	&rc��|����d���t|�����d���t|����S)Nz
RENAME TABLE r�r�r�s   rr�zMySQLMigrator.rename_table5sU����������)�)���V�H�%�%�&�&��������V�H�%�%�&�&�	(rc��|j�d|z��}|���}|D]}t|�}|j|kr|cS�dS)NzDESCRIBE `%s`;F)rr�r�rru)rrerfr��rowsr�rqs       r�_get_column_definitionz$MySQLMigrator._get_column_definition>se����*�*�+;�e�+C�D�D����� � ���	�	�C� �#�&�F��{�k�)�)��
�
�
�*��urc��|j�d||f��}|���}|std|�d|�d����|dS)Nz�SELECT constraint_name FROM information_schema.key_column_usage WHERE table_schema = DATABASE() AND table_name = %s AND column_name = %s AND referenced_table_name IS NOT NULL AND referenced_column_name IS NOT NULL;z+Unable to find foreign key constraint for "z" on table "z".r)rr�r��AttributeError)rrerfr�r)s     r�get_foreign_key_constraintz(MySQLMigrator.get_foreign_key_constraintGss����*�*�3��K� �"�"�����"�"���	>� �.�).������=�>�>�
>��a�y�rc���|�||��}|�|���|���d���t|����S)Nz DROP FOREIGN KEY )r%rlrRrarbr)rrerf�
fk_constraints    rr�z)MySQLMigrator.drop_foreign_key_constraintXs]���7�7��{�K�K�
����d�/�/�1�1�5�9�9���-�.�.���V�M�*�*�+�+�	-rc��dSrr3r�s   rrxzMySQLMigrator.add_inline_fk_sql`rrc���|�||��}|�|���|���d���|�d�����}td�|j�|��D����}||vr|S||}|�||��||�	|||j
|j��fS)NrF�rc3�(K�|]
}|j|fV��dSrr��r��fks  r�	<genexpr>z-MySQLMigrator.add_not_null.<locals>.<genexpr>k�<����=�=���Y��O�=�=�=�=�=�=r)r"rlrRrarb�dictrr�r�r��
dest_table�dest_column)rrerq�
column_defr��
fk_objects�fk_metadatas       rr�zMySQLMigrator.add_not_nullcs���0�0���?�?�
��%��d�&7�&7�&9�&9�5�A�A� ���,�,���Z�^�^�E�^�:�:�;�;�	�
�=�=��m�4�4�U�;�;�=�=�=�=�=�
���#�#��� ��(���0�0���?�?���/�/����*��+�	-�-�.�	.rc��|�||��}|jrtd���|�|���|���d���|�d�����S)NzPrimary keys can not be nullrTr*)r"rr[rlrRrarbr�s   rr�zMySQLMigrator.drop_not_nullzs{���,�,�U�F�;�;���<�	=��;�<�<�<����d�/�/�1�1�5�9�9����$�$���V�Z�Z��Z�-�-�.�.�	0rc�L�td�|j�|��D����}||v}|�||��}|�|���|���d���t|�����d���|�|�����}|rA||}|�	||��||�
|||j|j��gS|S)Nc3�(K�|]
}|j|fV��dSrr�r,s  rr.z.MySQLMigrator.rename_column.<locals>.<genexpr>�r/rz CHANGE r})rf)
r0rr�r"rlrRrarbrr�r�r1r2)	rrer�r�r4r�rq�
rename_ctxr5s	         rr�zMySQLMigrator.rename_column�s*���=�=��m�4�4�U�;�;�=�=�=�=�=�
�"�Z�/���,�,�U�H�=�=���#�|�D�$5�$5�$7�$7��?�?��w�z�*�*��s�6�(�+�+�,�,��w�s�|�|��s�6�:�:�(�:�;�;�<�<�	��	�$�X�.�K��0�0���A�A���/�/����*��+�	-�-��
��rNc�P�|�td���|���}|�||���d���t|�����d���|�|����S)Nz5alter_column_type() does not support cast with MySQL.rr})r[rRrlrarbrrvr�s      rr�zMySQLMigrator.alter_column_type�s������&�'�'�
'����!�!�����c�5�)�)����$�$���V�F�^�^�$�$��������U�Y�Y�s�^�^�$�$�	&rc��|����d���t|�����d���t|����S)Nr�z ON r�r�s   rr�zMySQLMigrator.drop_index�sS����������'�'���V�J�'�'�(�(��������V�E�]�]�#�#�	%rr)r/r0r1r�r�rrr;r�r"r%r�rxr�r�r�r�r�r3rrrXrX+s������"&��"&��&�&�&��(�(��Y�(�������"�-�-��Y�-�
�
�
��.�.��Y�.�,�0�0��Y�0�����Y��6�
&�
&�
&��Y�
&��%�%��Y�%�%�%rrXc��eZdZdZejd��Zejd��Zejd��Zejdej	��Z
d�Zd�Ze
d���Zd	�Ze
dd���Ze
dd
���Ze
d���Ze
d���Ze
d���Ze
d���Ze
dd���Ze
d���Ze
d���Ze
	dd���ZdS)rZz�
    SQLite supports a subset of ALTER TABLE queries, view the docs for the
    full details http://sqlite.org/lang_altertable.html
    z
(.+?)\((.+)\)z(?:[^,(]|\([^)]*\))+z
["`']?([\w]+)z FOREIGN KEY\s+\("?([\w]+)"?\)\s+c�^�|j�d|z��}d�|jD��S)Nzselect * from "%s" limit 1c��g|]
}|d��Sr�r3)r�r*s  rr�z4SqliteMigrator._get_column_names.<locals>.<listcomp>�s��4�4�4�D��Q��4�4�4r)rr��description�rre�ress   r�_get_column_namesz SqliteMigrator._get_column_names�s3���m�'�'�(D�u�(L�M�M��4�4�C�O�4�4�4�4rc��|j�dd|���g��}|���S)NzBselect name, sql from sqlite_master where type=? and LOWER(name)=?re)rr��lowerr�r@s   r�_get_create_tablez SqliteMigrator._get_create_table�s>���m�'�'�.�
�e�k�k�m�m�$�&�&���|�|�~�~�rc��	���td��j�|��D����}|���|vrt	d|�d|�d������|��\}}�j�|��}�j�|��tj	dd|��}�j
�|�����\}}�j
�|��}	d�|	D��}
g}g}g}
d}|
D�]}�j�|�����\}||kr||||��}|rm|�|��|
�|���j�|�����\}|�|����|�|��|����|��s*|�|��|
�|����t't)|
|����}|�|���d	�}�sd
�}n�|kr��fd�}g}|D]^}�j�|��}|�)|���d|kr||��}|r|�|���_|d
z}tjd|ztj��}|�	d|z|��}d�|��}t5t7d��t9|��g��t7|����d|�d���g}t5t7d��t9|��t=d�|D����t7d��t?d�|
D����t7d��t9|��f��}t5t7d��t9|��g��}|||�� ||��gz
}tCd�|��D]u}||j"vr(|�t7|j#�����3�r@��$|j#|���}|�"|�t7|�����v|S)Nc3�HK�|]}|j���V��dSr)rurDr�s  rr.z0SqliteMigrator._update_column.<locals>.<genexpr>�sL����F�F� ��k�'�'�)�)�F�F�F�F�F�FrzColumn "z" does not exist on "�"z\s+r}c�6�g|]}|�����Sr3��strip�r��cols  rr�z1SqliteMigrator._update_column.<locals>.<listcomp>�s ��<�<�<�s�s�y�y�{�{�<�<�<r)zforeign zprimary zconstraint zcheck c��|Srr3�r3s r�<lambda>z/SqliteMigrator._update_column.<locals>.<lambda>s��*�rc��dSrr3rOs rrPz/SqliteMigrator._update_column.<locals>.<lambda>s��d�rc�@���j�d�z|��S)NzFOREIGN KEY ("%s") )�fk_re�sub)r3�
new_columnrs ��rrPz/SqliteMigrator._update_column.<locals>.<lambda>
s"���d�j�n�n�%�
�2��/�/�rr�__tmp__z
("?)%s("?)z\1%s\2�, zDROP TABLE IF EXISTSr�r�zINSERT INTOc�,�g|]}t|����Sr3rrLs  rr�z1SqliteMigrator._update_column.<locals>.<listcomp>'s��F�F�F�c�f�S�k�k�F�F�Fr�SELECTc�,�g|]}t|����Sr3rrLs  rr�z1SqliteMigrator._update_column.<locals>.<listcomp>)s��H�H�H�3�6�#�;�;�H�H�Hr�FROMz
DROP TABLEc��|jSr)rb)�idxs rrPz/SqliteMigrator._update_column.<locals>.<lambda>6s����r)%�setr�get_columnsrDr[rE�get_indexesr��rerT�	column_re�search�groups�column_split_re�findall�column_name_re�matchr��
startswithr0�zip�getrS�compile�IrArr�rrKrrr��filterrHrb�
_fix_index)rre�column_to_updater7rH�create_table�indexes�
raw_create�raw_columns�
split_columns�column_defs�new_column_defs�new_column_names�original_column_names�constraint_termsr3rf�new_column_def�original_to_new�fk_filter_fn�cleaned_columnsrh�
temp_table�rgx�create�queries�populate_table�
drop_originalr�rbrUs`                             @r�_update_columnzSqliteMigrator._update_column�sD�����F�F�$(�M�$=�$=�e�$D�$D�F�F�F�F�F���!�!�#�#�7�2�2��*�.�.�.����7�8�8�
8�#�4�4�U�;�;���|��-�+�+�E�2�2��	
�
�&�&�u�-�-�-��v�f�c�<�8�8��#'�.�"7�"7��"E�"E�"L�"L�"N�"N��
�K��,�4�4�[�A�A�
�<�<�m�<�<�<������ "��L��%�	>�	>�J��.�4�4�Z�@�@�G�G�I�I�L�K��.�.�.�!#��K��!<�!<��!�9�#�*�*�>�:�:�:�)�0�0��=�=�=�#'�#6�#<�#<�&�$(�$(�(.����!�K�$�+�+�K�8�8�8���&�&�z�2�2�2�"�'�'�)�)�4�4�5E�F�F�>�$�+�+�K�8�8�8�)�0�0��=�=�=���s�#8�:J�K�K�L�L��$�(�(�)9�:�:�
�4�4���	�2�2�L�L�
�+�
+�
+������L���)�	3�	3�J��J�$�$�Z�0�0�E�� �U�\�\�^�^�A�%6�:J�%J�%J�)�\�*�5�5�
��
3��&�&�z�2�2�2���Y�&�
��j���-�r�t�4�4�������#�����
�)�)�O�,�,���c�0�1�1�6�*�3E�3E�F�G�G��V�\�\�^�^�^�^�W�W�W�5�6�6�8��
"��
����:����F�F�5E�F�F�F�G�G���M�M��H�H�2G�H�H�H�I�I���K�K��5�M�M�#����!�#�l�"3�"3�V�E�]�]�!C�D�D�
�	������j�%�0�0�2�	2���/�/��9�9�	-�	-�E��u�}�4�4����s�5�9�~�~�.�.�.�.��
-��o�o�e�i�1A�:�N�N���?��N�N�3�s�8�8�,�,�,���rc��|�|��}t|��dkr|�||��S|�dd��\}}t|�|����dkr|�d|�||����S|�dd��d�d��}d�|D��}g}|D]I}	t	jd|z|	��r||	t|��d�z}	|�|	���J|�dd	�d
�|D�����d�S)N��(r�r�r�,c�8�g|]}|�d����S)z"`[]' rJ)r��parts  rr�z-SqliteMigrator._fix_index.<locals>.<listcomp>Rs$��;�;�;�T�4�:�:�i�(�(�;�;�;rz%s(?:[\'"`\]]?\s|$)rWc3� K�|]	}d|zV��
dS)z"%s"Nr3)r�r�s  rr.z,SqliteMigrator._fix_index.<locals>.<genexpr>]s&����)D�)D��&�1�*�)D�)D�)D�)D�)D�)Dr)�splitrB�replace�rsplitrarhr�rA)
rrbrprUr�lhs�rhsrH�cleanrqs
          rrozSqliteMigrator._fix_index@sf���	�	�*�+�+���u�:�:��?�?��;�;�/��<�<�<��:�:�c�1�%�%���S��s�y�y�)�*�*�+�+�q�0�0�!�c�c�3�;�;�/?��#L�#L�#L�M�M��
�
�3��"�"�1�%�+�+�C�0�0��;�;�U�;�;�;��
���	!�	!�F��x�.�1A�A�6�J�J�
E�#�f�S�1A�-B�-B�-C�-C�&D�D���L�L�� � � � ��3�3��	�	�)D�)D�e�)D�)D�)D� D� D� D� D�E�ErTFc��tjdkra|s_|���}|�||���d���t
|����|S|�||d���S)N)��#rr�c��dSrr3)�a�bs  rrPz,SqliteMigrator.drop_column.<locals>.<lambda>gs��D�r)r�sqlite_version_inforRrlrarbrr�)rrerfr��legacyrks      rr�zSqliteMigrator.drop_column_s���&�*�4�4�V�4��#�#�%�%�C�
�
�
�s�E�
*�
*��g�o�&�&��c�&��%�%�&�&�&��J��"�"�5�+�7H�7H�I�I�Irc�|��tjdkr�|s�|�|���|���d���t
|�����d���t
�����S�fd�}|�|||��S)N)r��rr�r�c�0��|�|���Sr�r�)rfr3r�s  �r�_renamez-SqliteMigrator.rename_column.<locals>._renamers����%�%�k�8�<�<�<r)rr�rlrRrarbrr�)rrer�r�r�r�s   `  rr�zSqliteMigrator.rename_columnis�����&�*�4�4�V�4��!�\�$�"3�"3�"5�"5�u�=�=��W�.�/�/��S���)�)�*�*��W�V�_�_��S���)�)�*�*�
,�	=�	=�	=�	=�	=��"�"�5�(�G�<�<�<rc�6�d�}|�|||��S)Nc��|dzS)Nz	 NOT NULLr3�rfr3s  r�
_add_not_nullz2SqliteMigrator.add_not_null.<locals>._add_not_nullxs
����+�+r�r�)rrerqr�s    rr�zSqliteMigrator.add_not_nullvs)��	,�	,�	,��"�"�5�&�-�@�@�@rc�6�d�}|�|||��S)Nc�.�|�dd��S)Nr�r�r�s  r�_drop_not_nullz4SqliteMigrator.drop_not_null.<locals>._drop_not_null~s���%�%�j�"�5�5�5rr�)rrerqr�s    rr�zSqliteMigrator.drop_not_null|s)��	6�	6�	6��"�"�5�&�.�A�A�Arc�����td���t���r
����t�t��r.��d��s����sd�z��fd�}|�|||��S)Nr�r�z'%s'c���|d�zzS)Nz DEFAULT %sr3)rfr3r`s  �r�_add_defaultz7SqliteMigrator.add_column_default.<locals>._add_default�s����
�� 7�7�7r)r[r
r#r�r��isdigitr�)rrerqr`r�s   ` rr�z!SqliteMigrator.add_column_default�s�����?��?�@�@�@��W���	 ��g�i�i�G��w��$�$�	'�W�-=�-=�j�-I�-I�	'��O�O�%�%�	'��w�&�G�	8�	8�	8�	8�	8��"�"�5�&�,�?�?�?rc�6�d�}|�|||��S)Nc�l�tjdd|tj��}|���S)NzDEFAULT\s+[\w"\'\(\)]+(\s|$)r�)rarTrmrK)rfr3rMs   r�
_drop_defaultz9SqliteMigrator.drop_column_default.<locals>._drop_default�s(���&�8�"�j�"�$�O�O�C��9�9�;�;�rr�)rrerqr�s    rr�z"SqliteMigrator.drop_column_default�s+��	�	�	��"�"�5�&�-�@�@�@rNc�����|�td���|�������fd�}|�|�|��S)Nz6alter_column_type() does not support cast with Sqlite.c���������}��t������|�����\}}|Sr)rvrbrr�)rfr3�	node_listrbr=rqrkrgs     ���r�_alter_column_typez<SqliteMigrator.alter_column_type.<locals>._alter_column_type�sL����	�	�#���I��W�W�V�F�^�^�,�,�0�0��;�;�A�A�C�C�F�C���Jr)r[rRr�)rrerqrgr�r�rks  ``  @rr�z SqliteMigrator.alter_column_type�sq��������'�(�(�
(����!�!��	�	�	�	�	�	�	��"�"�5�&�2D�E�E�Erc��t�rr�rs    rr�zSqliteMigrator.add_constraint�r�rc��t�rr�r�s   rr�zSqliteMigrator.drop_constraint�r�rc��t�rr�)rrerfrgr�r�s      rr�z)SqliteMigrator.add_foreign_key_constraint�s
��"�!r)TF)Frr)r/r0r1r2rarlrbrergrmrSrBrEr;r�ror�r�r�r�r�r�r�r�r�r�r3rrrZrZ�s�����������
�+�,�,�I� �b�j�!8�9�9�O��R�Z� 4�5�5�N��B�J�:�B�D�A�A�E�5�5�5�����q�q��Y�q�fF�F�F�>�J�J�J��Y�J��
=�
=�
=��Y�
=��A�A��Y�A�
�B�B��Y�B�
�@�@��Y�@��A�A��Y�A��	F�	F�	F��Y�	F��"�"��Y�"��"�"��Y�"��=A�"�"�"��Y�"�"�"rrZc�8�|D]}|����dSr)r%)r�rr;s   r�migrater��s*�����	��
�
������r) r2�collectionsrr9rCra�peeweerrrr	r
rrr
rrr�playhouse.cockroachdbr�ImportError�objectrr;rKrMrVrTrrXrZr�r3rr�<module>r�s���q�q�d#�"�"�"�"�"���������	�	�	�	����� � � � � � �#�#�#�#�#�#�������������������������������������������������,�,�,�,�,�,��7�7�7�7�7�7�7��������������:�:�:�:�:��:�:�:�6������Q*�Q*�Q*�Q*�Q*�V�Q*�Q*�Q*�h+�+�+�+�+��+�+�+�\&�&�&�&�&�,�&�&�&� � � � � �*�*�Y�)=�>�>� � � �FI%�I%�I%�I%�I%�N�I%�I%�I%�Xw"�w"�w"�w"�w"�^�w"�w"�w"�t����s�A#�#A-�,A-

Youez - 2016 - github.com/yon3zu
LinuXploit