§
    Ÿji ã                   óÎ  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZmZmZmZmZmZ d dlmZmZ d d	lmZmZ d d
lmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3  G d„ de¦  «        Z4 G d„ d¦  «        Z5 G d„ de5¦  «        Z6 G d„ de5¦  «        Z7 G d„ de5¦  «        Z8 G d„ de5¦  «        Z9d„ Z:dS )é    N)Úpartial)Úchain)ÚEmptyResultSetÚ
FieldErrorÚFullResultSet)ÚDatabaseErrorÚNotSupportedError)Ú
LOOKUP_SEP)ÚColPairsÚFÚOrderByÚRawSQLÚRefÚValue)Ú	AutoFieldÚ	composite)ÚCastÚRandom)ÚLookup)Úselect_related_descend)ÚCURSORÚGET_ITERATOR_CHUNK_SIZEÚMULTIÚ
NO_RESULTSÚ	ORDER_DIRÚ	ROW_COUNTÚSINGLE)ÚQueryÚget_order_dir)ÚTransactionManagementError)Úcached_property)Úmake_hashable)Ú_lazy_re_compilec                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚPositionRefc                 óZ   •— || _         t          ¦   «                              ||¦  «         d S ©N)ÚordinalÚsuperÚ__init__)Úselfr(   ÚrefsÚsourceÚ	__class__s       €új/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/django/db/models/sql/compiler.pyr*   zPositionRef.__init__    s*   ø€ ØˆŒÝ‰Œ×Ò˜˜vÑ&Ô&Ð&Ð&Ð&ó    c                 ó.   — t          | j        ¦  «        dfS )N© )Ústrr(   )r+   ÚcompilerÚ
connections      r/   Úas_sqlzPositionRef.as_sql$   s   € Ý�4”<Ñ Ô  "Ð$Ð$r0   )Ú__name__Ú
__module__Ú__qualname__r*   r6   Ú__classcell__©r.   s   @r/   r%   r%      sG   ø€ € € € € ð'ð 'ð 'ð 'ð 'ð%ð %ð %ð %ð %ð %ð %r0   r%   c                   ó*  — e Zd Z edej        ej        z  ¦  «        Zd&d„Zd„ Z	d'd„Z
d'd„Zd„ Zd	„ Zd'd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd(d„Z	 d)d„Zd„ Z	 d*d„Zd„ Zd„ Z	 	 	 	 	 d+d„Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"ddde#fd"„Z$d#„ Z%e&de#fd$„Z'd%„ Z(dS ),ÚSQLCompilerz^(.*)\s(?:ASC|DESC).*Tc                 óˆ   — || _         || _        || _        || _        ddi| _        d | _        d | _        d | _        d | _        d S )NÚ*)	Úqueryr5   ÚusingÚelide_emptyÚquote_cacheÚselectÚannotation_col_mapÚ
klass_infoÚ_meta_ordering)r+   r@   r5   rA   rB   s        r/   r*   zSQLCompiler.__init__/   sS   € ØˆŒ
Ø$ˆŒØˆŒ
ð 'ˆÔØ ˜:ˆÔð
 ˆŒØ"&ˆÔØˆŒØ"ˆÔÐÐr0   c           	      óf   — d| j         j        › d| j        j        j        › d| j        ›d| j        ›d�	S )Nú<z model=z connection=z using=ú>)r.   r9   r@   Úmodelr5   rA   ©r+   s    r/   Ú__repr__zSQLCompiler.__repr__@   s_   € ðD�”Ô+ð Dð DØ”ZÔ%Ô2ðDð Dàœ/ðDð Dà48´JðDð Dð Dð	
r0   Fc                 ó  ‡ — t          ˆ fd„‰ j        j        D ¦   «         ¦  «        r‰ j                             ¦   «          ‰                      |¬¦  «        \  ‰ _        ‰ _        ‰ _        t          ‰ j        ¦  «        ‰ _	        d S )Nc              3   óD   •K  — | ]}‰j         j        |         d k    V — ŒdS ©r   N©r@   Úalias_refcount)Ú.0Úar+   s     €r/   ú	<genexpr>z*SQLCompiler.setup_query.<locals>.<genexpr>H   s2   øè è € ÐOÐO°QˆtŒzÔ(¨Ô+¨qÒ0ÐOÐOÐOÐOÐOÐOr0   ©Úwith_col_aliases)
Úallr@   Ú	alias_mapÚget_initial_aliasÚ
get_selectrD   rF   rE   ÚlenÚ	col_count)r+   rW   s   ` r/   Úsetup_queryzSQLCompiler.setup_queryG   s…   ø€ ÝÐOÐOÐOÐO¸$¼*Ô:NÐOÑOÔOÑOÔOð 	+ØŒJ×(Ò(Ñ*Ô*Ð*Ø@DÇÂØ-ð APñ A
ô A
Ñ=ˆŒ�T”_ dÔ&=õ ˜Tœ[Ñ)Ô)ˆŒˆˆr0   c                 óx  — |                       |¬¦  «         |                      ¦   «         }| j        j                             | j        j        du¬¦  «        \  | _        | _        | _        |                      || j	        ¦  «        }t          |¦  «        | _        |                      | j	        |z   |¦  «        }|||fS )zà
        Do any necessary class setup immediately prior to producing SQL. This
        is for things that can't necessarily be done in __init__ because we
        might not have all the pieces in place at that time.
        rV   N)Úmust_group_by)r^   Úget_order_byr@   ÚwhereÚsplit_having_qualifyÚgroup_byÚhavingÚqualifyÚget_extra_selectrD   ÚboolÚhas_extra_selectÚget_group_by)r+   rW   Úorder_byÚextra_selectrd   s        r/   Úpre_sql_setupzSQLCompiler.pre_sql_setupO   s¹   € ð 	×ÒÐ*:ÐÑ;Ô;Ð;Ø×$Ò$Ñ&Ô&ˆØ04´
Ô0@×0UÒ0UØœ*Ô-°TÐ9ð 1Vñ 1
ô 1
Ñ-ˆŒ
�D”K ¤ð ×,Ò,¨X°t´{ÑCÔCˆÝ $ \Ñ 2Ô 2ˆÔØ×$Ò$ T¤[°<Ñ%?ÀÑJÔJˆØ˜X xÐ/Ð/r0   c                 ó  — | j         j        €g S g }t          ¦   «         }| j         j        dur¡| j         j        D ]”}t          |d¦  «        s| j                              |¦  «        }t          |t          ¦  «        r>|j        |vr4|                     |j        ¦  «         | 	                    |j
        ¦  «         Œ| 	                    |¦  «         Œ•i }t          |d¬¦  «        D ]<\  }\  }}}	|	r|||<   |	|v rŒ|                     |                     ¦   «         ¦  «         Œ=| j        s5|D ]2\  }\  }
}}|s'|                     |                     ¦   «         ¦  «         Œ3| j        r| j                             ¦   «         nd}|D ]}| 	                    |¦  «         Œg }t          ¦   «         }|                      ||¦  «        }| j        j        j        }|D ]»}	 |                      |¦  «        \  }
}n# t*          t,          f$ r Y Œ/w xY w|r)|                     |¦  «        x}�t1          |¦  «        d}}
n|                     | |
|¦  «        \  }
}t5          |¦  «        }|
|f|vr.| 	                    |
|f¦  «         |                     |
|f¦  «         Œ¼|S )zí
        Return a list of 2-tuples of form (sql, params).

        The logic of what exactly the GROUP BY clause contains is hard
        to describe in other words than "if it passes the test suite,
        then it is correct".
        NTr6   é   ©Ústartr2   )r@   rd   ÚsetÚhasattrÚresolve_refÚ
isinstancer   r,   ÚaddÚappendr-   Ú	enumerateÚextendÚget_group_by_colsrG   re   Úcollapse_group_byr5   ÚfeaturesÚallows_group_by_select_indexÚcompiler   r   Úgetr3   Úselect_formatr"   )r+   rD   rk   ÚexpressionsÚgroup_by_refsÚexprÚselected_expr_positionsr(   Ú_ÚaliasÚsqlÚparamsÚis_refÚhaving_group_byÚresultÚseenr}   ÚpositionÚparams_hashs                      r/   rj   zSQLCompiler.get_group_by_   s
  € ðL Œ:ÔÐ&ØˆIØˆÝ™œˆØŒ:Ô dÐ*Ð*ð œ
Ô+ð -ð -�Ý˜t XÑ.Ô.ð 8Øœ:×1Ò1°$Ñ7Ô7�DÝ˜d¥CÑ(Ô(ð -Ø”y¨Ð5Ð5Ø%×)Ò)¨$¬)Ñ4Ô4Ð4Ø#×*Ò*¨4¬;Ñ7Ô7Ð7øà×&Ò& tÑ,Ô,Ð,Ð,ð #%ÐÝ)2°6ÀÐ)CÑ)CÔ)Cð 	9ð 	9Ñ%ˆGÑ%�d˜A˜uØð 8Ø07Ð'¨Ñ-ð ˜Ð%Ð%ØØ×Ò˜t×5Ò5Ñ7Ô7Ñ8Ô8Ð8Ð8ØÔ"ð 	AØ/7ð Að AÑ+�Ñ+�s˜F Fð ð AØ×&Ò& t×'=Ò'=Ñ'?Ô'?Ñ@Ô@Ð@øØ=A¼[ÐP˜$œ+×7Ò7Ñ9Ô9Ð9ÈbˆØ#ð 	%ð 	%ˆDØ×Ò˜tÑ$Ô$Ð$Ð$ØˆÝ‰uŒuˆØ×,Ò,¨[¸/ÑJÔJˆð ŒOÔ$ÔAð 	%ð  ð 	-ð 	-ˆDðØ"Ÿlšl¨4Ñ0Ô0‘��V�VøÝ"¥MÐ2ð ð ð Ø�ðøøøð -ðDà!8×!<Ò!<¸TÑ!BÔ!BÐB�XÐOå! (™mœm¨R�V��à"×0Ò0°°s¸FÑCÔC‘��VÝ'¨Ñ/Ô/ˆKØ�[Ð!¨Ð-Ð-Ø—’˜s F˜mÑ,Ô,Ð,Ø—’˜#˜{Ð+Ñ,Ô,Ð,øØˆs   ÇG+Ç+G?Ç>G?c                 ó„   ‡ ‡‡‡— ‰ j         j        j        r*ˆ fd„|D ¦   «         Šd„ ‰D ¦   «         Šˆˆˆfd„|D ¦   «         }|S )Nc                 óž   •— h | ]I}t          |d ¦  «        ¯|j        j        ¯‰j        j                             |j        j        ¦  «        ¯G|’ŒJS )Útarget)rs   r‘   Úprimary_keyr5   r|   Ú%allows_group_by_selected_pks_on_modelrK   ©rS   rƒ   r+   s     €r/   ú	<setcomp>z0SQLCompiler.collapse_group_by.<locals>.<setcomp>Ñ   so   ø€ ð 
ð 
ð 
àå˜D (Ñ+Ô+ð	
ð
 œÔ/ð
ð œÔ0×VÒVØœÔ)ñô ð
Øð
ð 
ð 
r0   c                 ó   — h | ]	}|j         ’Œ
S r2   )r†   )rS   rƒ   s     r/   r•   z0SQLCompiler.collapse_group_by.<locals>.<setcomp>Ü   s   € Ð2Ð2Ð2 d�t”zÐ2Ð2Ð2r0   c                 óJ   •— g | ]}|‰v s|‰v st          |d d¦  «        ‰v¯|‘Œ S )r†   N©Úgetattr)rS   rƒ   Úaliasesre   Úpkss     €€€r/   ú
<listcomp>z1SQLCompiler.collapse_group_by.<locals>.<listcomp>Ý   sN   ø€ ð ð ð àØ˜3�;�;Ø˜6�>�>Ý˜4 ¨$Ñ/Ô/°wÐ>Ð>ð	 ð ?Ð>Ð>r0   )r5   r|   Úallows_group_by_selected_pks)r+   r�   re   rš   r›   s   ` `@@r/   r{   zSQLCompiler.collapse_group_byÆ   s�   øøøø€ ð Œ?Ô#Ô@ð 	ð
ð 
ð 
ð 
à'ð
ñ 
ô 
ˆCð 3Ð2¨cÐ2Ñ2Ô2ˆGðð ð ð ð ð à'ðñ ô ˆKð Ðr0   c           	      ó¸  ‡— g }d}i }| j         j        r| j         j        rJ ‚| j                              ¦   «         }| j         j        r|                      |¦  «        }n| j         j        }g }d}| j         j        €°g d„ | j         j                             ¦   «         D ¦   «         ¢d„ |D ¦   «         ¢| j         j                             ¦   «         ¢}t          t          t          | j         j        ¦  «        t          | j         j        ¦  «        t          |¦  «        z   ¦  «        ¦  «        }n¾g }t          | j         j                             ¦   «         ¦  «        D ]�\  }	\  }
}t          |t          ¦  «        r| j         j        |         }n2t          |t           ¦  «        r|                     |	¦  «         ||         }t          |t$          ¦  «        rd}
|                     |
|f¦  «         Œ‘|r| j         j        |dœ}t          |¦  «        D ]&\  }\  }
}|
r|||
<   |                     ||
f¦  «         Œ'| j         j        r+|                      ||¦  «        }||d<   ˆfd„Š ‰|¦  «         g }d}|D ]ë\  }}
	 |                      |¦  «        \  }}|                     | ||¦  «        \  }}nŠ# t0          $ rM t3          |dt4          ¦  «        }|t4          u rd	\  }}n%|                      t7          |¦  «        ¦  «        \  }}Y n4t8          $ r( |                      t7          d
¦  «        ¦  «        \  }}Y nw xY w|
€|r
d|› �}
|dz  }|                     |||f|
f¦  «         Œì|||fS )a   
        Return three values:
        - a list of 3-tuples of (expression, (sql, params), alias)
        - a klass_info structure,
        - a dictionary of annotations

        The (sql, params) is what the expression will produce, and alias is the
        "AS alias" for the column (possibly None).

        The klass_info structure contains the following information:
        - The base model of the query.
        - Which columns for that model are present in the query (by
          position of the select clause).
        - related_klass_infos: [f, klass_info] to descent into

        The annotations is a dictionary of {'attname': column position} values.
        Nc              3   ó2   K  — | ]\  }}|t          |Ž fV — Œd S r'   )r   )rS   r†   Úargss      r/   rU   z)SQLCompiler.get_select.<locals>.<genexpr>  sC   è è € ð ð á#˜˜tð �F D˜MÐ*ðð ð ð ð ð r0   c              3   ó   K  — | ]}d |fV — Œ	d S r'   r2   )rS   Úcols     r/   rU   z)SQLCompiler.get_select.<locals>.<genexpr>  s&   è è € Ð.Ð. #�4˜�+Ð.Ð.Ð.Ð.Ð.Ð.r0   )rK   Úselect_fieldsÚrelated_klass_infosc                 ól   •— | d         D ])}|d         r| d         |d         z   |d<    ‰|¦  «         Œ*d S )Nr¤   Úfrom_parentr£   r2   )rF   ÚkiÚget_select_from_parents     €r/   r¨   z6SQLCompiler.get_select.<locals>.get_select_from_parent.  sa   ø€ Ø$Ð%:Ô;ð /ð /�BØ˜-Ô(ð à& Ô7¸"¸_Ô:MÑMð ˜?Ñ+ð +Ð*¨2Ñ.Ô.Ð.Ð.ð/ð /r0   ro   Úempty_result_set_value)Ú0r2   Tr¢   )r@   rD   Údefault_colsÚget_select_maskÚget_default_columnsÚselectedrl   ÚitemsÚannotation_selectÚlistÚranger\   rx   ru   r3   ÚannotationsÚintrw   r   rK   Úselect_relatedÚget_related_selectionsr~   r€   r   r™   ÚNotImplementedr   r   )r+   rW   rD   rF   r³   Úselect_maskÚcolsr®   r£   Úindexr†   Ú
expressionÚ
select_idxr¤   ÚretÚcol_idxr¢   r‡   rˆ   r©   r¨   s                       @r/   r[   zSQLCompiler.get_selectæ   s   ø€ ð$ ˆØˆ
ØˆØ”JÔ%ÐB¨$¬*Ô*AÐBÐBÐBØ”j×0Ò0Ñ2Ô2ˆØŒ:Ô"ð 	%Ø×+Ò+¨KÑ8Ô8ˆDˆDð ”:Ô$ˆDØˆØˆØŒ:ÔÐ&ððð à'+¤zÔ'>×'DÒ'DÑ'FÔ'Fðñ ô ðð
 /Ð.¨Ð.Ñ.Ô.ðð ”Ô-×3Ò3Ñ5Ô5ðˆHõ !ÝÝ˜œ
Ô/Ñ0Ô0Ý˜œ
Ô/Ñ0Ô0µ3°t±9´9Ñ<ñô ñô ˆMˆMð ˆMÝ.7¸¼
Ô8K×8QÒ8QÑ8SÔ8SÑ.TÔ.Tð 5ð 5Ñ*�Ñ*˜˜zå˜j­#Ñ.Ô.ð 2Ø!%¤Ô!7¸
Ô!C�J�Jå 
­CÑ0Ô0ð 2Ø!×(Ò(¨Ñ/Ô/Ð/Ø!% jÔ!1�Jå˜j­(Ñ3Ô3ð !Ø �EØ—’ ¨
Ð 3Ñ4Ô4Ð4Ð4Øð 	UØ#'¤:Ô#3ÀmÐTÐTˆJå/8¸Ñ/BÔ/Bð 	/ð 	/Ñ+ˆJÑ+˜ 
Øð 0Ø%/�˜EÑ"Ø�MŠM˜: uÐ-Ñ.Ô.Ð.Ð.àŒ:Ô$ð 	/Ø"&×"=Ò"=¸fÀkÑ"RÔ"RÐØ0CˆJÐ,Ñ-ð/ð /ð /ð /ð /ð #Ð" :Ñ.Ô.Ð.àˆØˆØ ð 	4ð 	4‰JˆC�ðCØ"Ÿlšl¨3Ñ/Ô/‘��Vð "×/Ò/°°c¸6ÑBÔB‘��V�Vøõ "ð Nð Nð NÝ)0ØÐ1µ>ñ*ô *Ð&ð *­^Ð;Ð;à")‘K�C˜˜à"&§,¢,­uÐ5KÑ/LÔ/LÑ"MÔ"M‘K�C˜øøÝ ð 8ð 8ð 8Ø"Ÿlšl­5°©;¬;Ñ7Ô7‘��V�V�Vð8øøøð ˆ}Ð!1ˆ}Ø'˜g˜˜�Ø˜1‘�Ø�JŠJ˜˜c 6˜]¨EÐ2Ñ3Ô3Ð3Ð3Ø�J Ð+Ð+s   É1J$Ê$AL+Ë:.L+Ì*L+c           
   #   óx
  K  — | j         j        r| j         j        }ne| j         j        s| j         j        }nL| j         j        r| j         j        }n3| j                              ¦   «         x}r|j        r|j        }|| _        ng }| j         j        rt          d         \  }}nt          d         \  }}i }|rA| j	        x}r8t          |d¬¦  «        D ]&\  }\  }}}	t          ||	|¦  «        }
|	r|
||	<   |
||<   Œ'|D �]C}t          |d¦  «        �rbt          |t          ¦  «        rt          ||j        ¦  «        }t          |t"          ¦  «        s|                     ¦   «         }| j         j        s(|                     ¦   «         }|                     ¦   «          |                     |j        ¦  «        }|s;t          |j        t.          ¦  «        r›|                     |j        j        ¦  «        x}rz|j        €|j        �| j        j        j        r|                     ¦   «         }||_        n?| j         j        r3|                     ¦   «         }t?          |j         |j!        ¦  «        |_        ||d ufV — �Œv|dk    r!t#          tE          ¦   «         ¦  «        dfV — �Œ�tG          ||¦  «        \  }}|dk    }|                     |¦  «        x}rt#          ||¬¦  «        d	fV — �Œä| j         j$                             |¦  «        x}r|}g }n;| %                    tL          ¦  «        ^}}| j         j$                             |¦  «        }|r–| j         j        r'| j	        r |rtO          d
¦  «        ‚t/          |¦  «        }|r |D ]}| j          (                    ||¦  «        }Œt          |t          ¦  «        rt          ||j        ¦  «        }t#          ||¬¦  «        dfV — �ŒÝd|v rd|| j         j        v rV| %                    dd¦  «        \  }}t#          tS          |  *                    |¦  «        ›d|›�g ¦  «        |¬¦  «        dfV — �ŒE| j         j+        r†|| j         j+        v rx|| j         j,        v r<t#          t?          |tS          | j         j+        |         Ž ¦  «        |¬¦  «        d	fV — �Œ©t#          tS          | j         j+        |         Ž |¬¦  «        dfV — �Œ×| j         j        r+| j	        r$t#          t/          |¦  «        |¬¦  «        dfV — �Œ|  -                    || j                              ¦   «         |¬¦  «        E d {V —† �ŒEd S )NÚASCÚDESCro   rp   Úresolve_expressionú?F©Ú
descendingTz;Ordering combined queries by transforms is not implemented.ú.)Údefault_order).r@   Úextra_order_byÚdefault_orderingrk   Úget_metaÚorderingrG   Ústandard_orderingr   rD   rx   r%   rs   ru   r   r   Úoutput_fieldr   ÚascÚcopyÚreverse_orderingr   r»   r   ÚnameÚnulls_firstÚ
nulls_lastr5   r|   Ú supports_order_by_nulls_modifierÚ
combinatorr   r,   r-   r   r   r³   Úsplitr
   ÚNotImplementedErrorÚtry_transformr   Úquote_name_unless_aliasÚextrarl   Úfind_ordering_name)r+   rË   ÚmetarÇ   r…   Úselected_exprsrD   r(   rƒ   r†   Úpos_exprÚfieldÚ
select_refr¢   ÚorderrÅ   ÚrefÚ
transformsrÑ   Útables                       r/   Ú_order_by_pairszSQLCompiler._order_by_pairsP  sH  è è € ØŒ:Ô$ð 
	Ø”zÔ0ˆHˆHØ”Ô,ð 	Ø”zÔ*ˆHˆHØŒZÔ ð 	Ø”zÔ*ˆHˆHØ”j×)Ò)Ñ+Ô+Ð+ˆdð 	°´ð 	Ø”}ˆHØ"*ˆDÔÐàˆHØŒ:Ô'ð 	1Ý(¨Ô/ÑˆM˜1˜1å(¨Ô0ÑˆM˜1àˆð ð 	0 4¤;Ð.˜ð 	0Ý-6°vÀQÐ-GÑ-GÔ-Gð 0ð 0Ñ)�Ñ)˜$  5Ý& w°°tÑ<Ô<�Øð 5Ø,4�N 5Ñ)Ø'/�˜tÑ$Ð$àð r	ñ r	ˆEÝ�uÐ2Ñ3Ô3ñ Ý˜e¥UÑ+Ô+ð <å  ¨Ô(:Ñ;Ô;�EÝ! %­Ñ1Ô1ð (Ø!ŸIšI™KœK�EØ”zÔ3ð -Ø!ŸJšJ™LœL�EØ×*Ò*Ñ,Ô,Ð,Ø+×/Ò/°Ô0@ÑAÔA�
Øð SÝ˜uÔ/µÑ3Ô3ðSà'5×'9Ò'9¸%Ô:JÔ:OÑ'PÔ'PÐP˜ðSð Ô)Ð1°eÔ6FÐ6NØœÔ1ÔRð 7Oà %§
¢
¡¤˜Ø+5˜Ô(Ð(ð œÔ.ð SØ %§
¢
¡¤˜Ý+.¨z¬À
Ô@QÑ+RÔ+R˜Ô(Ø˜Z¨tÐ3Ð3Ð3Ð3Ð3ÙØ˜Š|ˆ|Ý�f™hœhÑ'Ô'¨Ð.Ð.Ð.Ð.Ùå& u¨mÑ<Ô<‰JˆC�Ø &šˆJà+×/Ò/°Ñ4Ô4Ð4ˆzð 	õ Ø"Ø#-ðñ ô ð ðð ð ð ñ à”zÔ-×1Ò1°#Ñ6Ô6Ð6ˆtð 7Ø�Ø�
�
à#&§9¢9­ZÑ#8Ô#8Ð ��jØ”zÔ-×1Ò1°#Ñ6Ô6�Øð Ø”:Ô(ð "¨T¬[ð "Ø!ð Ý1ð+ñô ð õ ˜S™6œ6�DØð DØ *ð Dð D˜Ø#œz×7Ò7¸¸dÑCÔC˜˜Ý˜d¥EÑ*Ô*ð 9å  dÔ&7Ñ8Ô8�DÝ˜d¨zÐ:Ñ:Ô:¸EÐAÐAÐAÐAÙà�eˆ|ˆ| ¨¬Ô)BÐ BÐ Bð !ŸYšY s¨AÑ.Ô.‘
��såÝØ'+×'CÒ'CÀEÑ'JÔ'JÐ'JÐ'JÈCÈCÐPÐRTñô ð $.ð	ñ ô ð ðð ð ð ñ àŒzÔð  C¨4¬:Ô+;Ð$;Ð$;Ø˜$œ*Ô1Ð1Ð1åÝ ¥V¨T¬ZÔ-=¸cÔ-BÐ%CÑDÔDØ'1ðñ ô ð ðð ð ð ñ õ  ¥¨¬
Ô(8¸Ô(=Ð >È:ÐVÑVÔVØðð ð ð ñ ð
 ”:Ô(ð ¨T¬[ð õ "¥! C¡&¤&°ZÐ@Ñ@Ô@À%ÐGÐGÐGÐGÑGð  $×6Ò6ØØœ
×+Ò+Ñ-Ô-Ø&3ð  7ñ  ô  ð ð ð ð ð ð ð ñ ð]r	ð r	r0   c                 ó   — g }t          ¦   «         }|                      ¦   «         D �]ç\  }}|                     | j        dd¬¦  «        }|�sA| j        j        �r4| j        �r,|j        }|j        }| j        D ]{\  }}	}
||k    ro| j        j        r/|
| j        j        v r!t          |t          ¦  «        r|
|j        k    sŒG|                     t          |
r|
n|j        j        |¦  «        g¦  «          nœŒ|t!          | j        j        ¦  «        dz   }d|› �}
| j        j        D ].}|j        rt%          d¦  «        ‚|                     ||
¦  «         Œ/| j                             ||
¦  «         |                     t          |
|¦  «        g¦  «         |                      |¦  «        \  }}| j                             |¦  «        d         }t1          |¦  «        }||f|v r�Œ¶|                     ||f¦  «         |                     ||||ff¦  «         �Œé|S )a/  
        Return a list of 2-tuples of the form (expr, (sql, params, is_ref)) for
        the ORDER BY clause.

        The order_by clause can alter the select clause (for example it can add
        aliases to clauses that do not yet have one, or it can add totally new
        select clauses).
        TN)Úallow_joinsÚreusero   Ú__orderbycolz:ORDER BY term does not match any column in the result set.)rr   rå   rÂ   r@   rÕ   rD   r»   Úhas_select_fieldsr°   ru   r   rÑ   Úset_source_expressionsr   r‘   Úcolumnr\   Úcombined_queriesr   Úadd_annotationÚadd_select_colr~   Úordering_partsÚsearchr"   rv   rw   )r+   r‹   rŒ   rƒ   r‰   ÚresolvedÚsrcÚexpr_srcÚsel_exprr…   Ú	col_aliasÚorder_by_idxÚqr‡   rˆ   Úwithout_orderingrŽ   s                    r/   ra   zSQLCompiler.get_order_byß  sj  € ð ˆÝ‰uŒuˆØ ×0Ò0Ñ2Ô2ð /	=ñ /	=‰LˆD�&Ø×.Ò.¨t¬zÀtÐSWÐ.ÑXÔXˆHØñ "K˜dœjÔ3ñ "K¸¼ñ "KØÔ)�Øœ?�Ø.2¬kð Kð KÑ*�H˜a Ø˜h’�ð !œJÔ8ð%à )¨T¬ZÔ-IÐ IÐ Iå *¨8µQÑ 7Ô 7ð !Jà<EÈÌÒ<VÐ<Vð %Ø ×7Ò7Ý ¨iÐ!N  ¸S¼ZÔ=NÐPSÑTÔTÐUñô ð ð ˜ð 'õ$ $' t¤zÔ'8Ñ#9Ô#9¸AÑ#=�LØ =¨|Ð =Ð =�IØ!œZÔ8ð >ð >˜ð Ô.ð Ý"/ð!2ñ#ô #ð ð ×(Ò(¨°9Ñ=Ô=Ð=Ð=Ø”J×-Ò-¨h¸	ÑBÔBÐBØ×3Ò3µS¸ÀCÑ5HÔ5HÐ4IÑJÔJÐJØŸ,š, xÑ0Ô0‰KˆC�ð
  $Ô2×9Ò9¸#Ñ>Ô>¸qÔAÐÝ'¨Ñ/Ô/ˆKØ  +Ð.°$Ð6Ð6ÙØ�HŠHÐ&¨Ð4Ñ5Ô5Ð5Ø�MŠM˜8 c¨6°6Ð%:Ð;Ñ<Ô<Ð<Ñ<Øˆr0   c                 óî   — g }| j         j        rf| j         j        sZd„ |D ¦   «         }|D ]K\  }\  }}}| j                             |¦  «        d         }	|s |	|f|vr|                     ||	|fd f¦  «         ŒL|S )Nc                 ó   — g | ]
}|d          ‘ŒS )ro   r2   )rS   Úts     r/   rœ   z0SQLCompiler.get_extra_select.<locals>.<listcomp>  s   € Ð/Ð/Ð/ 1˜!˜Aœ$Ð/Ð/Ð/r0   ro   )r@   ÚdistinctÚdistinct_fieldsrð   rñ   rw   )
r+   rk   rD   rl   Ú
select_sqlrƒ   r‡   rˆ   r‰   rù   s
             r/   rg   zSQLCompiler.get_extra_select  s¯   € ØˆØŒ:Ôð 	R t¤zÔ'Að 	RØ/Ð/¨Ð/Ñ/Ô/ˆJØ/7ð Rð RÑ+�Ñ+�s˜F FØ#'Ô#6×#=Ò#=¸cÑ#BÔ#BÀ1Ô#EÐ Øð RÐ#3°VÐ"<ÀJÐ"NÐ"NØ ×'Ò'¨Ð0@À&Ð/IÈ4Ð(PÑQÔQÐQøØÐr0   c                 óJ  — || j         v r| j         |         S || j        j        v r|| j        j        vs;|| j        j        v s-| j        j                             |¦  «        r|| j        j        vr|| j         |<   |S | j        j         	                    |¦  «        }|| j         |<   |S )zÛ
        A wrapper around connection.ops.quote_name that doesn't quote aliases
        for table names. This avoids problems with some SQL dialects that treat
        quoted strings specially (e.g. PostgreSQL).
        )
rC   r@   rY   Ú	table_maprl   Úexternal_aliasesr   r5   ÚopsÚ
quote_name)r+   rÑ   Úrs      r/   rÙ   z#SQLCompiler.quote_name_unless_alias&  sº   € ð �4Ô#Ð#Ð#ØÔ# DÔ)Ð)à�T”ZÔ)Ð)Ð)¨d¸$¼*Ô:NÐ.NÐ.NØ�t”zÔ.Ð.Ð.à”
Ô+×/Ò/°Ñ5Ô5ð /ð  ¤
Ô 4Ð4Ð4ð &*ˆDÔ˜TÑ"ØˆKØŒOÔ×*Ò*¨4Ñ0Ô0ˆØ!"ˆÔ˜ÑØˆr0   c                 ó°   — t          |d| j        j        z   d ¦  «        }|r || | j        ¦  «        \  }}n|                     | | j        ¦  «        \  }}||fS )NÚas_)r™   r5   Úvendorr6   )r+   ÚnodeÚvendor_implr‡   rˆ   s        r/   r~   zSQLCompiler.compile<  sa   € Ý˜d E¨D¬OÔ,BÑ$BÀDÑIÔIˆØð 	=Ø%˜+ d¨D¬OÑ<Ô<‰KˆC��àŸ+š+ d¨D¬OÑ<Ô<‰KˆC�Ø�Fˆ{Ðr0   c                 óz  ‡ ‡— ‰ j         j        }ˆ fd„‰ j        j        D ¦   «         }|j        sC|D ]@}|j        j        rt          d¦  «        ‚|                     ¦   «         rt          d¦  «        ‚ŒAg }d }|D ]L}	 |                     ‰  	                    |¦  «        ¦  «         Œ,# t          $ r |dk    s|dk    r|r|}Y ŒH‚ w xY w|st          ‚t          |¦  «        dk    rA|dk    r;‰ j        j        r/d|_        |                     ‰  	                    |¦  «        ¦  «         ‰ j         j        j        |         }|r|dk    r|dz  }d	Š‰ j        j        s	|j        rd
Št!          ˆfd„|D ¦   «         Ž \  }	}
d                     |¦  «                             |	¦  «        g}g }|
D ]}|                     |¦  «         Œ||fS )Nc                 ó\   •— g | ](}|                      ‰j        ‰j        ‰j        ¦  «        ‘Œ)S r2   )Úget_compilerrA   r5   rB   )rS   r@   r+   s     €r/   rœ   z2SQLCompiler.get_combinator_sql.<locals>.<listcomp>F  sB   ø€ ð 
ð 
ð 
àð ×Ò˜tœz¨4¬?¸DÔ<LÑMÔMð
ð 
ð 
r0   z>LIMIT/OFFSET not allowed in subqueries of compound statements.z:ORDER BY not allowed in subqueries of compound statements.ÚunionÚ
differencero   Fz ALLz{}ú({})c              3   óL   •K  — | ]\  }}‰                      |¦  «        |fV — Œd S r'   )Úformat)rS   r‡   r    Úbracess      €r/   rU   z1SQLCompiler.get_combinator_sql.<locals>.<genexpr>q  s8   øè è € Ð@Ð@©Y¨S°$ˆv�}Š}˜SÑ!Ô! 4Ð(Ð@Ð@Ð@Ð@Ð@Ð@r0   z {} )r5   r|   r@   rí   Ú%supports_slicing_ordering_in_compoundÚ	is_slicedr   ra   rw   Ú_get_combinator_part_sqlr   r\   rB   r  Úset_operatorsÚsubqueryÚzipr  Újoinry   )r+   rÕ   rX   r|   Ú	compilersr4   ÚpartsÚempty_compilerÚcombinator_sqlÚ	sql_partsÚ
args_partsr‹   rˆ   Úpartr  s   `             @r/   Úget_combinator_sqlzSQLCompiler.get_combinator_sqlD  sZ  øø€ Ø”?Ô+ˆð
ð 
ð 
ð 
àœÔ4ð
ñ 
ô 
ˆ	ð Ô=ð 		Ø%ð ð �Ø”>Ô+ð Ý'ØXñô ð ð ×(Ò(Ñ*Ô*ð Ý'ØTñô ð ðð ˆØˆØ!ð 		ð 		ˆHðØ—’˜T×:Ò:¸8ÑDÔDÑEÔEÐEÐEøÝ!ð ð ð ð  Ò(Ð(¨Z¸<Ò-GÐ-GÈEÐ-GØ%-�NØ�HØðøøøð ð 		HÝ Ð Ý�‰ZŒZ˜1Š_ˆ_ ¨wÒ!6Ð!6¸4¼:Ô;OÐ!6ð */ˆNÔ&Ø�LŠL˜×6Ò6°~ÑFÔFÑGÔGÐGØœÔ,Ô:¸:ÔFˆØð 	%�: Ò(Ð(Ø˜fÑ$ˆNØˆØŒzÔ"ð 	 xÔ'Uð 	ØˆFÝ #Ø@Ð@Ð@Ð@¸%Ð@Ñ@Ô@ð!
Ñˆ	�:ð —-’- Ñ/Ô/×4Ò4°YÑ?Ô?Ð@ˆØˆØð 	 ð 	 ˆDØ�MŠM˜$ÑÔÐÐØ�vˆ~Ðs   Á:(B#Â#CÂ?Cc                 óì  — | j         j        }| j        j        }|�D|j        j        €8|j                             ¦   «         |_        |j                             |¦  «         |                     d¬¦  «        \  }}|j        j        rF|j        sd 	                    |¦  «        }nQ| j        j
        s|j        sd 	                    |¦  «        }n(| j        j
        r|j        rd 	                    |¦  «        }||fS )NTrV   zSELECT * FROM ({})r  )r5   r|   r@   r®   ÚcloneÚ
set_valuesr6   rÕ   Ú supports_parentheses_in_compoundr  r  r  )r+   r4   r|   r®   Úpart_sqlÚ	part_argss         r/   r  z$SQLCompiler._get_combinator_part_sqly  sû   € Ø”?Ô+ˆð ”:Ô&ˆØÐ H¤NÔ$;Ð$CØ%œ^×1Ò1Ñ3Ô3ˆHŒNØŒN×%Ò% hÑ/Ô/Ð/Ø&Ÿošo¸t˜oÑDÔDÑˆ�)ØŒ>Ô$ð 	/ð Ô<ð 3Ø/×6Ò6°xÑ@Ô@��ð ”
Ô#ð3àÔEð3ð "Ÿ=š=¨Ñ2Ô2�øØŒZÔ ð 	/ XÔ%Sð 	/Ø—}’} XÑ.Ô.ˆHØ˜Ð"Ð"r0   c                 óv  ‡ ‡‡‡‡‡— g }‰ j         r|                     ‰ j         ¦  «         ‰ j        r|                     ‰ j        ¦  «         ‰ j                             ¦   «         Šd‰_        ‰j                              |¦  «        ‰_         d„ ‰                      d¬¦  «        d         D ¦   «         Št          ‰ 	                    ¦   «         ¦  «        Št          ¦   «         Ši Šˆˆˆˆˆfd„} |t          ‰ j                             ¦   «         ¦  «        ¦  «         ‰ j                             d„ ‰                     ¦   «         D ¦   «         ¦  «        ‰ _        g }‰                      ¦   «         D ]e^}} ||                     ¦   «         ¦  «         |                     |                     d„ ‰                     ¦   «         D ¦   «         ¦  «        ¦  «         Œf‰                     ‰ j        ‰ j        ‰ j        ¬¦  «        }|                     d	d¬
¦  «        \  }}‰                      ‰ j        ¦  «        \  }	}
d|d‰ j        j                             d¦  «        d|	g}‰r[ˆ fd„‰ 	                    ¦   «         D ¦   «         }dd                     |¦  «        dg|¢d‘‰ j        j                             d¦  «        ‘}t          |¦  «        |
z   }|rsg }|D ]D}‰                      |¦  «        \  }}|                     |¦  «         |                     |¦  «         ŒE|                     dd                     |¦  «        g¦  «         ||fS )NTc                 ó   — i | ]	\  }}}||“Œ
S r2   r2   )rS   rƒ   r…   r†   s       r/   ú
<dictcomp>z/SQLCompiler.get_qualify_sql.<locals>.<dictcomp>   s-   € ð 
ð 
ð 
Ù*˜D ! UˆD�%ð
ð 
ð 
r0   rV   r   c                 ó  •— | �r|                       ¦   «         }|‰v rŒ‰                     |¦  «        x}r|‰|<   nÇt          |t          ¦  «        r(|                      |                     ¦   «         ¦  «         nŠt          |t          ¦  «        r1|j        ‰vr'|                      |                     ¦   «         ¦  «         nDt          ‰¦  «        }d|› �}‰ 	                    |¦  «         ‰ 
                    ||¦  «         |‰|<   | °ÿd S d S )NÚqual)Úpopr   ru   r   ry   Úget_source_expressionsr   r,   r\   rv   rî   )	r�   rƒ   Úselect_aliasÚnum_qual_aliasÚinner_queryÚqual_aliasesÚreplacementsrD   Úselect_aliasess	       €€€€€r/   Úcollect_replacementsz9SQLCompiler.get_qualify_sql.<locals>.collect_replacements§  s/  ø€ Øñ 6Ø"—’Ñ(Ô(�Ø˜<Ð'Ð'ØØ%+§Z¢Z°Ñ%5Ô%5Ð5�\ð 6Ø)5�L Ñ&Ð&Ý ¥fÑ-Ô-ð 
6Ø×&Ò& t×'BÒ'BÑ'DÔ'DÑEÔEÐEÐEÝ ¥cÑ*Ô*ð 6Ø”y¨Ð6Ð6Ø#×*Ò*¨4×+FÒ+FÑ+HÔ+HÑIÔIÐIøå%(¨Ñ%6Ô%6�NØ#:¨.Ð#:Ð#:�LØ ×$Ò$ \Ñ2Ô2Ð2Ø×.Ò.¨t°\ÑBÔBÐBØ)5�L Ñ&ð! ð 6ð 6ð 6ð 6ð 6r0   c                 ó6   — i | ]\  }}|t          ||¦  «        “ŒS r2   ©r   ©rS   rƒ   r†   s      r/   r+  z/SQLCompiler.get_qualify_sql.<locals>.<dictcomp>¼  s(   € ÐLÐLÐL©¨¨eˆT•3�u˜dÑ#Ô#ÐLÐLÐLr0   c                 ó6   — i | ]\  }}|t          ||¦  «        “ŒS r2   r8  r9  s      r/   r+  z/SQLCompiler.get_qualify_sql.<locals>.<dictcomp>Ã  s(   € ÐTÐTÐT±°°e�T�3˜u dÑ+Ô+ÐTÐTÐTr0   )r5   rB   F)Úwith_limitsrW   úSELECT * FROM (ú)rf   ÚWHEREc                 óN   •— g | ]!}‰j         j                             |¦  «        ‘Œ"S r2   )r5   r  r  )rS   r†   r+   s     €r/   rœ   z/SQLCompiler.get_qualify_sql.<locals>.<listcomp>Ý  s,   ø€ ÐWÐWÐW¸e�D”OÔ'×2Ò2°5Ñ9Ô9ÐWÐWÐWr0   ÚSELECTú, zFROM (Úqualify_maskzORDER BY)rb   rw   re   r@   r$  r  r.   r[   rr   Úvaluesr±   rf   ÚleavesÚreplace_expressionsr¯   ra   r/  r  rA   r5   rB   r6   r~   r  r  r  ry   )r+   Úwhere_partsr6  rk   Úorder_by_exprr…   Úinner_query_compilerÚ	inner_sqlÚinner_paramsÚqualify_sqlÚqualify_paramsr‹   r¹   rˆ   Úordering_sqlsrË   Úordering_sqlÚordering_paramsr2  r3  r4  rD   r5  s   `                 @@@@@r/   Úget_qualify_sqlzSQLCompiler.get_qualify_sql“  s§  øøøøøø€ ØˆØŒ:ð 	+Ø×Ò˜tœzÑ*Ô*Ð*ØŒ;ð 	,Ø×Ò˜tœ{Ñ+Ô+Ð+Ø”j×&Ò&Ñ(Ô(ˆØ#ˆÔØ'Ô-×7Ò7¸ÑDÔDˆÔð

ð 
Ø.2¯oªoÈt¨oÑ.TÔ.TÐUVÔ.Wð
ñ 
ô 
ˆõ ˜VŸ]š]™_œ_Ñ-Ô-ˆÝ‘u”uˆØˆð	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð& 	Ð�T $¤,×"5Ò"5Ñ"7Ô"7Ñ8Ô8Ñ9Ô9Ð9Ø”|×7Ò7ØLÐL°|×7IÒ7IÑ7KÔ7KÐLÑLÔLñ
ô 
ˆŒð ˆØ!%×!2Ò!2Ñ!4Ô!4ð 	ð 	ÐˆM˜AØ Ð  ×!EÒ!EÑ!GÔ!GÑHÔHÐHØ�OŠOØ×1Ò1ØTÐT¸|×?QÒ?QÑ?SÔ?SÐTÑTÔTñô ñô ð ð ð
  +×7Ò7ØŒJ 4¤?ÀÔ@Pð  8ñ  
ô  
Ðð #7×"=Ò"=ð ð "ð #>ñ #
ô #
Ñˆ	�<ð '+§l¢l°4´<Ñ&@Ô&@Ñ#ˆ�^àØØØŒOÔ×*Ò*¨9Ñ5Ô5ØØð
ˆð ð 	ð XÐWÐWÐWÀvÇ}Â}ÁÄÐWÑWÔWˆDàØ—	’	˜$‘”Øðð ð	ð
 ðð ”Ô#×.Ò.¨~Ñ>Ô>ðˆFõ �lÑ#Ô# nÑ4ˆð ð 	BØˆMØ$ð /ð /�Ø04·²¸XÑ0FÔ0FÑ-�˜oØ×$Ò$ \Ñ2Ô2Ð2Ø—’˜oÑ.Ô.Ð.Ð.Ø�MŠM˜: t§y¢y°Ñ'?Ô'?Ð@ÑAÔAÐAØ�vˆ~Ðr0   c                 ó0  — | j         j                             ¦   «         }	 | j         j        }|                      |pt          |¦  «        ¬¦  «        \  }}}d}|o| j         j        }	| j         j        }| j        j        }
|rjt          |
d 
                    |¦  «        ¦  «        s"t          d 
                    |¦  «        ¦  «        ‚|                      || j         j        ¦  «        \  }}�nQ| j        r|                      ¦   «         \  }}d}�n/|                      ¦   «         \  }}|                      ¦   «         \  }}	 | j        �|                      | j        ¦  «        ndg f\  }}n+# t(          $ r | j        r‚ dg }}Y nt,          $ r dg }}Y nw xY w	 | j        �|                      | j        ¦  «        ndg f\  }}n# t,          $ r dg }}Y nw xY wdg}g }| j         j        r-| j        j                             ||¦  «        \  }}||z  }||z  }g }| j        |z   D ]Y\  }\  }}}|r$|›d| j        j                             |¦  «        ›�}|                     |¦  «         |                     |¦  «         ŒZ|d	                     |¦  «        gz  }|r	|d
g|¢z  }n&| j        j        j         r|| j        j        j         gz  }|                     |¦  «         | j         j!        �r|
j"        �r| j         #                    ¦   «         r|
j$        rtK          d¦  «        ‚|	r|
j&        st          d¦  «        ‚| j         j'        }| j         j(        }| j         j)        }| j         j*        }|r|
j+        st          d¦  «        ‚|r|
j,        st          d¦  «        ‚|r|
j-        st          d¦  «        ‚|r|
j.        st          d¦  «        ‚| j        j         /                    |||  0                    ¦   «         |¬¦  «        }|r|
j1        r|                     |¦  «         |r-|                     d|z  ¦  «         |                     |¦  «         g }|D ]/\  } }!|                     | ¦  «         |                     |!¦  «         Œ0|re|rte          d¦  «        ‚|p| j        j         3                    ¦   «         }|                     dd	                     |¦  «        z  ¦  «         | j4        rd}|r`|s1|                     | j        j         5                    ¦   «         ¦  «         |                     d|z  ¦  «         |                     |¦  «         | j         j6        rJ| 7                    d | j        j        j8        | j         j6        j
        fi | j         j6        j9        ¤Ž¦  «         |rxg }"|D ]3\  }\  }#}$}|"                     |#¦  «         |                     |$¦  «         Œ4dd	                     |"¦  «        z  }%|r|
j:        r
dg|¢d‘|%‘}n|                     |%¦  «         |	rG|                     | j        j         ;                    | j         j<        | j         j=        ¦  «        ¦  «         |r|
j1        s|                     |¦  «         | j         j>        �r=|�r:g }&g }'t          | j        d¬¦  «        D ]Ä\  }(\  })}}|rU|&                     | j        j                             d¦  «        ›d| j        j                             |¦  «        ›�¦  «         Œ`|) @                    |)jA        di¦  «        }*|* B                    | | j        ¦  «        \  }+},|&                     |+¦  «         |'                     |,¦  «         ŒÅdd	                     |&¦  «        ›dd                      |¦  «        ›d!�t‡          |'|z   ¦  «        f| j          D                    |¦  «         S d                      |¦  «        t‡          |¦  «        f| j          D                    |¦  «         S # | j          D                    |¦  «         w xY w)"zÍ
        Create the SQL for this query. Return the SQL string and list of
        parameters.

        If 'with_limits' is False, any limit/offset information is not included
        in the query.
        rV   Nzsupports_select_{}z-{} is not supported on this database backend.Ú z0 = 1r@  z AS rA  ÚFROMz:select_for_update cannot be used outside of a transaction.zNLIMIT/OFFSET is not supported with select_for_update on this database backend.z1NOWAIT is not supported on this database backend.z6SKIP LOCKED is not supported on this database backend.z8FOR UPDATE OF is not supported on this database backend.z<FOR NO KEY UPDATE is not supported on this database backend.)ÚnowaitÚskip_lockedÚofÚno_keyúWHERE %sz1annotate() + distinct(fields) is not implemented.zGROUP BY %sz	HAVING %sr   zORDER BY %sr<  r=  ro   rp   r  rÆ   úSELECT ú FROM (ú ú
) subquery)Er@   rR   rÏ   rÕ   rm   rh   r  r5   r|   r™   r  r	   r"  Úcombinator_allrf   rP  Úget_distinctÚget_from_clauserb   r~   r   rB   r   re   rý   r  Údistinct_sqlrD   r  ry   rw   r  Úbare_select_suffixÚselect_for_updateÚhas_select_for_updateÚget_autocommitÚsupports_transactionsr    Ú%supports_select_for_update_with_limitÚselect_for_update_nowaitÚselect_for_update_skip_lockedÚselect_for_update_ofÚselect_for_no_key_updateÚhas_select_for_update_nowaitÚ!has_select_for_update_skip_lockedÚhas_select_for_update_ofÚhas_select_for_no_key_updateÚfor_update_sqlÚ"get_select_for_update_of_argumentsÚfor_update_after_fromr×   Úforce_no_orderingrG   Úforce_group_byÚexplain_infoÚinsertÚexplain_query_prefixÚoptionsÚ#requires_compound_order_by_subqueryÚlimit_offset_sqlÚlow_markÚ	high_markr  rx   Úrelabeled_cloner†   r6   ÚtupleÚreset_refcounts)-r+   r;  rW   Úrefcounts_beforerÕ   rl   rk   rd   Úfor_update_partÚwith_limit_offsetr|   r‹   rˆ   rþ   Údistinct_paramsÚfrom_Úf_paramsrb   Úw_paramsre   Úh_paramsÚdistinct_resultÚout_colsr…   Ús_sqlÚs_paramsr†   rT  rU  rV  rW  ÚgroupingÚg_sqlÚg_paramsrË   Úo_sqlÚo_paramsÚorder_by_sqlÚsub_selectsÚ
sub_paramsrº   rD   Úselect_cloneÚ	subselectÚ	subparamss-                                                r/   r6   zSQLCompiler.as_sqló  s¼	  € ð  œ:Ô4×9Ò9Ñ;Ô;ÐðX	9ØœÔ.ˆJØ/3×/AÒ/AØ!1Ð!EµT¸*Ñ5EÔ5Eð 0Bñ 0ô 0Ñ,ˆL˜( Hð #ˆOà +Ð D°´
Ô0DÐØœÔ.ˆJØ”Ô/ˆHØð K,Ý˜xÐ)=×)DÒ)DÀZÑ)PÔ)PÑQÔQð Ý+ØG×NÒNØ&ñô ñô ð ð
 "&×!8Ò!8Ø ¤
Ô 9ñ"ô "‘�˜™ð ”ð A,Ø!%×!5Ò!5Ñ!7Ô!7‘�˜Ø�‘à37×3DÒ3DÑ3FÔ3FÑ0� ð #'×"6Ò"6Ñ"8Ô"8‘��xð
-à48´JÐ4J˜Ÿš T¤ZÑ0Ô0Ð0ÐQSÐUWÐPXñ $�E˜8˜8øõ &ð 2ð 2ð 2ØÔ'ð Øà&-¨r˜8�E�E�EÝ$ð -ð -ð -Ø&(¨"˜8�E�E�Eð-øøøð.ð  œ;Ð2ð Ÿš T¤[Ñ1Ô1Ð1à  "˜Xñ %�F˜H˜Høõ
 %ð .ð .ð .Ø')¨2˜H�F�F�Fð.øøøà"˜�Ø�à”:Ô&ð .Ø7;´Ô7J×7WÒ7WØ'Ø'ñ8ô 8Ñ4�O _ð ˜oÑ-�FØ˜oÑ-�Fà�Ø37´;ÀÑ3Mð +ð +Ñ/�AÑ(˜˜x¨%Øð à!˜E˜EØ œOÔ/×:Ò:¸5ÑAÔAÐAð!˜ð —M’M (Ñ+Ô+Ð+Ø—O’O EÑ*Ô*Ð*Ð*à˜4Ÿ9š9 XÑ.Ô.Ð/Ñ/�Øð LØ˜vÐ.¨Ð.Ñ.�F�FØ”_Ô-Ô@ð LØ˜tœÔ7ÔJÐKÑK�FØ—’˜hÑ'Ô'Ð'à”:Ô/ñ 0°HÔ4Rñ 0àœ×6Ò6Ñ8Ô8ðð %Ô:ð	õ 9ØXñô ð ð
 *ðà (Ô Nðõ 0ðJñô ð ð "œZÔ@�FØ"&¤*Ô"J�KØœÔ8�BØ!œZÔ@�Fð ð  hÔ&Kð Ý/ØOñô ð ð %ð ¨XÔ-Wð Ý/ØTñô ð ð ð  HÔ$Eð Ý/ØVñô ð ð  ð ¨Ô(Mð Ý/ð0ñô ð ð '+¤oÔ&9×&HÒ&HØ%Ø$/Ø×BÒBÑDÔDØ%ð	 'Iñ 'ô '�Oð #ð 3 xÔ'Eð 3Ø—M’M /Ñ2Ô2Ð2àð ,Ø—M’M *¨uÑ"4Ñ5Ô5Ð5Ø—M’M (Ñ+Ô+Ð+à�Ø'/ð ,ð ,‘O�E˜8Ø—O’O EÑ*Ô*Ð*Ø—M’M (Ñ+Ô+Ð+Ð+Øð (Ø&ð Ý1ØOñô ð ð  (ÐR¨4¬?Ô+>×+PÒ+PÑ+RÔ+R�HØ—M’M -°$·)²)¸HÑ2EÔ2EÑ"EÑFÔFÐFØÔ*ð (Ø#'˜Øð ,Ø#ð LØŸš d¤oÔ&9×&HÒ&HÑ&JÔ&JÑKÔKÐKØ—M’M +°Ñ"6Ñ7Ô7Ð7Ø—M’M (Ñ+Ô+Ð+àŒzÔ&ð Ø—’ØØ<�D”OÔ'Ô<Øœ
Ô/Ô6ðð àœ*Ô1Ô9ðð ñô ð ð ð 	0Ø�Ø/7ð ,ð ,Ñ+�AÑ+˜˜x¨Ø—O’O EÑ*Ô*Ð*Ø—M’M (Ñ+Ô+Ð+Ð+Ø,¨t¯yªy¸Ñ/BÔ/BÑB�Øð 0 (Ô"Nð 0Ø/ÐL°&ÐL¸#ÐL¸|ÐL�F�Fà—M’M ,Ñ/Ô/Ð/à ð Ø—’Ø”OÔ'×8Ò8Øœ
Ô+¨T¬ZÔ-Añô ñô ð ð ð / xÔ'Eð /Ø—’˜oÑ.Ô.Ð.àŒzÔ"ñ . |ñ .ð !�Ø�
Ý1:¸4¼;ÈaÐ1PÑ1PÔ1Pð 5ð 5Ñ-�EÑ-˜F A uØð 5Ø#×*Ò*ð !%¤Ô 3× >Ò >¸zÑ JÔ JÐ JÐ JØ $¤Ô 3× >Ò >¸uÑ EÔ EÐ Eðñô ð ð ð (.×'=Ò'=Ø#œ\¨:Ð6ñ(ô (˜ð 0<×/BÒ/BØ  $¤/ñ0ô 0Ñ,˜	 9ð $×*Ò*¨9Ñ5Ô5Ð5Ø"×)Ò)¨)Ñ4Ô4Ð4Ð4ð#5ð& —I’I˜kÑ*Ô*Ð*Ð*Ø—H’H˜VÑ$Ô$Ð$Ð$ðõ ˜ fÑ,Ñ-Ô-ð.ð ŒJ×&Ò&Ð'7Ñ8Ô8Ð8Ð8ð —8’8˜FÑ#Ô#¥U¨6¡]¤]Ð2ð ŒJ×&Ò&Ð'7Ñ8Ô8Ð8Ð8øˆDŒJ×&Ò&Ð'7Ñ8Ô8Ð8Ð8øøøsg    D_9 Ä:(E# Å"_9 Å#FÅ9_9 Å;FÆ_9 Æ
FÆ_9 Æ(F8 Æ7_9 Æ8G	Ç_9 ÇG	Ç	W_9 Þ;#_9 ß9`Nc                 ó  — g }|€| j                              ¦   «         x}€|S |p| j                              ¦   «         }d|i}t          t	          j        |¦  «        ¦  «        }|j        D ]—}|j        j        j	        }	|	|j        k    rd}	|r'|	�%t          |j        j	        |	j        j	        ¦  «        rŒI|r||vrŒP| j                              ||	||¦  «        }
|                     |
¦  «        }|                     |¦  «         Œ˜|S )aT  
        Compute the default columns for selecting every field in the base
        model. Will sometimes be called to pull in related models (e.g. via
        select_related), in which case "opts" and "start_alias" will be given
        to provide a starting point for the traversal.

        Return a list of strings, quoted appropriately for use in SQL
        directly, as well as a set of aliases used in the select statement (if
        'as_pairs' is True, return a list of (alias, col_name) pairs instead
        of strings as the first component and None as the second component).
        N)r@   rÊ   rZ   rr   r   ÚunnestÚconcrete_fieldsrK   Ú_metaÚconcrete_modelÚ
issubclassÚjoin_parent_modelÚget_colrw   )r+   r¸   Ústart_aliasÚoptsr¦   r‹   Úseen_modelsÚselect_mask_fieldsrß   rK   r†   rì   s               r/   r­   zSQLCompiler.get_default_columnsÖ  s-  € ð ˆØˆ<Øœ
×+Ò+Ñ-Ô-Ð-�Ð6Ø�Ø!ÐC T¤Z×%AÒ%AÑ%CÔ%Cˆð ˜[Ð)ˆÝ ¥Ô!1°+Ñ!>Ô!>Ñ?Ô?ÐàÔ)ð 	"ð 	"ˆEØ”KÔ%Ô4ˆEð ˜œ
Ò"Ð"Ø�àðàÐ%ÝØÔ%Ô4°e´kÔ6Pñô ð &ð Øð ˜uÐ,>Ð>Ð>ØØ”J×0Ò0°°u¸kÈ;ÑWÔWˆEØ—]’] 5Ñ)Ô)ˆFØ�MŠM˜&Ñ!Ô!Ð!Ð!Øˆr0   c                 ó8  — g }g }| j                              ¦   «         }| j         j        D ]í}|                     t          ¦  «        }|                      ||d¦  «        \  }}}}	}
}}| j                              ||	|
¦  «        \  }}}|D ]�}|| j         j        v r3|                     | j	        j
                             |¦  «        ¦  «         ŒC|                       |||¦  «        ¦  «        \  }}|                     |¦  «         |                     |¦  «         Œ�Œî||fS )zÎ
        Return a quoted list of fields to use in DISTINCT ON part of the query.

        This method can alter the tables in the query, and thus it must be
        called before get_from_clause().
        N)r@   rÊ   rþ   rÖ   r
   Ú_setup_joinsÚ
trim_joinsr°   rw   r5   r  r  r~   )r+   r‹   rˆ   rŸ  rÑ   r  r…   Útargetsr†   ÚjoinsÚpathÚtransform_functionr‘   r  Úps                  r/   r^  zSQLCompiler.get_distinct	  s8  € ð ˆØˆØŒz×"Ò"Ñ$Ô$ˆà”JÔ.ð 	%ð 	%ˆDØ—J’J�zÑ*Ô*ˆEØDH×DUÒDUØ�t˜TñEô EÑAˆAˆw˜˜u d¨AÐ/Að !%¤
× 5Ò 5°g¸uÀdÑ KÔ KÑˆG�U˜AØ!ð %ð %�Ø˜4œ:Ô7Ð7Ð7Ø—M’M $¤/Ô"5×"@Ò"@ÀÑ"FÔ"FÑGÔGÐGÐGàŸ<š<Ð(:Ð(:¸6À5Ñ(IÔ(IÑJÔJ‘D�A�qØ—M’M !Ñ$Ô$Ð$Ø—M’M !Ñ$Ô$Ð$Ð$ð%ð �vˆ~Ðr0   rÀ   c                 óü  ‡ ‡‡‡‡— t          ‰|¦  «        \  Š}|dk    Š‰                     t          ¦  «        }‰                      ||‰¦  «        \  }}	Š}
}}Š|j        �rn|j        �rft          |dd¦  «        |d         k    �rJ‰dk    �rCt          ‰dd¦  «        �s1|pt          ¦   «         }t          ˆ fd„|
D ¦   «         ¦  «        }||v rt          d	¦  «        ‚| 
                    |¦  «         g }|j        D ]Ò}t          |d
¦  «        r?t          |t          ¦  «        s*‰r|                     ¦   «         n|                     ¦   «         }t          |t          ¦  «        r4|                     |                     ‰› t          › �¦  «        df¦  «         Œš|                     ˆfd„‰                      ||‰||¦  «        D ¦   «         ¦  «         ŒÓ|S ‰ j                             |	|
|¦  «        \  }	Š}ˆˆˆfd„|	D ¦   «         S )zâ
        Return the table alias (the name might be ambiguous, the alias will
        not be) and column name for ordering by the given 'name' parameter.
        The 'name' is of the form 'field1__field2__...__fieldN'.
        rÁ   ÚattnameNéÿÿÿÿÚpkÚhas_transformsFc              3   óZ   •K  — | ]%}t          ‰j        j        |         d d¦  «        V — Œ&dS )Ú	join_colsN)r™   r@   rY   )rS   Újr+   s     €r/   rU   z1SQLCompiler.find_ordering_name.<locals>.<genexpr>E  sJ   øè è € ð ð ØHI•˜œ
Ô,¨QÔ/°¸dÑCÔCðð ð ð ð ð r0   z!Infinite loop caused by ordering.rÂ   c              3   ó^   •K  — | ]'\  }}|                      ‰› t          › �¦  «        |fV — Œ(d S r'   )Úprefix_referencesr
   )rS   rƒ   r‰   rÑ   s      €r/   rU   z1SQLCompiler.find_ordering_name.<locals>.<genexpr>W  sY   øè è € ð ð á$˜˜fð ×+Ò+¨tÐ,AµZÐ,AÐ,AÑBÔBÀFÐKðð ð ð ð ð r0   c                 óJ   •— g | ]}t           ‰|‰¦  «        ‰¬ ¦  «        df‘Œ S )rÄ   F)r   )rS   rü   r†   rÅ   r¨  s     €€€r/   rœ   z2SQLCompiler.find_ordering_name.<locals>.<listcomp>_  sI   ø€ ð 
ð 
ð 
àõ Ð'Ð'¨¨5Ñ1Ô1¸jÐIÑIÔIÈ5ÐQð
ð 
ð 
r0   )r   rÖ   r
   r£  Úis_relationrË   r™   rr   r}  r   rv   rs   ru   r   ÚdescrÎ   rw   r³  ry   rÛ   r@   r¤  )r+   rÑ   rŸ  r†   rÇ   Úalready_seenrá   Úpiecesrß   r¥  r¦  r§  Ú
join_tupleÚresultsÚitemr…   rÅ   r¨  s   `` `            @@r/   rÛ   zSQLCompiler.find_ordering_name#  s˜  øøøøø€ õ $ D¨-Ñ8Ô8‰ˆˆeØ˜f’_ˆ
Ø—’�JÑ'Ô'ˆð ×Ò˜f d¨EÑ2Ô2ñ	
ØØØØØØØð Ôñ!	à”ñ!	õ ˜˜y¨$Ñ/Ô/°6¸"´:Ò=Ñ=Ø˜’‘ÝÐ.Ð0@À%ÑHÔHñ ð (Ð0­3©5¬5ˆLÝð ð ð ð ØMRðñ ô ñ ô ˆJð ˜\Ð)Ð)Ý Ð!DÑEÔEÐEØ×Ò˜ZÑ(Ô(Ð(àˆGØœð ð �Ý˜4Ð!5Ñ6Ô6ð E½zØ�'ñ@ô @ð Eð +5ÐD˜4Ÿ9š9™;œ;˜;¸$¿(º(¹*¼*�DÝ˜d¥GÑ,Ô,ð Ø—N’NØ×/Ò/°4Ð0E½Ð0EÐ0EÑFÔFÈÐNñô ð ð Ø—’ð ð ð ð à(,×(?Ò(?Ø˜d E¨5°,ñ)ô )ðñ ô ñ ô ð ð ð ˆNØ œJ×1Ò1°'¸5À$ÑGÔGÑˆ�˜ð
ð 
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ð 	
r0   c                 ó    — |p| j                              ¦   «         }| j                              |||¦  «        \  }}}}}}|d         }|||||||fS )a$  
        Helper method for get_order_by() and get_distinct().

        get_ordering() and get_distinct() must produce same target columns on
        same input, as the prefixes of get_ordering() and get_distinct() must
        match. Executing SQL where this is not true is an error.
        r¬  )r@   rZ   Úsetup_joins)	r+   r¸  rŸ  r†   rß   r¥  r¦  r§  r¨  s	            r/   r£  zSQLCompiler._setup_joinsd  sk   € ð Ð7˜œ×5Ò5Ñ7Ô7ˆØ@DÄ
×@VÒ@VØ�D˜%ñA
ô A
Ñ=ˆˆw˜˜e TÐ+=ð �b”	ˆØ�g˜u e¨T°4Ð9KÐKÐKr0   c                 ó  — g }g }t          | j        j                             ¦   «         ¦  «        D ]Z\  }}| j        j        |         sŒ|                      |¦  «        \  }}|                     |¦  «         |                     |¦  «         Œ[| j        j        D ]n}| j         	                    |¦  «        \  }}|| j        j        vs| j        j        |         dk    r+|                     d|  
                    |¦  «        z  ¦  «         Œo||fS )aÛ  
        Return a list of strings that are joined together to go after the
        "FROM" part of the query, as well as a list any extra parameters that
        need to be included. Subclasses, can override this to create a
        from-clause via a "select".

        This should only be called after any SQL construction methods that
        might change the tables that are needed. This means the select columns,
        ordering, and distinct must be done first.
        ro   z, %s)r}  r@   rY   r¯   rR   r~   rw   ry   Úextra_tablesÚtable_aliasrÙ   )	r+   r‹   rˆ   r†   Úfrom_clauseÚ
clause_sqlÚclause_paramsrü   r…   s	            r/   r_  zSQLCompiler.get_from_clauses  s  € ð ˆØˆõ #(¨¬
Ô(<×(BÒ(BÑ(DÔ(DÑ"EÔ"Eð 	)ð 	)ÑˆE�;Ø”:Ô,¨UÔ3ð ØØ(,¯ª°[Ñ(AÔ(AÑ%ˆJ˜Ø�MŠM˜*Ñ%Ô%Ð%Ø�MŠM˜-Ñ(Ô(Ð(Ð(Ø”Ô(ð 		Lð 		LˆAØ”z×-Ò-¨aÑ0Ô0‰HˆE�1ð
 ˜TœZÔ1Ð1Ð1Ø”:Ô,¨UÔ3°qÒ8Ð8à—’˜f t×'CÒ'CÀEÑ'JÔ'JÑJÑKÔKÐKøØ�vˆ~Ðr0   ro   c           
      ó4  ‡ ‡— ˆˆ fd„}g }	|s|‰ j         j        k    r|	S ‰s2‰ j                              ¦   «         Š‰ j                              ¦   «         }t	          ¦   «         }
|€-t          ‰ j         j        t          ¦  «        }|r‰ j         j        }d„ }‰j        D �]Ç}|
 	                    |j
        ¦  «         |re|                     |j
        i ¦  «        }|j        sB|s	|j
        |v r7t          d|j
        ›dd                      |¦   «         ¦  «        pd›�¦  «        ‚nd}t          ||||¦  «        sŒ™|                     |¦  «        pi }|j        j        |d|j        |j        r|j        j        nd	„ dd
œ}|	                     |¦  «         g }‰ j                              |j
        g‰|¦  «        \  }}}}}}|d         }‰                      |||j        j        j        ¬¦  «        }|D ];}|                     t1          |¦  «        ¦  «         |                     |df¦  «         Œ<||d<   ‰                      |||j        j        j        ||dz   ||¦  «        } |||¦  «         �ŒÉ|�r²d„ ‰j        D ¦   «         }|D �]w\  }}}t          ||||¦  «        sŒ|                     |¦  «        pi }|                     ¦   «         }|
 	                    |¦  «         ‰ j                              |g‰|¦  «        }|j        d         }t;          |‰j        ¦  «        o|‰j        u}||d|j        |j        |d
œ}|	                     |¦  «         g }‰                      |||j        ‰j        ¬¦  «        }|D ];}|                     t1          |¦  «        ¦  «         |                     |df¦  «         Œ<||d<   |                     |i ¦  «        }‰                      |||j        ||dz   ||¦  «        } |||¦  «         �Œyd„ }d„ }d„ } t=          |¦  «        D �]—}!|dk    r �n�|!‰ j         j        v �r||
 	                    |!¦  «         ‰ j                              |!g‰|¦  «        \  }"}}#}}}|#j        }|d         }t;          |‰j        ¦  «        o|‰j        u}||"dt1          |¦  «        dk    rtA          ||"¦  «        n|tA          | |!¦  «        |d
œ}|	                     |¦  «         g }|                     |!|"f¦  «        pi }$‰                      |$||j        ‰j        ¬¦  «        }|D ];}|                     t1          |¦  «        ¦  «         |                     |df¦  «         Œ<||d<   |                     |!i ¦  «        }%‰                      ||$|j        ||dz   |%|¬¦  «        } |||¦  «         �Œ™t	          |¦  «         !                    |
¦  «        }&|&rQd„ |&D ¦   «         }'t          dd                     |'¦  «        ›dd                      |¦   «         ¦  «        pd›�¦  «        ‚|	S )a  
        Fill in the information needed for a select_related query. The current
        depth is measured as the number of connections away from the root model
        (for example, cur_depth=1 means we are looking at models with direct
        connections to the root model).
        c                  ó~   •— d„ ‰j         D ¦   «         } d„ ‰j        D ¦   «         }t          | |‰j        j        ¦  «        S )Nc              3   ó2   K  — | ]}|j         ¯	|j        V — Œd S r'   )rµ  rÑ   ©rS   Úfs     r/   rU   zQSQLCompiler.get_related_selections.<locals>._get_field_choices.<locals>.<genexpr>§  s+   è è € ÐKÐK¨¸Q¼]ÐK˜aœfÐKÐKÐKÐKÐKÐKr0   c              3   ó`   K  — | ])}|j         j        ¯|j                              ¦   «         V — Œ*d S r'   )rß   ÚuniqueÚrelated_query_namerÇ  s     r/   rU   zQSQLCompiler.get_related_selections.<locals>._get_field_choices.<locals>.<genexpr>¨  sN   è è € ð ð àØ”7”>ðØ”×*Ò*Ñ,Ô,ðð ð ð ð ð r0   )ÚfieldsÚrelated_objectsr   r@   Ú_filtered_relations)Údirect_choicesÚreverse_choicesrŸ  r+   s     €€r/   Ú_get_field_choicesz>SQLCompiler.get_related_selections.<locals>._get_field_choices¦  sY   ø€ ØKÐK¨d¬kÐKÑKÔKˆNðð àÔ-ðñ ô ˆOõ
 Ø °´Ô1Oñô ð r0   Nc                 ó   — || d<   d S )Nr¤   r2   )rF   r¤   s     r/   Úget_related_klass_infoszCSQLCompiler.get_related_selections.<locals>.get_related_klass_infosÂ  s   € Ø0CˆJÐ,Ñ-Ð-Ð-r0   z/Non-relational field given in select_related: 'z'. Choices are: rA  z(none)Fc                 ó   — d S r'   r2   )ÚxÚys     r/   ú<lambda>z4SQLCompiler.get_related_selections.<locals>.<lambda>â  s   € ÐRV€ r0   )rK   rß   ÚreverseÚlocal_setterÚremote_setterr¦   r¬  )rž  rŸ  r£   ro   c                 óR   — g | ]$}|j         j        ¯|j        °||j         |j        f‘Œ%S r2   )rß   rÊ  Úmany_to_manyÚrelated_model)rS   Úos     r/   rœ   z6SQLCompiler.get_related_selections.<locals>.<listcomp>ý  sI   € ð ð ð àØ”7”>ðð +,¬.ðØ�A”G˜Qœ_Ð-ðð ð r0   T)rž  rŸ  r¦   c                 óD   — |r| j                              ||¦  «         d S d S r'   )Úremote_fieldÚset_cached_value)Úfinal_fieldÚobjÚfrom_objs      r/   rÙ  z8SQLCompiler.get_related_selections.<locals>.local_setter4  s6   € àð MØÔ,×=Ò=¸hÈÑLÔLÐLÐLÐLðMð Mr0   c                 ó   — d S r'   r2   )rã  rä  s     r/   Úlocal_setter_noopz=SQLCompiler.get_related_selections.<locals>.local_setter_noop9  s   € Ø�r0   c                 ó(   — t          || |¦  «         d S r'   )Úsetattr)rÑ   rã  rä  s      r/   rÚ  z9SQLCompiler.get_related_selections.<locals>.remote_setter<  s   € Ý˜ $¨Ñ,Ô,Ð,Ð,Ð,r0   é   )rŸ  Ú
root_aliasÚ	cur_depthÚ	requestedÚ
restrictedc              3   ó    K  — | ]	}d |z  V — Œ
dS )z'%s'Nr2   ©rS   Úss     r/   rU   z5SQLCompiler.get_related_selections.<locals>.<genexpr>s  s&   è è € Ð!GÐ!G° &¨1¡*Ð!GÐ!GÐ!GÐ!GÐ!GÐ!Gr0   z/Invalid field name(s) given in select_related: z. Choices are: )"r@   Ú	max_depthrÊ   rZ   rr   ru   rµ   ÚdictrÌ  rv   rÑ   r   rµ  r   r  r   rà  rK   rá  rÊ  rw   r½  r­   r™  r\   r¶   rÍ  rË  r¦  r›  r±   rÎ  r   r  )(r+   rD   r¸   rŸ  rê  rë  rì  rí  rÑ  r¤   Úfields_foundrÓ  rÈ  ÚnextÚrelated_select_maskrF   r£   r…   r¦  r†   Úcolumnsr¢   Únext_klass_infosÚrelated_fieldsÚrelated_objectÚrelated_fieldrK   Úrelated_field_nameÚ	join_infor¦   rÙ  ræ  rÚ  rÑ   râ  Ú	join_optsÚfield_select_maskÚnext_requestedÚfields_not_foundÚinvalid_fieldss(   `  `                                    r/   r¶   z"SQLCompiler.get_related_selections•  sÁ  øø€ ð"		ð 		ð 		ð 		ð 		ð 		ð !ÐØð 	'˜i¨$¬*Ô*>Ò>Ð>à&Ð&àð 	8Ø”:×&Ò&Ñ(Ô(ˆDØœ×5Ò5Ñ7Ô7ˆJõ ‘u”uˆØÐÝ# D¤JÔ$=½tÑDÔDˆJØð 6Ø œJÔ5�	ð	Dð 	Dð 	Dð ”ð 5	Bñ 5	BˆAØ×Ò˜QœVÑ$Ô$Ð$àð Ø —}’} Q¤V¨RÑ0Ô0�Ø”}ð ð ð ˜qœv¨Ð2Ð2Ý(˜jð !"¤  Ø $§	¢	Ð*<Ð*<Ñ*>Ô*>Ñ ?Ô ?Ð KÀ8Ð Kð	ñô ð øð �å)¨!¨Z¸ÀKÑPÔPð ØØ"-§/¢/°!Ñ"4Ô"4Ð":¸ÐàœÔ-ØØ Ø !Ô 2à78´xÐV�A”NÔ3Ð3ÐEVÐEVà$ð	ð 	ˆJð  ×&Ò& zÑ2Ô2Ð2ØˆMØ#'¤:×#9Ò#9¸1¼6¸(ÀDÈ*Ñ#UÔ#UÑ ˆAˆq�!�U˜A˜qØ˜"”IˆEØ×.Ò.Ø#°¸Q¼^Ô=QÔ=Wð /ñ ô ˆGð ð +ð +�Ø×$Ò$¥S¨¡[¤[Ñ1Ô1Ð1Ø—’˜s D˜kÑ*Ô*Ð*Ð*Ø*7ˆJ�Ñ'Ø#×:Ò:ØØ#Ø”Ô$Ô*ØØ˜A‘ØØñ ô  Ðð $Ð# JÐ0@ÑAÔAÐAÑAàñ 	ðð àÔ-ðñ ô ˆNð
 9Gð 0Fñ 0FÑ4� ¨uÝ-Ø"ØØØñ	ô ð ð à&1§o¢o°nÑ&EÔ&EÐ&KÈÐ#Ø%2×%EÒ%EÑ%GÔ%GÐ"Ø× Ò Ð!3Ñ4Ô4Ð4à œJ×2Ò2Ø'Ð(¨$°
ñô �	ð "œ¨Ô+�Ý(¨°´
Ñ;Ô;ÐWÀÈTÌZÐ@W�à"Ø*Ø#Ø$2Ô$CØ%2Ô%CØ#.ðð �
ð $×*Ò*¨:Ñ6Ô6Ð6Ø "�Ø×2Ò2Ø'Ø %ØœØ $¤
ð	 3ñ ô �ð #ð /ð /�CØ!×(Ò(­¨V©¬Ñ5Ô5Ð5Ø—M’M 3¨ +Ñ.Ô.Ð.Ð.Ø.;�
˜?Ñ+Ø —}’}Ð%7¸Ñ<Ô<�Ø#'×#>Ò#>ØØ'Ø”KØØ ‘MØØñ$ô $Ð ð (Ð'¨
Ð4DÑEÔEÐEÑEðMð Mð Mð
ð ð ð-ð -ð -õ ˜Y™œð 1Jñ 1J�à˜q’=�=Ø‘EØ˜4œ:Ô9Ð9Ñ9Ø ×$Ò$ TÑ*Ô*Ð*Ø=A¼Z×=SÒ=SØ˜  jñ>ô >Ñ:�K  I¨u°a¸ð &œO�EØ! "œI�Eå" 5¨$¬*Ñ5Ô5ÐQ¸%ÀtÄzÐ:Qð  ð "'Ø!,Ø#'õ  # 5™zœz¨Qš˜õ $ L°+Ñ>Ô>Ð>à!2å)0°ÀÑ)EÔ)EØ'2ð"ð "�Jð (×.Ò.¨zÑ:Ô:Ð:Ø$&�MØ(3¯ª¸¸{Ð8KÑ(LÔ(LÐ(RÐPRÐ%Ø"×6Ò6Ø)Ø$)Ø"œ[Ø$(¤Jð	 7ñ ô �Gð  'ð 3ð 3˜Ø%×,Ò,­S°©[¬[Ñ9Ô9Ð9ØŸš s¨D kÑ2Ô2Ð2Ð2Ø2?�J˜Ñ/Ø%.§]¢]°4¸Ñ%<Ô%<�NØ'+×'BÒ'BØØ)Ø"œ[Ø#(Ø"+¨a¡-Ø"0Ø#-ð (Cñ (ô (Ð$ð ,Ð+¨JÐ8HÑIÔIÐIùÝ" 9™~œ~×8Ò8¸ÑFÔFÐØð 	Ø!GÐ!GÐ6FÐ!GÑ!GÔ!G�Ý �jð Ÿ	š	 .Ñ1Ô1Ð1Ð1ØŸ	š	Ð"4Ð"4Ñ"6Ô"6Ñ7Ô7ÐC¸8ÐCð	ñô ð ð #Ð"r0   c           	      ó(  ‡ ‡— ˆ fd„Šˆ fd„}ˆˆ fd„}‰ j         sg S g }g }‰ j        j        D �]}‰ j         }|dk    r ||¦  «        }n“|                     t          ¦  «        D ]U}g |                     dg ¦  «        ¢ ‰|¦  «        ¢R }	|	D ](}
|
d         }|
d         r|j        }|j        |k    r|
} nŒ)d} nŒV|€|                     |¦  «         Œ¤ ||¦  «        }|�m‰ j	        j
        j        r/|                     ‰                      |¦  «        d	         ¦  «         Œñ|                     ‰                      |j        ¦  «        ¦  «         �Œ |rDt          d
d                     |¦  «        ›dd                      |¦   «         ¦  «        ›d�¦  «        ‚|S )zk
        Return a quoted list of arguments for the SELECT FOR UPDATE OF part of
        the query.
        c              3   óÎ   •‡‡K  — | d         j         j        }|j         j                             ¦   «         D ].\  Š}‰j         j        Š‰|dˆˆˆfd„| d         D ¦   «         dœV — Œ/d S )NrK   Fc                 ó”   •— g | ]D}‰j         |         d          j        j        ‰k    s‰j         |         d          j        j        ‰v ¯B|‘ŒES ©r   )rD   r‘   rK   )rS   Úselect_indexÚall_parentsÚparent_modelr+   s     €€€r/   rœ   zbSQLCompiler.get_select_for_update_of_arguments.<locals>._get_parent_klass_info.<locals>.<listcomp>Œ  sb   ø€ ð &ð &ð &à(ð !œK¨Ô5°aÔ8Ô?ÔEÈÒUÐUØ#œ{¨<Ô8¸Ô;ÔBÔHÈKÐWÐWð %ð
  XÐWÐWr0   r£   )rK   rß   rØ  r£   )r™  rš  Úparentsr¯   r  )rF   rš  Úparent_linkr  r  r+   s      @@€r/   Ú_get_parent_klass_infozNSQLCompiler.get_select_for_update_of_arguments.<locals>._get_parent_klass_info„  s°   øøøè è € Ø'¨Ô0Ô6ÔEˆNØ-;Ô-AÔ-I×-OÒ-OÑ-QÔ-Qð ð Ñ)�˜kØ*Ô0Ô<�à)Ø(Ø$ð&ð &ð &ð &ð &ð &à,6°Ô,Gð&ñ &ô &ð	ð ð ð ð ð ðð r0   c                 ó®   •— | d         j         j        }| d         D ]8}‰j        |         d         j        j        |k    r‰j        |         d         c S Œ9dS )zì
            Find the first selected column from a model. If it doesn't exist,
            don't lock a model.

            select_fields is filled recursively, so it also contains fields
            from the parent models.
            rK   r£   r   N)r™  rš  rD   r‘   rK   )rF   rš  r  r+   s      €r/   Ú"_get_first_selected_col_from_modelzZSQLCompiler.get_select_for_update_of_arguments.<locals>._get_first_selected_col_from_model—  sn   ø€ ð (¨Ô0Ô6ÔEˆNØ *¨?Ô ;ð 8ð 8�Ø”;˜|Ô,¨QÔ/Ô6Ô<ÀÒNÐNØœ; |Ô4°QÔ7Ð7Ð7Ð7ð Oð8ð 8r0   c               3   óÀ  •‡K  — t          j        d‰j        fg¦  «        } | r»|                      ¦   «         \  }}|€g ŠdV — n8|d         }|d         r|j        }||j        gz   Št          j        ‰¦  «        V — |                      ˆfd„ ‰|¦  «        D ¦   «         ¦  «         |                      ˆfd„| 	                    dg ¦  «        D ¦   «         ¦  «         | °¹dS dS )z<Yield all allowed field paths in breadth-first search order.Nr+   rß   rØ  c              3   ó    •K  — | ]}‰|fV — Œ	d S r'   r2   ©rS   rF   r§  s     €r/   rU   z]SQLCompiler.get_select_for_update_of_arguments.<locals>._get_field_choices.<locals>.<genexpr>²  ó<   øè è € ð ð à"ð ˜:Ð&ðð ð ð ð ð r0   c              3   ó    •K  — | ]}‰|fV — Œ	d S r'   r2   r  s     €r/   rU   z]SQLCompiler.get_select_for_update_of_arguments.<locals>._get_field_choices.<locals>.<genexpr>¶  r  r0   r¤   )
ÚcollectionsÚdequerF   Úpopleftrà  rÑ   r
   r  ry   r   )ÚqueueÚparent_pathrF   rß   r§  r  r+   s       @€€r/   rÑ  zJSQLCompiler.get_select_for_update_of_arguments.<locals>._get_field_choices¤  sG  øøè è € åÔ%¨¨d¬oÐ'>Ð&?Ñ@Ô@ˆEØð Ø*/¯-ª-©/¬/Ñ'�˜ZØÐ&Ø�DØ �L�L�L�Là& wÔ/�EØ! )Ô,ð 3Ø %Ô 2˜Ø&¨%¬*¨Ñ5�DÝ$œ/¨$Ñ/Ô/Ð/Ð/Ð/Ø—’ð ð ð ð à&<Ð&<¸ZÑ&HÔ&Hðñ ô ñ ô ð ð —’ð ð ð ð à&0§n¢nÐ5JÈBÑ&OÔ&Oðñ ô ñ ô ð ð ð ð ð ð ð r0   r+   r¤   rß   rØ  Nr   z<Invalid field name(s) given in select_for_update(of=(...)): rA  zI. Only relational fields followed in the query are allowed. Choices are: rÆ   )rF   r@   ri  rÖ   r
   r   rà  rÑ   rw   r5   r|   Úselect_for_update_of_columnr~   rÙ   r†   r   r  )r+   r  rÑ  r‹   Úinvalid_namesrÑ   rF   r¢   r!  Úklass_infosÚrelated_klass_inforß   r  s   `           @r/   rp  z.SQLCompiler.get_select_for_update_of_arguments~  sB  øø€ ð	ð 	ð 	ð 	ð 	ð&	8ð 	8ð 	8ð 	8ð 	8ð	ð 	ð 	ð 	ð 	ð 	ð. Œð 	ØˆIØˆØˆØ”JÔ3ð 	Kñ 	KˆDØœˆJØ�vŠ~ˆ~Ø8Ð8¸ÑDÔD��à ŸJšJ¥zÑ2Ô2ð ð �Dð#Ø#ŸšÐ(=¸rÑBÔBð#à/Ð/°
Ñ;Ô;ð#ð #�Kð /:ð 	ð 	Ð*Ø 2°7Ô ;˜Ø-¨iÔ8ð 7Ø$)Ô$6˜EØ œ:¨Ò-Ð-Ø);˜JØ!˜Eð .ð &*˜
Ø˜ð "ð Ð%Ø!×(Ò(¨Ñ.Ô.Ð.ØØ8Ð8¸ÑDÔD�ØˆØ”?Ô+ÔGð KØ—M’M $§,¢,¨sÑ"3Ô"3°AÔ"6Ñ7Ô7Ð7Ð7à—M’M $×">Ò">¸s¼yÑ"IÔ"IÑJÔJÐJùØð 		Ý�*ð
 —I’I˜mÑ,Ô,Ð,Ð,Ø—I’IÐ0Ð0Ñ2Ô2Ñ3Ô3Ð3Ð3ðñô ð ð ˆr0   c                 ó°  — d}i }|D ]Î}t          |t          ¦  «        rc|                     ¦   «         }|                      |¦  «        }|                     ¦   «         D ]\  }\  }}	||	f|||z   <   Œ|t          |¦  «        z  }Œz|rM| j        j                             |¦  «        }
|                     | j        ¦  «        }|
s|r
|
|z   |f||<   |dz  }ŒÉ|dz  }ŒÏ|S )Nr   ro   )	ru   r   r/  Úget_convertersr¯   r\   r5   r  Úget_db_converters)r+   r�   ÚiÚ
convertersr»   r¹   Úcols_convertersr±  Úconvsr¢   Úbackend_convertersÚfield_converterss               r/   r  zSQLCompiler.get_convertersè  s  € ØˆØˆ
à%ð 	ð 	ˆJÝ˜*¥hÑ/Ô/ð Ø!×8Ò8Ñ:Ô:�Ø"&×"5Ò"5°dÑ";Ô";�Ø'6×'<Ò'<Ñ'>Ô'>ð 5ð 5‘O�A‘|˜˜sØ).°¨�J˜q 1™uÑ%Ð%Ø•S˜‘_”_Ñ$��Øð Ø%)¤_Ô%8×%JÒ%JÈ:Ñ%VÔ%VÐ"Ø#-×#?Ò#?ÀÄÑ#PÔ#PÐ Ø%ð XÐ)9ð XØ%7Ð:JÑ%JÈJÐ$W�J˜q‘MØ�Q‘��à�Q‘��àÐr0   c              #   óæ   K  — | j         }t          |                     ¦   «         ¦  «        }t          t          |¦  «        D ]0}|D ]'\  }\  }}||         }|D ]}	 |	|||¦  «        }Œ|||<   Œ(|V — Œ1d S r'   )r5   r±   r¯   Úmap)
r+   Úrowsr   r5   ÚrowÚposr"  r»   ÚvalueÚ	converters
             r/   Úapply_converterszSQLCompiler.apply_convertersþ  s¥   è è € Ø”_ˆ
Ý˜*×*Ò*Ñ,Ô,Ñ-Ô-ˆ
Ý•t˜T‘?”?ð 	ð 	ˆCØ,6ð !ð !Ñ(�Ñ(�e˜ZØ˜Cœ�Ø!&ð Eð E�IØ%˜I e¨Z¸ÑDÔD�E�EØ ��C‘�ØˆIˆIˆIˆIð	ð 	r0   c                 ó4   — t          d„ |D ¦   «         ¦  «        S )Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r'   )ru   r   )rS   r»   s     r/   rU   z3SQLCompiler.has_composite_fields.<locals>.<genexpr>  s,   è è € ÐRÐR¸
•:˜j­(Ñ3Ô3ÐRÐRÐRÐRÐRÐRr0   )Úany)r+   r�   s     r/   Úhas_composite_fieldsz SQLCompiler.has_composite_fields	  s!   € õ ÐRÐRÀkÐRÑRÔRÑRÔRÐRr0   c              #   ó°   K  — d„ t          |¦  «        D ¦   «         }t          t          |¦  «        D ]$}|D ]}t          ||         ¦  «        f||<   Œ|V — Œ%d S )Nc           	      ó~   — g | ]:\  }}t          |t          ¦  «        ¯t          ||t          |¦  «        z   ¦  «        ‘Œ;S r2   )ru   r   Úslicer\   )rS   r  r»   s      r/   rœ   z:SQLCompiler.composite_fields_to_tuples.<locals>.<listcomp>  sQ   € ð 
ð 
ð 
á��:Ý˜*¥hÑ/Ô/ð
Ý�!�Q�˜Z™œÑ(Ñ)Ô)ð
ð 
ð 
r0   )rx   r&  r±   r}  )r+   r'  r�   Úcol_pair_slicesr(  r)  s         r/   Úcomposite_fields_to_tuplesz&SQLCompiler.composite_fields_to_tuples  s�   è è € ð
ð 
å!*¨;Ñ!7Ô!7ð
ñ 
ô 
ˆõ •t˜T‘?”?ð 	ð 	ˆCØ&ð .ð .�Ý! # c¤(™OœOÐ-��C‘�àˆIˆIˆIˆIð		ð 	r0   c                 ó†  — |€|                       t          ||¬¦  «        }d„ | j        d| j        …         D ¦   «         }|                      |¦  «        }t          j        |¦  «        }|r|                      ||¦  «        }|                      |¦  «        r|  	                    ||¦  «        }|rt          t          |¦  «        }|S )z>Return an iterator over the results from executing this query.N)Úchunked_fetchÚ
chunk_sizec                 ó   — g | ]
}|d          ‘ŒS r  r2   rï  s     r/   rœ   z,SQLCompiler.results_iter.<locals>.<listcomp>'  s   € Ð@Ð@Ð@˜1�!�A”$Ð@Ð@Ð@r0   r   )Úexecute_sqlr   rD   r]   r  r   Úfrom_iterabler,  r0  r5  r&  r}  )r+   rº  Útuple_expectedr7  r8  rÌ  r   r'  s           r/   Úresults_iterzSQLCompiler.results_iter  sÖ   € ð ˆ?Ø×&Ò&Ý ]¸zð 'ñ ô ˆGð AÐ@ ¤¨A°´Ð,>Ô ?Ð@Ñ@Ô@ˆØ×(Ò(¨Ñ0Ô0ˆ
ÝÔ" 7Ñ+Ô+ˆØð 	;Ø×(Ò(¨¨zÑ:Ô:ˆDØ×$Ò$ VÑ,Ô,ð 	AØ×2Ò2°4¸Ñ@Ô@ˆDØð 	$Ý•u˜dÑ#Ô#ˆDØˆr0   c                 óP   — t          |                      t          ¦  «        ¦  «        S )z€
        Backends (e.g. NoSQL) can override this in order to use optimized
        versions of "query has any results."
        )rh   r:  r   rL   s    r/   Úhas_resultszSQLCompiler.has_results2  s    € õ
 �D×$Ò$¥VÑ,Ô,Ñ-Ô-Ð-r0   c                 óü  — |pt           }	 |                      ¦   «         \  }}|st          ‚n-# t          $ r  |t          k    rt	          g ¦  «        cY S Y dS w xY w|r| j                             ¦   «         }n| j                             ¦   «         }	 |                     ||¦  «         n## t          $ r | 
                    ¦   «          ‚ w xY w|t          k    r5	 |j        | 
                    ¦   «          S # | 
                    ¦   «          w xY w|t          k    r|S |t          k    ri	 |                     ¦   «         }|r#|d| j        …         | 
                    ¦   «          S || 
                    ¦   «          S # | 
                    ¦   «          w xY w|t           k    r| 
                    ¦   «          dS t#          || j        j        j        | j        r| j        nd|¦  «        }|r| j        j        j        st-          |¦  «        S |S )a"  
        Run the query against the database and return the result(s). The
        return value depends on the value of result_type.

        When result_type is:
        - MULTI: Retrieves all rows using fetchmany(). Wraps in an iterator for
           chunked reads when supported.
        - SINGLE: Retrieves a single row using fetchone().
        - ROW_COUNT: Retrieves the number of rows in the result.
        - CURSOR: Runs the query, and returns the cursor object. It is the
           caller's responsibility to close the cursor.
        Nr   )r   r6   r   r   Úiterr5   Úchunked_cursorÚcursorÚexecuteÚ	ExceptionÚcloser   Úrowcountr   r   Úfetchoner]   Úcursor_iterr|   Úempty_fetchmany_valueri   Úcan_use_chunked_readsr±   )	r+   Úresult_typer7  r8  r‡   rˆ   rC  Úvalr‹   s	            r/   r:  zSQLCompiler.execute_sql9  s  € ð "Ð/¥Zˆð	ØŸ+š+™-œ-‰KˆC�Øð %Ý$Ð$ð%øåð 	ð 	ð 	Ø�eÒ#Ð#Ý˜B‘x”x���à��ð		øøøð
 ð 	.Ø”_×3Ò3Ñ5Ô5ˆFˆFà”_×+Ò+Ñ-Ô-ˆFð	Ø�NŠN˜3 Ñ'Ô'Ð'Ð'øÝð 	ð 	ð 	à�LŠL‰NŒNˆNØð	øøøð
 �)Ò#Ð#ðØ”à—’‘”��ø�—’‘”��øøøØ�&Ò Ð àˆMØ�&Ò Ð ðØ—o’oÑ'Ô'�Øð 3Ø˜q 4¤>Ð1Ô2ð —’‘”��ð ð —’‘”��ø�—’‘”��øøøØ�*Ò$Ð$Ø�LŠL‰NŒNˆNØˆFåØØŒOÔ$Ô:Ø"Ô3Ð=ˆDŒNˆN¸Øñ	
ô 
ˆð ð 	  D¤OÔ$<Ô$Rð 	 õ
 ˜‘<”<ÐØˆs9   ‹ , ¬$AÁAÂB& Â& CÃC0 Ã0DÄ"$E1 ÅE1 Å1Fc              #   óX  ‡K  — t          |                      ¦   «         ¦  «        }| j        j        j        }|r$|                     ¦   «         dk    rt          j        nt          Š|D ]D}|D ]?}t          |t          ¦  «        s$d 
                    ˆfd„|D ¦   «         ¦  «        V — Œ;|V — Œ@ŒEd S )NÚjsonr[  c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r2   r2   )rS   ÚcÚoutput_formatters     €r/   rœ   z-SQLCompiler.explain_query.<locals>.<listcomp>‰  s%   ø€ Ð#GÐ#GÐ#G¸AÐ$4Ð$4°QÑ$7Ô$7Ð#GÐ#GÐ#Gr0   )r±   r:  r@   rt  r  ÚlowerrO  Údumpsr3   ru   r  )r+   r‹   Úformat_r(  r*  rR  s        @r/   Úexplain_queryzSQLCompiler.explain_query€  sÍ   øè è € Ý�d×&Ò&Ñ(Ô(Ñ)Ô)ˆð ”*Ô)Ô0ˆØ)0ÐW°W·]²]±_´_ÈÒ5NÐ5N�4œ:˜:ÕTWÐØð 	 ð 	 ˆCØð  ð  �Ý! %­Ñ-Ô-ð  ØŸ(š(Ð#GÐ#GÐ#GÐ#GÀÐ#GÑ#GÔ#GÑHÔHÐHÐHÐHÐHà�K�K�K�Kð	 ð	 ð 	 r0   )T)F)TF)NNN)NrÀ   N)NNro   NN))r7   r8   r9   r#   ÚreÚ	MULTILINEÚDOTALLrð   r*   rM   r^   rm   rj   r{   r[   rå   ra   rg   rÙ   r~   r"  r  rP  r6   r­   r^  rÛ   r£  r_  r¶   rp  r  r,  r0  r5  r   r=  r?  r   r:  rV  r2   r0   r/   r=   r=   (   sŸ  € € € € € à%Ð%Ø Ø
Œ�r”yÑ ñô €Nð
#ð #ð #ð #ð"
ð 
ð 
ð*ð *ð *ð *ð0ð 0ð 0ð 0ð eð eð eðNð ð ð@h,ð h,ð h,ð h,ðTMð Mð Mð^;ð ;ð ;ðzð ð ðð ð ð,ð ð ð3ð 3ð 3ðj#ð #ð #ð4^ð ^ð ^ð@a9ð a9ð a9ð a9ðH EIð1ð 1ð 1ð 1ðfð ð ð6 IMð?
ð ?
ð ?
ð ?
ðBLð Lð Lð ð  ð  ðL ØØØØðg#ð g#ð g#ð g#ðRhð hð hðTð ð ð,	ð 	ð 	ðSð Sð Sð
ð ð ð ØØØ*ðð ð ð ð..ð .ð .ð  ¨uÐAXðEð Eð Eð EðN ð  ð  ð  ð  r0   r=   c                   ó<   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d	d„Z
dS )
ÚSQLInsertCompilerNr2   c                 óä   — |€|g }}nFt          |d¦  «        r|                      |¦  «        \  }}n|� ||| | j        ¦  «        |g}}nd|g}}| j        j                             ||¦  «        }||fS )at  
        Take a field and a value intended to be saved on that field, and
        return placeholder SQL and accompanying params. Check for raw values,
        expressions, and fields with get_placeholder() defined in that order.

        When field is None, consider the value raw and use it as the
        placeholder, with no corresponding parameters returned.
        Nr6   ú%s)rs   r~   r5   r  Úmodify_insert_params)r+   rß   Úget_placeholderrM  r‡   rˆ   s         r/   Úfield_as_sqlzSQLInsertCompiler.field_as_sql’  s•   € ð ˆ=à˜r�ˆCˆCÝ�S˜(Ñ#Ô#ð 		&àŸ,š, sÑ+Ô+‰KˆC��ØÐ(ð *˜/¨#¨t°T´_ÑEÔEÈÀu�ˆCˆCð   �ˆCð ”Ô$×9Ò9¸#¸vÑFÔFˆà�Fˆ{Ðr0   c                 óV  — t          |d¦  «        r~|                     | j        dd¬¦  «        }|j        rt	          d|›d|›d�¦  «        ‚|j        rt          d|j        ›d	|›d
�¦  «        ‚|j        rt          d|j        ›d	|›d
�¦  «        ‚| 	                    || j
        ¬¦  «        S )zœ
        Prepare a value to be used in a query by resolving it if it is an
        expression and otherwise calling the field's get_db_prep_save().
        rÂ   FT©rç   Úfor_savezFailed to insert expression "z" on z<. F() expressions can only be used to update, not to insert.ú3Aggregate functions are not allowed in this query (ú=ú).ú2Window expressions are not allowed in this query (©r5   )rs   rÂ   r@   Úcontains_column_referencesÚ
ValueErrorÚcontains_aggregater   rÑ   Úcontains_over_clauseÚget_db_prep_saver5   )r+   rß   r*  s      r/   Úprepare_valuezSQLInsertCompiler.prepare_value²  sõ   € õ
 �5Ð.Ñ/Ô/ð 	Ø×,Ò,Ø”
¨¸ð -ñ ô ˆEð Ô/ð Ý �jàDIÀEÀEÈ5È5È5ðRñô ð ð Ô'ð Ý �jà"'¤* * *¨e¨e¨eð5ñô ð ð Ô)ð Ý �jà”z�z�z 5 5 5ð*ñô ð ð ×%Ò% e¸¼Ð%ÑHÔHÐHr0   c                 ór   — | j         j        rt          ||j        ¦  «        S |                     |d¬¦  «        S )z¦
        Get the given field's value off the given obj. pre_save() is used for
        things like auto_now on DateTimeField. Skip it if this is a raw query.
        T)rv   )r@   Úrawr™   r«  Úpre_save)r+   rß   rã  s      r/   Úpre_save_valzSQLInsertCompiler.pre_save_valÏ  s8   € ð
 Œ:Œ>ð 	/Ý˜3 ¤Ñ.Ô.Ð.Ø�~Š~˜c tˆ~Ñ,Ô,Ð,r0   c                 óœ   ‡ ‡‡— |sg g fS d„ ‰D ¦   «         Šˆˆˆ fd„|D ¦   «         }d„ |D ¦   «         }t          |Ž \  }}d„ |D ¦   «         }||fS )a+  
        Take a sequence of N fields and a sequence of M rows of values, and
        generate placeholder SQL and parameters for each field and value.
        Return a pair containing:
         * a sequence of M rows of N SQL placeholder strings, and
         * a sequence of M rows of corresponding parameter values.

        Each placeholder string may contain any number of '%s' interpolation
        strings, and each parameter row will contain exactly as many params
        as the total number of '%s's in the corresponding placeholder row.
        c                 ó0   — g | ]}t          |d d¦  «        ‘ŒS )r_  Nr˜   )rS   rß   s     r/   rœ   z5SQLInsertCompiler.assemble_as_sql.<locals>.<listcomp>é  s%   € ÐXÐXÐXÈ�G EÐ+<¸dÑCÔCÐXÐXÐXr0   c              3   óR   •K  — | ]!}ˆfd „t          ‰‰|¦  «        D ¦   «         V — Œ"dS )c              3   óN   •K  — | ]\  }}}‰                      |||¦  «        V — Œ d S r'   )r`  )rS   rß   r_  r*  r+   s       €r/   rU   z>SQLInsertCompiler.assemble_as_sql.<locals>.<genexpr>.<genexpr>ë  sO   øè è € ð ð á1�E˜?¨Eð ×!Ò! %¨¸%Ñ@Ô@ðð ð ð ð ð r0   N©r  )rS   r(  rÌ  Úget_placeholdersr+   s     €€€r/   rU   z4SQLInsertCompiler.assemble_as_sql.<locals>.<genexpr>ê  sh   øè è € ð !
ð !
ð
 ð	ð ð ð å58¸ÐAQÐSVÑ5WÔ5Wðñ ô ð!
ð !
ð !
ð !
ð !
ð !
r0   c              3   ó(   K  — | ]}t          |Ž V — Œd S r'   rw  ©rS   r(  s     r/   rU   z4SQLInsertCompiler.assemble_as_sql.<locals>.<genexpr>ô  s&   è è € Ð"NÐ"N°¥3¨ 9Ð"NÐ"NÐ"NÐ"NÐ"NÐ"Nr0   c                 ó&   — g | ]}d „ |D ¦   «         ‘ŒS )c                 ó   — g | ]	}|D ]}|‘ŒŒ
S r2   r2   ©rS   Úpsr©  s      r/   rœ   z@SQLInsertCompiler.assemble_as_sql.<locals>.<listcomp>.<listcomp>û  s%   € Ð3Ð3Ð3˜R°Ð3Ð3¨1�qÐ3Ð3Ð3Ð3r0   r2   rz  s     r/   rœ   z5SQLInsertCompiler.assemble_as_sql.<locals>.<listcomp>û  s'   € ÐJÐJÐJ¸Ð3Ð3 3Ð3Ñ3Ô3ÐJÐJÐJr0   rw  )r+   rÌ  Ú
value_rowsÚrows_of_fields_as_sqlÚsql_and_param_pair_rowsÚplaceholder_rowsÚ
param_rowsrx  s   ``     @r/   Úassemble_as_sqlz!SQLInsertCompiler.assemble_as_sqlØ  s±   øøø€ ð ð 	Ø�r�6ˆMð YÐXÐQWÐXÑXÔXÐð!
ð !
ð !
ð !
ð !
ð !
ð
 "ð!
ñ !
ô !
Ðð #OÐ"NÐ8MÐ"NÑ"NÔ"NÐõ (+Ð,CÐ'DÑ$Ð˜*ð KÐJ¸zÐJÑJÔJˆ
à Ð+Ð+r0   c                 óÌ  ‡ ‡
‡‡— ‰ j         j        j        Š‰ j                             ¦   «         }‰ j         j                             ‰ j        j        ¬¦  «        }|›d ‰|j        ¦  «        ›�gŠ‰ j        j        p|j	        gŠ
‰ 
                    dd                     ˆfd„‰
D ¦   «         ¦  «        z  ¦  «         ‰ j        j        rˆ
ˆ fd„‰ j        j        D ¦   «         }nˆ fd„‰ j        j        D ¦   «         }d gŠ
‰ j         o‰ j         j        j        }‰                      ‰
|¦  «        \  }}‰ j         j                             ‰
‰ j        j        d„ ‰ j        j        D ¦   «         d	„ ‰ j        j        D ¦   «         ¦  «        }‰ j        �r/‰ j         j        j        �r‰ j         j        j        r6‰ 
                    ‰ j         j                             ‰
|¦  «        ¦  «         |}n:‰ 
                    d
d                     |d         ¦  «        z  ¦  «         |d         g}|r‰ 
                    |¦  «         ‰ j         j                             ‰ j        ¦  «        \  }	‰ _        |	r ‰ 
                    |	¦  «         |‰ j        gz  }d                     ‰¦  «        t3          t5          j        |¦  «        ¦  «        fgS |ry‰ 
                    ‰ j         j                             ‰
|¦  «        ¦  «         |r‰ 
                    |¦  «         d                     ‰¦  «        t3          d„ |D ¦   «         ¦  «        fgS |r‰ 
                    |¦  «         ˆfd„t9          ||¦  «        D ¦   «         S )N)Úon_conflictr[  z(%s)rA  c              3   ó8   •K  — | ]} ‰|j         ¦  «        V — Œd S r'   ©rì   )rS   rÈ  Úqns     €r/   rU   z+SQLInsertCompiler.as_sql.<locals>.<genexpr>	  s-   øè è € Ð(FÐ(F¸!¨¨¨A¬H©¬Ð(FÐ(FÐ(FÐ(FÐ(FÐ(Fr0   c                 ó0   •‡— g | ]Šˆˆfd „‰D ¦   «         ‘ŒS )c           	      ód   •— g | ],}‰                      |‰                     |‰¦  «        ¦  «        ‘Œ-S r2   )rn  rr  )rS   rß   rã  r+   s     €€r/   rœ   z7SQLInsertCompiler.as_sql.<locals>.<listcomp>.<listcomp>  sI   ø€ ð ð ð àð ×&Ò& u¨d×.?Ò.?ÀÀsÑ.KÔ.KÑLÔLðð ð r0   r2   )rS   rã  rÌ  r+   s    @€€r/   rœ   z,SQLInsertCompiler.as_sql.<locals>.<listcomp>  sR   øø€ ð ð ð ð
 ð	ð ð ð ð à!'ðñ ô ðð ð r0   c                 óN   •— g | ]!}‰j         j                             ¦   «         g‘Œ"S r2   )r5   r  Úpk_default_value)rS   r…   r+   s     €r/   rœ   z,SQLInsertCompiler.as_sql.<locals>.<listcomp>  s:   ø€ ð ð ð Ø=>�”Ô$×5Ò5Ñ7Ô7Ð8ðð ð r0   c              3   ó$   K  — | ]}|j         V — Œd S r'   rˆ  rÇ  s     r/   rU   z+SQLInsertCompiler.as_sql.<locals>.<genexpr>'  ó$   è è € Ð8Ð8˜!ˆQŒXÐ8Ð8Ð8Ð8Ð8Ð8r0   c              3   ó$   K  — | ]}|j         V — Œd S r'   rˆ  rÇ  s     r/   rU   z+SQLInsertCompiler.as_sql.<locals>.<genexpr>(  r�  r0   úVALUES (%s)r   c              3   ó$   K  — | ]}|D ]}|V — ŒŒd S r'   r2   r}  s      r/   rU   z+SQLInsertCompiler.as_sql.<locals>.<genexpr>F  s/   è è € Ð,PÐ,P°2ÈRÐ,PÐ,PÈ¨QÐ,PÐ,PÐ,PÐ,PÐ,PÐ,PÐ,Pr0   c           	      óx   •— g | ]6\  }}d                       ‰dd                      |¦  «        z  gz   ¦  «        |f‘Œ7S )r[  r‘  rA  )r  )rS   r©  Úvalsr‹   s      €r/   rœ   z,SQLInsertCompiler.as_sql.<locals>.<listcomp>J  sU   ø€ ð ð ð á�A�tð —’˜& M°D·I²I¸a±L´LÑ$@Ð#AÑAÑBÔBÀDÐIðð ð r0   )r5   r  r  r@   rÊ   Úinsert_statementr†  Údb_tablerÌ  r­  rw   r  ÚobjsÚreturning_fieldsr|   Úhas_bulk_insertr„  Úon_conflict_suffix_sqlÚupdate_fieldsÚunique_fieldsÚcan_return_columns_from_insertÚ can_return_rows_from_bulk_insertÚbulk_insert_sqlÚreturn_insert_columnsÚreturning_paramsr}  r   r;  r  )r+   rŸ  r•  r  Úcan_bulkr‚  rƒ  rš  rˆ   Úr_sqlrÌ  r‰  r‹   s   `         @@@r/   r6   zSQLInsertCompiler.as_sqlÿ  sË  øøøø€ ð Œ_Ô Ô+ˆØŒz×"Ò"Ñ$Ô$ˆØœ?Ô.×?Ò?Øœ
Ô.ð @ñ 
ô 
Ðð .Ð-Ð-¨r¨r°$´-Ñ/@Ô/@Ð/@ÐAÐBˆØ”Ô"Ð/ t¤w iˆØ�Š�f˜tŸyšyÐ(FÐ(FÐ(FÐ(F¸vÐ(FÑ(FÔ(FÑFÔFÑFÑGÔGÐGàŒ:Ôð 	ðð ð ð ð ð
  œ:œ?ðñ ô ˆJˆJðð ð ð ØBFÄ*Ä/ðñ ô ˆJð �VˆFð Ô%Ð%ÐR¨$¬/Ô*BÔ*Rð 	ð (,×';Ò';¸FÀJÑ'OÔ'OÑ$Ð˜*à!%¤Ô!4×!KÒ!KØØŒJÔ"Ø8Ð8˜tœzÔ7Ð8Ñ8Ô8Ø8Ð8˜tœzÔ7Ð8Ñ8Ô8ñ	"
ô "
Ðð Ô!ñ	Là”Ô(ÔGñ	Lð ŒÔ'ÔHð )Ø—’Ø”OÔ'×7Ò7¸Ð@PÑQÔQñô ð ð $��à—’˜m¨d¯iªiÐ8HÈÔ8KÑ.LÔ.LÑLÑMÔMÐMØ$ Qœ-˜�Ø%ð 6Ø—’Ð4Ñ5Ô5Ð5ð ,0¬?Ô+>×+TÒ+TØÔ%ñ,ô ,Ñ(ˆE�4Ô(ð ð 2Ø—’˜eÑ$Ô$Ð$Ø˜4Ô0Ð1Ñ1�Ø—X’X˜fÑ%Ô%¥u­UÔ-@ÀÑ-HÔ-HÑ'IÔ'IÐJÐKÐKàð 	Ø�MŠM˜$œ/Ô-×=Ò=¸fÐFVÑWÔWÑXÔXÐXØ%ð 6Ø—’Ð4Ñ5Ô5Ð5Ø—X’X˜fÑ%Ô%¥uÐ,PÐ,P¸Ð,PÑ,PÔ,PÑ'PÔ'PÐQÐRÐRà%ð 6Ø—’Ð4Ñ5Ô5Ð5ðð ð ð å"Ð#3°ZÑ@Ô@ðñ ô ð r0   c                 ó’  ‡	— |r0t          | j        j        ¦  «        dk    r| j        j        j        sJ ‚| j                             ¦   «         Š	|| _        g }| j                             ¦   «         5 }|  	                    ¦   «         D ]\  }}| 
                    ||¦  «         Œ| j        sg cd d d ¦  «         S | j        j        j        rPt          | j        j        ¦  «        dk    r3| j        j                             |¦  «        }ˆ	fd„| j        D ¦   «         }nà| j        j        j        rYt          | j        j        ¦  «        dk    sJ ‚| j        j                             || j        ¦  «        g}ˆ	fd„| j        D ¦   «         }nv|rft!          |d         x}t"          ¦  «        rI|                     ‰	j        ¦  «        g}| j        j                             |‰	j        |j        ¦  «        fg}ng cd d d ¦  «         S d d d ¦  «         n# 1 swxY w Y   |                      |¦  «        }|r|                      ||¦  «        }t1          |¦  «        S )Nro   c                 óD   •— g | ]}|                      ‰j        ¦  «        ‘ŒS r2   ©r�  r–  ©rS   rß   rŸ  s     €r/   rœ   z1SQLInsertCompiler.execute_sql.<locals>.<listcomp>b  ó'   ø€ ÐXÐXÐX¸˜Ÿš d¤mÑ4Ô4ÐXÐXÐXr0   c                 óD   •— g | ]}|                      ‰j        ¦  «        ‘ŒS r2   r¦  r§  s     €r/   rœ   z1SQLInsertCompiler.execute_sql.<locals>.<listcomp>k  r¨  r0   r   )r\   r@   r—  r5   r|   rž  rÊ   r˜  rC  r6   rD  r  Úfetch_returned_insert_rowsr�  Úfetch_returned_insert_columnsr¡  ru   r   r�  r–  Úlast_insert_idrì   r  r,  r±   )
r+   r˜  r¹   rC  r‡   rˆ   r'  Úreturning_fieldr   rŸ  s
            @r/   r:  zSQLInsertCompiler.execute_sqlO  sâ  ø€ àð	
å�D”J”OÑ$Ô$¨Ò)Ð)Ø”OÔ,ÔMð *Ð)Ð)ð Œz×"Ò"Ñ$Ô$ˆØ 0ˆÔØˆØŒ_×#Ò#Ñ%Ô%ð $	¨Ø#Ÿ{š{™}œ}ð ,ð ,‘��VØ—’˜s FÑ+Ô+Ð+Ð+ØÔ(ð Øð	$	ð $	ð $	ð $	ñ $	ô $	ð $	ð $	ð ”Ô(ÔIðå˜œ
œÑ(Ô(¨1Ò,Ð,à”Ô*×EÒEÀfÑMÔM�ØXÐXÐXÐXÀ$ÔBWÐXÑXÔX��Ø”Ô)ÔHð Ý˜4œ:œ?Ñ+Ô+¨qÒ0Ð0Ð0Ð0à”OÔ'×EÒEØØÔ-ñô ð�ð YÐXÐXÐXÀ$ÔBWÐXÑXÔX��Ø!ð ¥jØ#3°AÔ#6Ð6�½	ñ'ô 'ð ð (×/Ò/°´Ñ>Ô>Ð?�ð œÔ+×:Ò:Ø"Ø œMØ+Ô2ñô ðð��ð ðI$	ð $	ð $	ð $	ñ $	ô $	ð $	ð $	ð $	ð $	ð $	ñ $	ô $	ð $	ð $	ð $	ð $	ð $	ð $	øøøð $	ð $	ð $	ð $	ðJ ×(Ò(¨Ñ.Ô.ˆ
Øð 	;Ø×(Ò(¨¨zÑ:Ô:ˆDÝ�D‰zŒzÐs   Á/9HÂ5D4HÈHÈ	Hr'   )r7   r8   r9   r˜  r¡  r`  rn  rr  r„  r6   r:  r2   r0   r/   r[  r[  Ž  sˆ   € € € € € ØÐØÐðð ð ð@Ið Ið Ið:-ð -ð -ð%,ð %,ð %,ðNNð Nð Nð`1ð 1ð 1ð 1ð 1ð 1r0   r[  c                   ó\   — e Zd Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Z	dS )ÚSQLDeleteCompilerc                 óˆ   ‡ — ‰ j                              ¦   «          t          ˆ fd„‰ j         j        D ¦   «         ¦  «        dk    S )Nc              3   óD   •K  — | ]}‰j         j        |         d k    V — ŒdS rP   rQ   )rS   rü   r+   s     €r/   rU   z1SQLDeleteCompiler.single_alias.<locals>.<genexpr>ˆ  s2   øè è € ÐRÐR¸�4”:Ô,¨QÔ/°!Ò3ÐRÐRÐRÐRÐRÐRr0   ro   )r@   rZ   ÚsumrY   rL   s   `r/   Úsingle_aliaszSQLDeleteCompiler.single_alias„  sG   ø€ ð 	Œ
×$Ò$Ñ&Ô&Ð&ÝÐRÐRÐRÐR¸T¼ZÔ=QÐRÑRÔRÑRÔRÐVWÒWÐWr0   c                 óÆ   ‡ ‡— t          |t          ¦  «        r|j        ‰k    S t          |d¦  «        sdS t	          ˆˆ fd„|                     ¦   «         D ¦   «         ¦  «        S )Nr/  Fc              3   óD   •K  — | ]}‰                      |‰¦  «        V — Œd S r'   )Ú_expr_refs_base_model)rS   Úsource_exprÚ
base_modelÚclss     €€r/   rU   z:SQLDeleteCompiler._expr_refs_base_model.<locals>.<genexpr>�  sG   øè è € ð 
ð 
àð ×%Ò% k°:Ñ>Ô>ð
ð 
ð 
ð 
ð 
ð 
r0   )ru   r   rK   rs   r/  r/  )r¹  rƒ   r¸  s   ` `r/   r¶  z'SQLDeleteCompiler._expr_refs_base_modelŠ  s„   øø€ å�d�EÑ"Ô"ð 	,Ø”: Ò+Ð+Ý�tÐ5Ñ6Ô6ð 	Ø�5Ýð 
ð 
ð 
ð 
ð 
à#×:Ò:Ñ<Ô<ð
ñ 
ô 
ñ 
ô 
ð 	
r0   c                 ó¬   ‡ — t          ˆ fd„t          ‰ j        j                             ¦   «         ‰ j        j        j        ¦  «        D ¦   «         ¦  «        S )Nc              3   óX   •K  — | ]$}‰                      |‰j        j        ¦  «        V — Œ%d S r'   )r¶  r@   rK   r”   s     €r/   rU   zESQLDeleteCompiler.contains_self_reference_subquery.<locals>.<genexpr>—  sL   øè è € ð 
ð 
àð ×&Ò& t¨T¬ZÔ-=Ñ>Ô>ð
ð 
ð 
ð 
ð 
ð 
r0   )r/  r   r@   r³   rC  rb   ÚchildrenrL   s   `r/   Ú contains_self_reference_subqueryz2SQLDeleteCompiler.contains_self_reference_subquery•  sc   ø€ åð 
ð 
ð 
ð 
åØ”
Ô&×-Ò-Ñ/Ô/°´Ô1AÔ1Jñô ð
ñ 
ô 
ñ 
ô 
ð 	
r0   c                 óÎ   — d|                       |j        ¦  «        z  }	 |                      |j        ¦  «        \  }}n# t          $ r |dfcY S w xY w|› d|› �t          |¦  «        fS )NzDELETE FROM %sr2   z WHERE )rÙ   Ú
base_tabler~   rb   r   r}  )r+   r@   Údeleterb   rˆ   s        r/   Ú_as_sqlzSQLDeleteCompiler._as_sqlž  s…   € Ø! D×$@Ò$@ÀÔAQÑ$RÔ$RÑRˆð	Ø ŸLšL¨¬Ñ5Ô5‰MˆE�6�6øÝð 	ð 	ð 	Ø˜2�:ÐÐÐð	øøøàÐ(Ð( Ð(Ð(­%°©-¬-Ð7Ð7s   Ÿ= ½AÁAc                 ó¦  — | j         r2| j        j        j        s| j        s|                      | j        ¦  «        S | j                             ¦   «         }t          |_	        | 
                    ¦   «          | j        j        j        j        }|                     | j                             ¦   «         ¦  «        g|_        t          | j        j        ¦  «        }| j        j        j        sC|                     | j        ¬¦  «                             ¦   «         \  }}t)          d|z  |¦  «        }|                     d|¦  «         |                      |¦  «        S )úf
        Create the SQL for this query. Return the SQL string and list of
        parameters.
        rh  zSELECT * FROM (%s) subqueryÚpk__in)r³  r5   r|   Ú"delete_can_self_reference_subqueryr½  rÁ  r@   r$  r   r.   Úclear_select_clauserK   r™  r­  r�  rZ   rD   Úupdate_can_self_selectr  r6   r   Ú
add_filter)r+   Úinnerqr­  Úouterqr‡   rˆ   s         r/   r6   zSQLDeleteCompiler.as_sql¦  s+  € ð
 Ôð 	,ØŒOÔ$ÔGð	,àÔ8ð	,ð —<’< ¤
Ñ+Ô+Ð+Ø”×!Ò!Ñ#Ô#ˆÝ ˆÔØ×"Ò"Ñ$Ô$Ð$ØŒZÔÔ#Ô&ˆØŸš D¤J×$@Ò$@Ñ$BÔ$BÑCÔCÐDˆŒÝ�t”zÔ'Ñ(Ô(ˆØŒÔ'Ô>ð 	Ið !×-Ò-¸¼Ð-ÑIÔI×PÒPÑRÔR‰KˆC�ÝÐ9¸CÑ?ÀÑHÔHˆFØ×Ò˜( FÑ+Ô+Ð+Ø�|Š|˜FÑ#Ô#Ð#r0   N)
r7   r8   r9   r!   r³  Úclassmethodr¶  r½  rÁ  r6   r2   r0   r/   r¯  r¯  ƒ  s„   € € € € € ØðXð Xñ „_ðXð
 ð
ð 
ñ „[ð
ð ð
ð 
ñ „_ð
ð8ð 8ð 8ð$ð $ð $ð $ð $r0   r¯  c                   ó.   ‡ — e Zd Zd„ Zˆ fd„Zˆ fd„Zˆ xZS )ÚSQLUpdateCompilerc           
      óÒ  — |                       ¦   «          | j        j        sdS | j        }g g }}| j        j        D �]	\  }}}t	          |d¦  «        rŽ|                     | j        dd¬¦  «        }|j        rt          d|j        ›d|›d�¦  «        ‚|j	        rt          d	|j        ›d|›d�¦  «        ‚t          |t          ¦  «        rt          d
|j        z  ¦  «        ‚nPt	          |d¦  «        r@|j        r|                     |¦  «        }n#t          d|›d|›d|j        j        ›d�¦  «        ‚|                     || j        ¬¦  «        }t	          |d¦  «        r|                     || | j        ¦  «        }nd}|j        }t	          |d¦  «        rU|                      |¦  «        \  }	}
|                      ||¦  «        ›d||	z  ›�¦  «         |                     |
¦  «         �Œ¬|�:|                      ||¦  «        ›d|›�¦  «         |                     |¦  «         �Œè|                     d ||¦  «        z  ¦  «         �Œ| j        j        }d ||¦  «        z  d                     |¦  «        g}	 |                      | j        j        ¦  «        \  }}
|                     d|z  ¦  «         n# t6          $ r g }
Y nw xY wd                     |¦  «        t9          ||
z   ¦  «        fS )rÃ  )rR  r2   rÂ   FTrb  rd  re  rf  rg  zNComposite primary keys expressions are not allowed in this query (%s=F('pk')).Úprepare_database_savezTried to update field z with a model instance, z. Use a value compatible with rÆ   rh  r_  r]  r6   z = Nz	%s = NULLzUPDATE %s SETrA  rX  r[  )rm   r@   rC  rÙ   rs   rÂ   rk  r   rÑ   rl  ru   r   rà  rÏ  Ú	TypeErrorr.   r7   rm  r5   r_  rì   r~   rw   ry   r¿  r  rb   r   r}  )r+   r‰  rC  Úupdate_paramsrß   rK   rM  ÚplaceholderrÑ   r‡   rˆ   rä   r‹   rb   s                 r/   r6   zSQLUpdateCompiler.as_sqlÀ  su  € ð
 	×ÒÑÔÐØŒzÔ ð 	Ø�6ØÔ)ˆØ " B�ˆØ!%¤Ô!2ð -	6ñ -	6ÑˆE�5˜#Ý�sÐ0Ñ1Ô1ð Ø×,Ò,Ø”J¨E¸Dð -ñ ô �ð Ô)ð Ý$˜*à&+¤j j j°#°#°#ð7ñô ð ð Ô+ð Ý$˜*à&+¤j j j°#°#°#ð7ñô ð õ ˜c¥8Ñ,Ô,ð Ý$ð6Ø8=¼
ñCñô ð ðõ
 ˜Ð5Ñ6Ô6ð ØÔ%ð Ø×3Ò3°EÑ:Ô:�C�Cå#˜)ð !˜5˜5 # # # u¤Ô'?Ð'?Ð'?ðAñô ð ð
 ×(Ò(¨¸¼Ð(ÑIÔIˆCõ �uÐ/Ñ0Ô0ð #Ø#×3Ò3°C¸¸t¼ÑOÔO��à"�Ø”<ˆDÝ�s˜HÑ%Ô%ð 6Ø"Ÿlšl¨3Ñ/Ô/‘��VØ—’¨2¨2¨d©8¬8¨8¨8°[À3Ñ5FÐ5FÐGÑHÔHÐHØ×$Ò$ VÑ,Ô,Ð,Ñ,Ø�Ø—’¨2¨2¨d©8¬8¨8¨8°[°[ÐAÑBÔBÐBØ×$Ò$ SÑ)Ô)Ð)Ñ)à—’˜k¨B¨B¨t©H¬HÑ4Ñ5Ô5Ð5Ñ5Ø”
Ô%ˆà˜b˜b ™iœiÑ'Ø�IŠI�fÑÔð
ˆð	.Ø ŸLšL¨¬Ô)9Ñ:Ô:‰MˆE�6ð �MŠM˜* uÑ,Ñ-Ô-Ð-Ð-øõ ð 	ð 	ð 	ØˆFˆFˆFð	øøøð �xŠx˜ÑÔ¥ }°vÑ'=Ñ!>Ô!>Ð>Ð>s   É5"J0 Ê0J?Ê>J?c                 óü   •— t          ¦   «                              |¦  «        }|du }|pd}| j                             ¦   «         D ]7}|                     | j        ¦  «                             |¦  «        }|r|r|}d}Œ8|S )a  
        Execute the specified update. Return the number of rows affected by
        the primary update query. The "primary update query" is the first
        non-empty query that is executed. Row counts for any subsequent,
        related queries are not available.
        Nr   F)r)   r:  r@   Úget_related_updatesr  rA   )r+   rL  Ú	row_countÚis_emptyr@   Úaux_row_countr.   s         €r/   r:  zSQLUpdateCompiler.execute_sql  s‘   ø€ õ ‘G”G×'Ò'¨Ñ4Ô4ˆ	Ø Ð$ˆØ�N ˆ	à”Z×3Ò3Ñ5Ô5ð 	!ð 	!ˆEà!×.Ò.¨t¬zÑ:Ô:×FÒFÀ{ÑSÔSˆMØð !˜Mð !ð *�	Ø �øØÐr0   c                 óÚ  •‡‡— | j         j                             ¦   «         }| j                              ¦   «          | j                              ¦   «         }| j         j        s|dk    rdS | j                              t          ¬¦  «        }d|_        | 	                    d¬¦  «         i |_
        g |_        |                     ¦   «         }|j        j        g}g }| j         j        D ]Ž}t          d„ |                     |¦  «        D ¦   «         ¦  «        r|                     |df¦  «         ŒF|                     |t%          |¦  «        f¦  «         |                     |j        j        j        ¦  «         Œ�|                     |¦  «         t+          ¦   «                              ¦   «          |j        Š|dk    o| j        j        j         }| j                              ¦   «          | j         j        s|rÊg }	t9          j        t<          ¦  «        }
|                     | j         ¦  «         !                    tD          ¦  «        D ]T}ˆfd	„|D ¦   «         }|	 #                    |¦  «         |D ],\  }Š|
|          #                    ˆfd
„|D ¦   «         ¦  «         Œ-ŒU| j          $                    d|	¦  «         |
| j         _%        n| j          $                    d|¦  «         | j          &                    |¦  «         dS )aO  
        If the update depends on results from other tables, munge the "where"
        conditions to match the format required for (portable) SQL updates.

        If multiple updates are required, pull out the id values to update at
        this point so that they don't change as a result of the progressive
        updates.
        ro   N)ÚklassFT)Úforcec              3   ó.   K  — | ]}|j         j        V — Œd S r'   )Ú
join_fieldr’   )rS   r§  s     r/   rU   z2SQLUpdateCompiler.pre_sql_setup.<locals>.<genexpr>2  s8   è è € ð ð Ø04�”Ô+ðð ð ð ð ð r0   r   c                 ó(   •— g | ]}‰r|n|d          ‘ŒS r  r2   )rS   r(  Úis_composite_pks     €r/   rœ   z3SQLUpdateCompiler.pre_sql_setup.<locals>.<listcomp>P  s&   ø€ ÐJÐJÐJ¸c˜oÐ9�s�s°3°q´6ÐJÐJÐJr0   c              3   ó(   •K  — | ]}|‰         V — Œd S r'   r2   )rS   r  rº   s     €r/   rU   z2SQLUpdateCompiler.pre_sql_setup.<locals>.<genexpr>S  s'   øè è € Ð.FÐ.F¸A¨q°¬xÐ.FÐ.FÐ.FÐ.FÐ.FÐ.Fr0   rÄ  )'r@   rR   rÏ   rZ   Úcount_active_tablesÚrelated_updatesr   r   rµ   Úclear_orderingrÚ   rD   rÊ   r­  rÑ   rX   Úget_path_to_parentrw   r\   r™  Ú
add_fieldsr)   rm   rÞ  r5   r|   rÇ  Úclear_wherer  Údefaultdictr±   r  rA   r:  r   ry   rÈ  Úrelated_idsr~  )r+   r  Úcountr@   rÜ   rÌ  Úrelated_ids_indexÚrelatedÚmust_pre_selectÚidentsrç  r'  r›   Úparentrº   rÞ  r.   s                 @@€r/   rm   zSQLUpdateCompiler.pre_sql_setup  s  øøø€ ð  œ:Ô4×9Ò9Ñ;Ô;ÐàŒ
×$Ò$Ñ&Ô&Ð&Ø”
×.Ò.Ñ0Ô0ˆØŒzÔ)ð 	¨e°qªj¨jØˆFØ”
× Ò ¥uÐ Ñ-Ô-ˆØ$ˆÔØ×Ò 4ÐÑ(Ô(Ð(ØˆŒØˆŒØ�~Š~ÑÔˆØ”'”,�ˆØÐØ”zÔ1ð 	5ð 	5ˆGÝð ð Ø8<×8OÒ8OÐPWÑ8XÔ8Xðñ ô ñ ô ð 5ð
 "×(Ò(¨'°1¨Ñ6Ô6Ð6Ð6ð
 "×(Ò(¨'µ3°v±;´;Ð)?Ñ@Ô@Ð@Ø—’˜gœmÔ.Ô3Ñ4Ô4Ð4Ð4Ø×Ò˜Ñ Ô Ð Ý‰Œ×ÒÑÔÐàÔ.ˆà�AŠIÐM˜dœoÔ6ÔMÐMð 	ð 	Œ
×ÒÑ Ô Ð ØŒ:Ô%ð 	3¨ð 	3ð ˆFÝ%Ô1µ$Ñ7Ô7ˆKØ×*Ò*¨4¬:Ñ6Ô6×BÒBÅ5ÑIÔIð Gð G�ØJÐJÐJÐJÀTÐJÑJÔJ�Ø—’˜cÑ"Ô"Ð"Ø%6ð Gð G‘M�F˜EØ Ô'×.Ò.Ð.FÐ.FÐ.FÐ.FÀÐ.FÑ.FÔ.FÑFÔFÐFÐFðGàŒJ×!Ò! (¨FÑ3Ô3Ð3Ø%0ˆDŒJÔ"Ð"ð ŒJ×!Ò! (¨EÑ2Ô2Ð2ØŒ
×"Ò"Ð#3Ñ4Ô4Ð4Ð4Ð4r0   )r7   r8   r9   r6   r:  rm   r:   r;   s   @r/   rÍ  rÍ  ¿  sd   ø€ € € € € ðC?ð C?ð C?ðJð ð ð ð ð*?5ð ?5ð ?5ð ?5ð ?5ð ?5ð ?5ð ?5ð ?5r0   rÍ  c                   ó   — e Zd Zd„ ZdS )ÚSQLAggregateCompilerc                 ó0  — g g }}| j         j                             ¦   «         D ]^}|                      |¦  «        \  }}|                     | ||¦  «        \  }}|                     |¦  «         |                     |¦  «         Œ_t          | j         j        ¦  «        | _        d 	                    |¦  «        }t          |¦  «        }| j         j                             | j        | j        ¬¦  «                             d¬¦  «        \  }}d|›d|›d�}||z  }||fS )rÃ  rA  )rB   TrV   rY  rZ  r\  )r@   r°   rC  r~   r€   rw   ry   r\   r]   r  r}  r2  r  rA   rB   r6   )r+   r‡   rˆ   Ú
annotationÚann_sqlÚ
ann_paramsÚinner_query_sqlÚinner_query_paramss           r/   r6   zSQLAggregateCompiler.as_sql]  s$  € ð
 ˜"ˆVˆØœ*Ô6×=Ò=Ñ?Ô?ð 	&ð 	&ˆJØ"&§,¢,¨zÑ":Ô":ÑˆG�ZØ",×":Ò":¸4ÀÈ*Ñ"UÔ"UÑˆG�ZØ�JŠJ�wÑÔÐØ�MŠM˜*Ñ%Ô%Ð%Ð%Ý˜TœZÔ9Ñ:Ô:ˆŒØ�iŠi˜‰nŒnˆÝ�v‘”ˆà.2¬jÔ.D×.QÒ.QØŒJØÔ(ð /Rñ /
ô /
÷ Š& $ˆ&Ñ
'Ô
'ñ 	,ˆÐ+Ð+ð 14°°°_°_°_ÐEˆØÐ$Ñ$ˆØ�Fˆ{Ðr0   N)r7   r8   r9   r6   r2   r0   r/   rï  rï  \  s#   € € € € € ðð ð ð ð r0   rï  c              #   óÄ   ‡ ‡‡K  — 	 t          ˆ ˆfd„|¦  «        D ]}‰€|nˆfd„|D ¦   «         V — Œ	 ‰                      ¦   «          dS # ‰                      ¦   «          w xY w)z[
    Yield blocks of rows from a cursor and ensure the cursor is closed when
    done.
    c                  ó.   •— ‰                       ‰¦  «        S r'   )Ú	fetchmany)rC  Úitersizes   €€r/   r×  zcursor_iter.<locals>.<lambda>{  s   ø€  &×"2Ò"2°8Ñ"<Ô"<€ r0   Nc                 ó$   •— g | ]}|d ‰…         ‘ŒS r'   r2   )rS   r  r]   s     €r/   rœ   zcursor_iter.<locals>.<listcomp>|  s!   ø€ Ð1NÐ1NÐ1NÀA°!°J°Y°J´-Ð1NÐ1NÐ1Nr0   )rA  rF  )rC  Úsentinelr]   rù  r'  s   ` `` r/   rI  rI  u  sŽ   øøøè è € ð
ÝÐ<Ð<Ð<Ð<Ð<¸xÑHÔHð 	Oð 	OˆDØ#Ð+�$�$Ð1NÐ1NÐ1NÐ1NÈÐ1NÑ1NÔ1NÐNÐNÐNÐNð	Oð 	�Š‰Œˆˆˆøˆ�Š‰Œˆˆøøøs   ‡+A	 Á	A);r  rO  rW  Ú	functoolsr   Ú	itertoolsr   Údjango.core.exceptionsr   r   r   Ú	django.dbr   r	   Údjango.db.models.constantsr
   Údjango.db.models.expressionsr   r   r   r   r   r   Údjango.db.models.fieldsr   r   Údjango.db.models.functionsr   r   Údjango.db.models.lookupsr   Údjango.db.models.query_utilsr   Údjango.db.models.sql.constantsr   r   r   r   r   r   r   Údjango.db.models.sql.queryr   r   Údjango.db.transactionr    Údjango.utils.functionalr!   Údjango.utils.hashabler"   Údjango.utils.regex_helperr#   r%   r=   r[  r¯  rÍ  rï  rI  r2   r0   r/   ú<module>r     sþ  ðØ Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø +Ð +Ð +Ð +Ð +Ð +Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø /Ð /Ð /Ð /Ð /Ð /Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð%ð %ð %ð %ð %�#ñ %ô %ð %ðc ð c ð c ð c ð c ñ c ô c ð c ðL3rð rð rð rð r˜ñ rô rð rðj9$ð 9$ð 9$ð 9$ð 9$˜ñ 9$ô 9$ð 9$ðxZ5ð Z5ð Z5ð Z5ð Z5˜ñ Z5ô Z5ð Z5ðzð ð ð ð ˜;ñ ô ð ð2	ð 	ð 	ð 	ð 	r0   